J'exécute actuellement mcabber en tant que client Jabber (qui utilise ncurses) dans une session tmux sur mon serveur domestique. Localement, j'exécute iTerm2 en tant qu'émulateur de terminal, qui prend en charge le déclenchement de notifications de grognement via des séquences d'échappement de caractères.
Remarque: Tout echo
dans cette question fonctionne comme printf %b
, ou echo -e
en bash et GNU echo
.
Par exemple, echo "\e]9;foobar\007"
iTerm2 envoie un message Growl avec le texte "foobar".
Cependant, lors d'une session tmux, les séquences d'échappement sont absorbées. Par conséquent, l'utilisation de la séquence d'échappement de caractères propriétaire \Ptmux
peut être utilisée comme ceci:
echo "\ePtmux;\e\e]9;foobar\007\e\\"
Cela déclenche un message de grognement depuis une session tmux.
Cependant, lorsque j'utilise ceci dans mon script d'événement mcabber qui se déclenche lorsqu'un nouveau message est reçu, aucune notification n'est déclenchée, comme si l'écho était envoyé au mauvais terminal.
Je suppose que cela a à voir avec le mcabber qui déclenche le script est une application ncurses donc la sortie de mon script bash normal se perd et iTerm 2 ne le voit jamais.
J'ai également essayé d'appeler smcup sans succès avant de me faire l'écho de certaines idées que j'ai découvertes
tput smcup
echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\"
tput rmcup
Je suppose que cela ne fonctionne pas car le problème n'est pas de revenir à la "vraie fenêtre de terminal", mais de diriger davantage la sortie vers la fenêtre ncurses.
Des idées sur celui-ci?