Torna a cor do texto do terminal diferente quando na sessão ssh

5

Existe uma maneira de fazer com que meu terminal (konsole) exiba cores de texto diferentes quando estou em uma sessão ssh SEM modificar a configuração de cores do host remoto? Como, talvez alternando automaticamente para um perfil diferente?

O Konsole pode usar esses diferentes "perfis"

Eu quero basicamente mudar para um perfil diferente quando em uma sessão ssh. De modo que, em vez de o padrão ser verde em preto, mude para preto em branco ou algo assim.

Não precisa necessariamente usar essa configuração de perfil. Mas se xterm ou algo tem uma configuração para fazer isso, isso também funcionaria.

A ideia é trabalhar em QUALQUER sessão ssh, não apenas sessões particulares com máquinas específicas.

    
por Falmarri 27.10.2010 / 02:41

3 respostas

3

Uma possibilidade, se o terminal suportar, é usar a sequência de escape Change Color do terminal. Aparentemente, o konsole não suporta isso. Do documento de sequência de controle do Xterm ( ctlseqs ):

OSC Ps ; Pt BEL

Ps = 4 ; c ; spec -> Change Color Number c to the color specified by spec, i.e., a name or RGB specification as per XParseColor. Any number of c name pairs may be given. The color numbers correspond to the ANSI colors 0-7, their bright versions 8-15, and if supported, the remainder of the 88-color or 256-color table.

O que isto significa é que a seqüência de controle \e]4;NUMBER;VALUE\a mudará a aparência da cor NUMBER . NUMBER é um número de cor (0–7 para as oito cores básicas, 8–15 para as versões brilhantes e muito mais se o terminal suportar mais cores). O VALUE é algo que XParseColor entende, como como uma especificação RGB #123456 ou um X nome da cor (procure por rgb.txt em sua máquina ou use xcolors para ver as possibilidades).

Por exemplo, o comando a seguir altera a cor azul básica (cor 4) e sua variante brilhante (4 + 8) para conter um pouco de verde:

printf '3]4;4;#004080;12;#0040ff
printf '3]4;4;#004080;12;#0040ff%pre%7'
7'

Observe que isso altera todos os caracteres exibidos atualmente nessa cor específica na janela. Não há como alterar o significado de uma cor apenas para caracteres exibidos posteriormente; se é isso que você quer, você terá que configurar cada programa exibido dentro do terminal para usar números de cores diferentes ao falar com o terminal.

Acontecer exatamente quando você está digitando em uma sessão ssh será muito complicado, mas lidar com casos comuns é razoavelmente simples: use um wrapper em torno de ssh que mude a paleta de cores, então rode ssh e finalmente mude a cor paleta de volta. Exemplos de casos que isso não irá resolver estão suspendendo o processo ssh e rodando o ssh dentro da tela ou do tmux.

    
por 27.10.2010 / 03:29
0

O Konsole tem um lugar em uma de suas guias de configurações ao longo das linhas de "Executar um comando personalizado em vez do meu shell"?

Se assim for, você pode fazer o seguinte (isto é o que eu configurei para o meu Gnome-Terminal, você pode ter que ajustar um pouco para o Konsole; terei prazer em atualizar se houver diferenças com o Konsole):

  1. Crie um perfil com o esquema de cores desejado.
  2. Marque a caixa "executar um comando personalizado".
  3. Coloque em ssh [remote host alias] na caixa de texto "comando personalizado"
    • Se você quiser que ele aja como um terminal local e feche a guia quando digitar exit , selecione "Quando o comando sair: Sair do terminal" (ou seu equivalente)

Com essa configuração, você pode simplesmente abrir uma nova guia com o perfil selecionado e ela se conectará automaticamente à sua sessão SSH e terá o esquema de cores desejado.

Isso, no entanto, tem a desvantagem de não funcionar para qualquer conexão SSH (como descrito acima, você precisa configurar um perfil para cada conexão SSH, embora provavelmente você possa escrever um script que permita a você insira no host remoto quando você abrir esse perfil) e você terá que abrir o perfil especificamente, a menos que você o defina como seu perfil padrão.

    
por 11.09.2012 / 16:25
0

A sequência para alterar as cores de fundo e de primeiro plano em xterm (e alguns outros emuladores de terminal X11) são ]11;black e ]10;green . E há um comando xtermcontrol que facilita:

xtermcontrol --bg black --fg green

Assim você pode redefinir seu comando ssh como:

ssh() {
  [ -t 2 ] && xtermcontrol --bg black --fg green
  command ssh "$@"
  [ -t 2 ] && xtermcontrol --bg white --fg black
}
    
por 11.09.2012 / 20:53