Attualmente sto eseguendo mcabber come mio client Jabber (che utilizza ncurses) in una sessione tmux sul mio homeserver. A livello locale eseguo iTerm2 come emulatore di terminale, che supporta l'attivazione di notifiche ringhio attraverso sequenze di escape di caratteri.
Nota: tutto echo
in questa domanda funziona come printf %b
, o echo -e
in bash e GNU echo
.
ad esempio echo "\e]9;foobar\007"
, iTerm2 invia un messaggio Growl con il testo "foobar".
Tuttavia, durante una sessione di tmux, le sequenze di escape vengono divorate. Pertanto, è possibile utilizzare la sequenza di escape dei caratteri proprietari in \Ptmux
questo modo:
echo "\ePtmux;\e\e]9;foobar\007\e\\"
Ciò innesca un messaggio ringhio all'interno di una sessione di tmux.
Tuttavia, quando lo uso nel mio script di eventi di mcabber che viene generato quando viene ricevuto un nuovo messaggio, nessuna notifica viene attivata, come se l'eco fosse inviata al terminale sbagliato.
Suppongo che ciò abbia a che fare con quel mcabber che attiva lo script è un'applicazione ncurses, quindi l'output del mio normale script bash si perde e iTerm 2 non lo vede mai.
Ho anche provato a chiamare smcup senza successo prima di fare eco ad alcune idee che ho scoperto
tput smcup
echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\"
tput rmcup
Suppongo che questo non funzioni in quanto il problema non sta tornando alla "finestra del terminale reale", ma più orientando l'output nella finestra di ncurses.
Qualche idea su questo?