под "цветами окна" вы подразумеваете цвет границы окна? если это так, скажите своему оконному менеджеру установить цвет границы окна, основываясь на заголовке окна, так как большинство из них имеют шаблон 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