bashスクリプトからgnome端末の背景/テキストの色を設定


22

#002b36bashスクリプトを使用して、ubuntu 13でgnome端末のbackground()と前景色を設定したいと思います。

試しまし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端末設定UIを使用しています。

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

回答:


20

方法#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。両方の表記では、引数は赤、緑、青です。最初の表記の値は、R、G、またはBの0〜255の範囲の整数です。2番目の表記の値は、RR、GG、またはBBの00〜FFの16進数です。

これらのいずれかを提供するとき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

参照資料


3
この素晴らしい答えに感謝します。しかし、私の端子が上何のプロファイルを与えなかったdconf list /org/gnome/terminal/legacy/profiles:/
prayagupd

@PrayagUpd-Ubuntu 12.04のインストールを見ていますが、gnome-terminalはデフォルトではないようです。Debian Xターミナルエミュレーターがdefです。[ユーティリティ]タブで、このコマンドを使用してチェックできますexo-preferred-applications。詳細はこちら:askubuntu.com/questions/356842/…。これを確認できますか?上記はFedora 19 GNOME 3.10インストールで行われました。
slm

はい、Debian X terminal emulatorのデフォルトでしたが、動作しない13.04ように変更しましgnome terminalた。
prayagupd

@PrayagUpd-方法#2はあなたに合っていますか?
slm

1
Ubuntuの18.04のようになりました使用しなければならないsudo dconf whateverコマンドを発行するとき
スコットStenslandを

0

他のスレッドの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
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.