Ich führe derzeit mcabber als Jabber-Client (der ncurses verwendet) in einer tmux-Sitzung auf meinem Homeserver aus. Vor Ort starte ich iTerm2 als Terminal-Emulator, der das Auslösen von Growl-Benachrichtigungen durch Zeichen-Escape-Sequenzen unterstützt.
Hinweis: Alles echo
in dieser Frage funktioniert wie printf %b
, oder echo -e
in Bash und GNU echo
.
zB echo "\e]9;foobar\007"
macht iTerm2 eine Growl Nachricht mit dem Text „foobar“ senden.
In einer tmux-Sitzung werden die Escape-Sequenzen jedoch aufgefressen. Daher kann die proprietäre Zeichen-Escape-Sequenz \Ptmux
folgendermaßen verwendet werden:
echo "\ePtmux;\e\e]9;foobar\007\e\\"
Dies löst eine Growl-Nachricht innerhalb einer tmux-Sitzung aus.
Wenn ich dies jedoch in meinem mcabber-Ereignisskript verwende, das beim Empfang einer neuen Nachricht ausgelöst wird, wird keine Benachrichtigung ausgelöst, als ob das Echo an das falsche Terminal gesendet würde.
Ich nehme an, das hat mit dem mcabber zu tun, der das Skript auslöst. Es handelt sich um eine Ncurses-Anwendung, sodass die Ausgabe meines normalen Bash-Skripts verloren geht und iTerm 2 sie nie sieht.
Ich habe auch versucht, smcup ohne Erfolg anzurufen, bevor ich mich einigen Ideen angeschlossen habe, die ich entdeckt habe
tput smcup
echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\"
tput rmcup
Ich nehme an, dass dies nicht funktioniert, da das Problem nicht auf das "echte Terminalfenster" zurückschaltet, sondern die Ausgabe eher auf das ncurses-Fenster lenkt.
Irgendwelche Ideen dazu?