Janelas de terminal com código de cores por host

Janelas de terminal com código de cores por host

Trabalho regularmente em hosts diferentes usando ssh e às vezes fico confuso sobre em qual computador estou executando comandos. Ocasionalmente, cheguei perto de emitir comandos halt(8) para o host errado.

Idealmente, eu gostaria de codificar por cores a faixa superior da janela do terminal com base no host em que estou conectado no momento. Eu uso o Openbox e o gnome-terminal, mas consideraria mudar para qualquer emulador de terminal que torne esse tipo de coisa fácil ou pelo menos possível.

Alguém sabe uma maneira de fazer isso? Não tenho medo de fazer algum trabalho sozinho se você puder me indicar como alterar programaticamente as cores das janelas.

Responder1

por "cores da janela", você quer dizer a cor da borda da janela? em caso afirmativo, diga ao seu gerenciador de janelas para definir a cor da borda da janela com base no título da janela, pois a maioria tem um padrão de user@host: /path. seria fácil verificar se este é um Terminal por sua classe de janela e então analisar o título quando ele mudar e atualizar a cor usada. mas não conheço os fluxos envolvidos, então não sei quanto trabalho.

mas isso é possível.

(não sei se o openbox poderia fazer isso, mas depois de pensar sobre isso, esta é a maneira mais fácil de fazer)

Atualizar:

depois de olhar o código-fonte do openbox, acho que corrigir a framerender_framefunção para openbox/framerender.cque, se a janela for um Terminal, dependendo do host no título, um tema diferente seja usado em vez do global ob_rr_theme, aquele que tenha as cores que você deseja para aquela janela em isto.

[no contexto de framerender_frame, o título da janela pode ser self->client->title]

fazer isso exigiria uma mudança framerender_framepara que se referisse ao global ob_rr_themepor meio de um local themee exigiria escrever código para carregar o host: mapa do tema e os temas adicionais

em pseudocódigo (ou seja, isso não será executado):

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

onde by_hostmapeia strings de host para RrThemetemas

informação relacionada