如何在每次启动时更改 GNOME 终端的颜色?

如何在每次启动时更改 GNOME 终端的颜色?

我听说过一个脚本,每次启动时都会改变 GNOME 终端的颜色。我不记得在哪里看到过这个...

答案1

我还没有看过你提到的脚本。但我认为可以创建这样的脚本。

Gnome 终端从正在使用的配置文件中选取背景颜色,因此任何更改都会影响使用相同配置文件的所有终端的背景颜色。

也就是说,配置密钥存储在/应用程序/gnome-terminal/profiles/Default/background_color, 在哪里默认是当前使用的配置文件。

可以这样设置:

gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "#E376DDDDFFFF"

因此,我猜测可以编写一个脚本来克隆默认动态配置文件,更改它的背景颜色,调用gnome 终端使用此配置文件,并在退出前删除配置文件。您还需要一个包含良好前景/背景颜色组合的数据库,供此脚本使用。


更新:以下是执行上述操作的脚本。它不会生成随机背景颜色,您必须使用某个列表来生成背景颜色。

#!/bin/bash 

PROFILE_NAME=${RANDOM}_p_${RANDOM}
TMP_DIR=/tmp
DEFAULT_PROFILE=Default
PROFILE_EXPORT_FILE=${TMP_DIR}/${PROFILE_NAME}.xml

#replace with program to generate a random background color
BACKGROUND_COLOR="#0000AA000"

# dump the "Default" profile, replace with new random profile name
gconftool-2 --dump /apps/gnome-terminal/profiles/${DEFAULT_PROFILE} > ${PROFILE_EXPORT_FILE}
sed -i "s/${DEFAULT_PROFILE}/${PROFILE_NAME}/g" ${PROFILE_EXPORT_FILE}

# load the new random profile, change the background color
gconftool-2 --load ${PROFILE_EXPORT_FILE}
gconftool-2 --set "/apps/gnome-terminal/profiles/${PROFILE_NAME}/background_color" --type string "${BACKGROUND_COLOR}"

# add the new random profile to list of profiles
PROFILE_LIST=`gconftool-2 --get /apps/gnome-terminal/global/profile_list`
NEW_PROFILE_LIST=`echo $PROFILE_LIST | sed "s/]/,${PROFILE_NAME}]/g"`
gconftool-2 --set  /apps/gnome-terminal/global/profile_list --type list --list-type string "$NEW_PROFILE_LIST"
# start gnome-terminal with new random profile, such that the script blocks till terminal is closed.
gnome-terminal --window-with-profile=${PROFILE_NAME} --disable-factory

# cleanup: remove the new random profile, and remove it from list of profiles
gconftool-2 --recursive-unset /apps/gnome-terminal/profiles/${PROFILE_NAME}
PROFILE_LIST=`gconftool-2 --all-dirs /apps/gnome-terminal/profiles | sed "s/ \/apps\/gnome-terminal\/profiles\///" | sed -n -e 'H;${x;s/\n/,/g;s/^,//;p;}'`
gconftool-2 --set  /apps/gnome-terminal/global/profile_list --type list --list-type string '['"${PROFILE_LIST}"']'

相关内容