3

Я слышал о скрипте, который будет изменять цвета терминала GNOME при каждом его запуске. Я не могу вспомнить, где я видел это ...

1 ответ1

2

Я не видел сценарий, который вы упоминаете. Но я думаю, что возможно создать такой сценарий.

Терминал Gnome выбирает цвет фона из используемого профиля, поэтому любое изменение повлияет на цвет фона всех терминалов, использующих один и тот же профиль.

Тем не менее, ключ конфигурации хранится в /apps/gnome-Terminal / Profiles / Default / background_color, где Default - текущий используемый профиль.

Это может быть установлено таким образом:

gconftool-2 --set "/apps/gnome-терминал /profile /Default /background_color" --type string "# E376DDDDFFFF"

Итак, я предполагаю, что можно написать скрипт для клонирования профиля Default на лету, изменить его background_color, вызвать 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}"']'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .