Bash 스크립트에서 그놈 터미널 배경/텍스트 색상 설정

Bash 스크립트에서 그놈 터미널 배경/텍스트 색상 설정

#002b36bash 스크립트를 사용하여 우분투 13에서 gnome 터미널의 배경() 및 전경색을 설정 하고 싶습니다 .

나는 시도했지만 gconftool성공하지 못했습니다.

GCONFTOOL-2(1)                  User Commands                                                    GCONFTOOL-2(1)

NAME
       gconftool-2 - GNOME configuration tool

gnome terminal버전은

$ gnome-terminal --version
GNOME Terminal 3.6.1

여기에 이미지 설명을 입력하세요.

현재 저는 이를 달성하기 위해 우분투 터미널 기본 설정 UI를 사용하고 있습니다.

여기에 이미지 설명을 입력하세요.

답변1

방법 #1 - dconf 사용

배경

dconf도구를 사용하여 이를 수행할 수 있지만 이는 다단계 프로세스입니다.

DESCRIPTION
       The dconf program can perform various operations on a dconf database, 
       such as reading or writing individual values or entire directories.
       This tool operates directly on the dconf database and does not read 
       gsettings schema information.Therefore, it cannot perform type and 
       consistency checks on values. The gsettings(1) utility is an 
       alternative if such checks are needed.

용법

$ dconf
error: no command specified

Usage:
  dconf COMMAND [ARGS...]

Commands:
  help              Show this information
  read              Read the value of a key
  list              List the contents of a dir
  write             Change the value of a key
  reset             Reset the value of a key or dir
  update            Update the system databases
  watch             Watch a path for changes
  dump              Dump an entire subpath to stdout
  load              Populate a subpath from stdin

Use 'dconf help COMMAND' to get detailed help.

일반적인 접근

  1. 먼저 프로필 목록을 가져와야 합니다 gnome-terminal.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
    
  2. 이를 사용하면 <profile id>구성 가능한 설정 목록을 얻을 수 있습니다

    $ dconf list /org/gnome/terminal/legacy/profiles:/<profile id>
    background-color
    default-size-columns
    use-theme-colors
    use-custom-default-size
    foreground-color
    use-system-font
    font
    
  3. 그런 다음 전경 또는 배경의 현재 색상을 읽을 수 있습니다.

    전망

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/foreground-color
    'rgb(255,255,255)'
    

    배경

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/background-color
    'rgb(0,0,0)'
    
  4. 색깔도 바꿀 수 있어요

    전망

    $ dconf write /org/gnome/terminal/legacy/profiles:/<profile id>/foreground-color "'rgb(255,255,255)'"
    

    배경

    $ dconf write /org/gnome/terminal/legacy/profiles:/<profile id>/background-color "'rgb(0,0,0)'"
    

  1. 내 프로필 ID 받기

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
    
  2. 프로필 ID를 사용하여 설정 목록 가져오기

    $ dconf list /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
    background-color
    default-size-columns
    use-theme-colors
    use-custom-default-size
    foreground-color
    use-system-font
    font
    
  3. 배경을 파란색으로 변경

    $ dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/background-color "'rgb(0,0,255)'"
    

              SS #1

색상에 대한 참고사항

rgb(R,G,B)색상이나 해시 표현을 지정할 때 표현을 사용할 수 있습니다 #RRGGBB. 두 기호 모두에서 매개변수는 빨간색, 녹색, 파란색입니다. 첫 번째 표기법의 값은 0~255 범위의 정수입니다(R, G 또는 B를 나타냄). 두 번째 표현에서 값은 16진수이며 범위는 00부터 FF(RR, GG 또는 BB를 나타냄)입니다.

이들 중 하나를 제공할 때 dconf큰따옴표로 적절하게 묶어야 하며 그 안에 작은따옴표가 중첩되어야 합니다. 그렇지 않으면 dconf불만이 제기됩니다.

  • "'rgb(0,0,0)'"
  • "'#FFFFFF'"
  • 등.

방법 #2 - gconftool-2 사용

내 Ubuntu 12.04 시스템에서는 아래와 같이 명령줄을 통해 색상을 변경할 수 있습니다.

노트:이러한 옵션은 최종적으로 이 파일에 저장됩니다 $HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml.

일반적인 접근

  1. gnome-terminal먼저 프로필 트리를 가져와야 합니다 .

    $ gconftool-2 --get /apps/gnome-terminal/global/profile_list
    [Default]
    
  2. 결과 트리를 사용하여 구성 가능한 속성을 찾을 수 있습니다.

    $ gconftool-2 -a "/apps/gnome-terminal/profiles/Default" | grep color
     bold_color_same_as_fg = true
     bold_color = #000000000000
     background_color = #FFFFFFFFFFFF
     foreground_color = #000000000000
     use_theme_colors = false
    
  3. 가져오기/설정 background_colorforeground_color속성

    $ gconftool-2 --get "/apps/gnome-terminal/profiles/Default/foreground_color"
    #000000000000
    
    $ gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "#000000FFFFFF"    
    
  4. 확인하다

    $ gconftool-2 -R /apps/gnome-terminal/profiles/Default | grep color
     bold_color_same_as_fg = true
     bold_color = #000000000000
     background_color = #000000FFFFFF
     foreground_color = #000000000000
     use_theme_colors = true
    

인용하다

답변2

