Atualmente, estou executando o mcabber como meu cliente Jabber (que usa ncurses) em uma sessão tmux no meu servidor doméstico. Localmente, executo o iTerm2 como um emulador de terminal, que suporta o acionamento de notificações de rosnado por meio de seqüências de escape de caracteres.
Nota: Tudo echo
nesta questão funciona como printf %b
, ou echo -e
no bash e no GNU echo
.
por exemplo, echo "\e]9;foobar\007"
faz com que o iTerm2 envie uma mensagem Growl com o texto "foobar".
No entanto, quando em uma sessão tmux, as seqüências de escape são consumidas. Portanto, o uso da sequência de escape de caracteres proprietários \Ptmux
pode ser usado assim:
echo "\ePtmux;\e\e]9;foobar\007\e\\"
Isso aciona uma mensagem de rosnado de dentro de uma sessão do tmux.
No entanto, quando eu uso isso no meu script de evento mcabber que é acionado quando uma nova mensagem é recebida, nenhuma notificação é acionada, como se o eco fosse enviado para o terminal errado.
Suponho que isso tenha a ver com o mcabber que aciona o script é um aplicativo ncurses, para que a saída do meu script bash normal se perca e o iTerm 2 nunca o veja.
Eu também tentei chamar smcup sem sucesso antes de ecoar de acordo com algumas idéias que descobri
tput smcup
echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\"
tput rmcup
Suponho que isso não funcione, pois o problema não está voltando para a "janela real do terminal", mas direcionando mais a saída na janela ncurses.
Alguma ideia sobre este?