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 echonesta questão funciona como printf %b, ou echo -eno 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 \Ptmuxpode 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?