다른 스레드의 Github 코드를 기반으로 일부 기능을 만들었습니다. 이러한 기능을 파일에 넣을 수 있습니다 ~/.bashrc. 보시다시피, 전화를 하면 다음과 같이 됩니다 create_random_profile.

  1. 이전에 생성한 임의의 프로필을 확인하고 삭제합니다.
  2. gnome 터미널에 무작위로 이름이 지정된 구성 파일이 생성됩니다.
  3. 사전 정의된 함수에서 색상을 변경하는 데 사용할 수 있는 환경 변수에 해당 이름을 설정합니다. 마지막 기능을 참조하세요 setcolord.

이는 다양한 색상의 터미널이 많을 때 유용합니다. 또한 사전 정의된 기능을 통해 이러한 색상을 즉시 변경할 수 있습니다.

function create_random_profile() {
    #delete previous profiles in case there were something
    #delete_one_random_profile
    prof="`mktemp -u HACK_PROFILE_XXXXXXXXXX`"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$prof/use_theme_colors" --type bool false
    gconftool-2 --type list --list-type string --set $prof_list "`gconftool-2 --get $prof_list | sed "s/]/,$prof]/"`"
    file="`mktemp`"
    gconftool-2 --dump "/apps/gnome-terminal/profiles/Default" | sed "s,profiles/$2,profiles/$prof,g" > "$file"
    gconftool-2 --load "$file"
    gconftool-2 --type string --set "/apps/gnome-terminal/profiles/$prof/visible_name" "$prof"
    rm -f -- "$file"
    export __TERM_PROF=$prof
}

function delete_one_random_profile() {
    regular="HACK_PROFILE_"
    prof=$(gconftool-2 --get /apps/gnome-terminal/global/profile_list | sed -n "s/.*\(HACK_PROFILE_..........\).*/\1/p")
    if [ ! -z "$prof"]; then
        echo "size ${#prof}"
        echo "size of regular ${#regular}"
        echo "DO DELETE of $prof"
        #if not empty
        gconftool-2 --type list --list-type string --set $prof_list "`gconftool-2 --get $prof_list | sed "s/$prof//;s/\[,/[/;s/,,/,/;s/,]/]/"`"
        gconftool-2 --unset "/apps/gnome-terminal/profiles/$prof"
    else
        echo "NOTHING TO DELETE"
    fi
}

function setcolord() {
    echo "Dont forget to change to Profile0 in the menu of your terminal->Change Profile->Profile_0"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/background_color" --type string white
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/foreground_color" --type string black
}

function setcolor_cyan() {
    echo "Dont forget to change to $__TERM_PROF in the menu of your terminal->Change Profile->Profile_0"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/background_color" --type string "#8DCBCC"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/foreground_color" --type string black
}

답변3

Gogh 테마 선택기에는 Gnome 터미널 환경 설정에 테마를 추가하는 여러 스크립트가 있습니다. 가장 간단한 것은 보는 것입니다.다른 질문에 대한 내 대답고흐를 활용하세요.

하지만 원본 스크립트를 보고 싶다면 대략 이렇습니다.

색상에 사용되는 기본 bash 변수를 볼 수 있습니다.https://github.com/Gogh-Co/Gogh/blob/master/themes/solarized-light.sh:

export COLOR_01="#073642"           # HOST
export COLOR_02="#DC322F"           # SYNTAX_STRING
export COLOR_03="#859900"           # COMMAND
export COLOR_04="#B58900"           # COMMAND_COLOR2
export COLOR_05="#268BD2"           # PATH
export COLOR_06="#D33682"           # SYNTAX_VAR
export COLOR_07="#2AA198"           # PROMP
export COLOR_08="#EEE8D5"           #

export COLOR_09="#002B36"           #
export COLOR_10="#CB4B16"           # COMMAND_ERROR
export COLOR_11="#586E75"           # EXEC
export COLOR_12="#657B83"           #
export COLOR_13="#839496"           # FOLDER
export COLOR_14="#6C71C4"           #
export COLOR_15="#93A1A1"           #
export COLOR_16="#FDF6E3"           #

export BACKGROUND_COLOR="#FDF6E3"   # Background Color
export FOREGROUND_COLOR="#657B83"   # Text
BOLD_COLOR="#586E75"         # Bold
export CURSOR_COLOR="$FOREGROUND_COLOR" # Cursor
export PROFILE_NAME="Solarized Light"

그런 다음 이 매개변수를 사용하세요.https://github.com/Gogh-Co/Gogh/blob/master/apply-colors.sh. 그것은 것 같다그 핵심:

set_theme() {
  dset visible-name                    "'${PROFILE_NAME}'"
  dset background-color                "'${BACKGROUND_COLOR}'"
  dset foreground-color                "'${FOREGROUND_COLOR}'"
  dset cursor-colors-set               "true"
  dset cursor-background-color         "'${CURSOR_COLOR}'"
  dset cursor-foreground-color         "'${BACKGROUND_COLOR}'"

  if [[ -n "${HIGHLIGHT_BG_COLOR:-}" ]]; then
    dset   highlight-colors-set        "true"
    dset   highlight-background-color  "'${HIGHLIGHT_BG_COLOR}'"
    if [[ -n "${HIGHLIGHT_FG_COLOR:-}" ]]; then
      dset   highlight-foreground-color  "'${HIGHLIGHT_FG_COLOR}'"
    fi
  fi

  if [[ -n "${BOLD_COLOR:-}" ]]; then
    dset   bold-color                  "'${BOLD_COLOR}'"
    dset   bold-color-same-as-fg       "false"
  else
    dset   bold-color                  "'${FOREGROUND_COLOR}'"
    dset   bold-color-same-as-fg       "true"
  fi
  dset     use-theme-colors            "false"
  dset     use-theme-background        "false"
  dset     use-theme-transparency      "${USE_SYS_TRANSPARENCY:-false}"
}

관련 정보