Я регулярно работаю на разных хостах, используя ssh, и иногда меня смущает, на каком компьютере я запускаю команды. Я иногда приближался к выдаче команд halt(8) на неправильный хост.

В идеале я хотел бы раскрасить верхнюю ленту окна терминала в зависимости от того, на каком хосте я в данный момент вошел. Я использую Openbox и gnome-терминал, но рассмотрю возможность переключения на любой эмулятор терминала, который делает подобные вещи легкими или, по крайней мере, возможными.

Кто-нибудь знает способ сделать это? Я не боюсь делать какую-то работу сам, если вы можете указать мне на способ программно изменить цвета окна.

1 ответ1

0

под "цветами окна" вы подразумеваете цвет границы окна? если это так, скажите своему оконному менеджеру установить цвет границы окна, основываясь на заголовке окна, так как большинство из них имеют шаблон user@host: /path . для него было бы легко проверить, является ли это Терминалом по его классу окна, а затем проанализировать заголовок при его изменении и обновить используемый цвет. но я не знаю вовлеченных потоков, поэтому я не знаю, сколько работы.

но это возможно.

(я не знаю, может ли openbox сделать это, но подумав об этом, это более простой способ сделать это)

Обновить:

посмотрев исходный код в openbox, я думаю, что я исправлю функцию framerender_frame в openbox/framerender.c чтобы, если окно является терминалом, в зависимости от хоста в заголовке, вместо глобальной ob_rr_theme используется другая тема, которая имеет цвета, которые вы хотите для этого окна в нем.

[в контексте framerender_frame окна может быть self->client->title ]

для этого потребуется изменить framerender_frame чтобы он ссылался на глобальный ob_rr_theme через локальную theme и потребовал написания кода для загрузки карты host:theme и дополнительных тем.

в псевдокоде (т.е. это не будет работать):

RrTheme* theme = ob_rr_theme;
if "gnome-terminal" equals self->client->class: # for example only
    host = parse_title(self->client->title)
    theme = lookup host in by_host if not found use theme
# and then in the rest of framerender_frame use theme instead of ob_rr_theme

где by_host сопоставляет строки хоста с темами RrTheme

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