Como exibir caracteres de escape na barra de status do tmux

2

Estou executando o tmux de um tty em um dispositivo Linux embutido. (NÃO é um emulador de terminal) porque a tela é pequena, eu quero adicionar alguns "ícones" à barra de status do tmux. Para conseguir isso, eu simplesmente criei uma fonte com os glifos apropriados para coisas como bateria ou wifi. Eu posso carregar a fonte e exibir os caracteres com chamadas que usam um escape para os caracteres de desenho de linha da seguinte forma:

echo -e "\xe4\xf"

\ xe me escapa para o modo de caractere de desenho de linha, \ 234 é meu caractere criado, e \ xf me retorna ao modo de caractere normal para que meu terminal não comece a ficar bobo.

isso funciona perfeitamente se eu digitar o comando no terminal se o tmux foi iniciado ou não. o problema surge se eu tentar usá-lo no meu arquivo ~ / .tmux.conf para a barra de status. Atualmente tenho uma linha como esta:

set -g status-right "#(echo -e "\xe4\xf") #(/script/to/output/powerlevel)

isso simplesmente gera

xe234xf powerlevel

isso é o mesmo se eu tentar printf over echo. esta é a saída que eu esperaria obter no terminal se eu fizesse a chamada sem passar -e para eco, ou sem incluir a declaração com aspas.

Decidi então encapsular as chamadas para o echo ou printf em um shell script. Novamente, o script funciona quando chamado do terminal, mas não na barra de status do tmux. agora eu recebo o caractere não imprimível " " em vez do meu ícone, assim:

� powerlevel

isto é o que eu esperaria se eu não usasse os escapes de desenho de linha mencionados anteriormente, ou se eu tentasse copiar e colar o caractere como texto usando o tmux. além disso, a chamada desses scripts de caracteres atrapalha o restante do meu status-right, já que o clock tem cerca de 6 dígitos por minutos quando é chamado (embora só atualize corretamente dois deles).

como posso fazer o tmux respeitar os caracteres de escape?

qualquer ajuda ou percepção é muito apreciada.

    
por walrus 23.10.2012 / 22:52

1 resposta

0

Ok, finalmente encontrei uma solução alternativa. em vez de escapar para o conjunto de caracteres alternativo. Descobri que esses caracteres também têm simplesmente um valor hexadecimal associado a eles. se eu printf ou echo-e esse valor hexadecimal, em seguida, tmux exibirá o caractere correto.

o problema permanece no entanto que o tmux mostrará apenas o caracter correto se eu envolver essas chamadas em um shell script, pois ele ainda não segue nenhum dos escapes (como \ x para hex). Se alguém pudesse lançar alguma luz ou acrescentar alguma coisa a isso, eu realmente apreciaria isso.

    
por 27.10.2012 / 16:41