从bash脚本设置gnome终端背景/文本颜色


22

我想#002b36使用bash脚本在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来实现此目的。

在此处输入图片说明

Answers:


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。在第二种表示法中,对于RR,GG或BB而言,值的十六进制范围是00到FF。

提供这两种方法时,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-我正在寻找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-方法2对您有用吗?
slm

1
从Ubuntu 18.04开始,您现在必须sudo dconf whatever在发出命令时使用
Scott 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
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.