BashスクリプトでGNOME端末の背景/テキストの色を設定する

BashスクリプトでGNOME端末の背景/テキストの色を設定する

#002b36bashスクリプトを使用してUbuntu 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

ここに画像の説明を入力してください。

現在、私はこれを達成するためにUbuntu Terminal Preferences 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を表します)。 2番目の表現では、値は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}"
}

関連情報