我想#002b36
使用 bash 脚本在 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 终端首选项 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.
一般的做法
首先,您需要获取您的
gnome-terminal
个人资料列表。$ dconf list /org/gnome/terminal/legacy/profiles:/ <profile id>
使用它
<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
然后您可以读取前景或背景的当前颜色
前景
$ 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)'
您也可以更改颜色
前景
$ 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)'"
例子
获取我的个人资料 ID
$ dconf list /org/gnome/terminal/legacy/profiles:/ :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
使用配置文件 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
将背景更改为蓝色
$ dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/background-color "'rgb(0,0,255)'"
关于颜色的注释
rgb(R,G,B)
您可以使用指定颜色时的表示法或散列表示法#RRGGBB
。在这两种符号中,参数都是红色、绿色和蓝色。第一种表示法中的值是 0-255 范围内的整数(代表 R、G 或 B)。在第二种表示法中,这些值是十六进制,范围是从 00 到 FF(代表 RR、GG 或 BB)。
当提供其中任何一个时,dconf
您需要将其正确地用双引号括起来,并在其中嵌套单引号。不然dconf
会投诉。
"'rgb(0,0,0)'"
"'#FFFFFF'"
- ETC。
方法 #2 - 使用 gconftool-2
在我的 Ubuntu 12.04 系统上,我可以通过命令行更改颜色,如下所示。
笔记:这些选项最终存储在该文件中$HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml
。
一般的做法
首先,您需要获取 的
gnome-terminal
个人资料树。$ gconftool-2 --get /apps/gnome-terminal/global/profile_list [Default]
使用生成的树,我们可以找出哪些属性是可配置的。
$ 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
获取/设置
background_color
&foreground_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"
确认
$ 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
:
- 它将检查并删除您之前创建的任何随机配置文件。
- 它将在 gnome 终端中创建一个随机名称配置文件。
- 它将在环境变量中设置该名称,您可以使用该环境变量来更改预定义函数中的颜色。请参阅最后一个函数
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 终端首选项中。最简单的就是看我对另一个问题的回答使用Gogh。
但是,如果您想查看原始脚本,这大致就是它的工作原理。
您可以看到它用于颜色的基本 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}"
}