1

У меня есть мечта: я хочу, чтобы у каждого виртуального терминала в GNU Screen был свой уникальный цвет фона.

Я думаю, что могу подделать его в скрипте .bashrc, который испускает управляющие коды xterm для установки цвета фона на основе переменной $ WINDOW - но это не сработает, если я начну не-bash процесс (т. Е. Если я запущу) скрин ви фу ").

Есть ли более умный способ изменения цвета фона при каждом переключении виртуальных терминалов?

1 ответ1

0

Я бы хотел оказаться ошибочным, но с терминалами vt100, которые эмулирует экран, не представляется возможным установить их цвет фона по умолчанию ; можно только через последовательность CSI изменить цвет фона на значение по умолчанию. Тем не менее, при условии, что ваш хост-терминал поддерживает его, можно отправить управляющую последовательность OSC, чтобы установить цвет фона по умолчанию. Следствие установки цвета фона с помощью этого метода означает, что изменения, внесенные в цвет фона в других окнах экрана, не сохраняются. Другими словами, если цвет фона хост-терминала изменяется в одном окне экрана, вы затем переключаетесь на другое окно и снова изменяете цвет фона по умолчанию, а при переключении обратно на исходное окно экрана вы видите самый последний цвет фона. менять.

В следующем примере .screenrc демонстрирует подтверждение концепции. Это работает для konsole, но не практично, поскольку требует, чтобы каждое окно всегда находилось в приглашении оболочки, в котором можно отправить правильную последовательность.

# start a few screen windows
screen 0
screen 1
screen 2
screen 3

# set up key bindings to set the host terminal bg color when you switch windows
# spawn the echo in a subshell to avoid displaying single quote/also need to quote the trailing backslash
bind 0 eval "select 0" "stuff \"(echo -n $'\eP\e]11;navy\cg\e\134\134\134\134') \012\""
bind 1 eval "select 1" "stuff \"(echo -n $'\eP\e]11;forestgreen\cg\e\134\134\134\134') \012\""
bind 2 eval "select 2" "stuff \"(echo -n $'\eP\e]11;slategray\cg\e\134\134\134\134') \012\""
bind 3 eval "select 3" "stuff \"(echo -n $'\eP\e]11;purple\cg\e\134\134\134\134') \012\""

# switch to the first window and set the background color to blue
eval "select 0" "stuff \"(echo -n $'\eP\e]11;navy\cg\e\134\134\134\134') \012\""

Для поддерживаемых цветов, пожалуйста, обратитесь к документации Qt

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