Я зараз запускаю mcabber як мій клієнт Jabber (який використовує ncurses) під час сеансу tmux на своєму домашньому сервері. Локально я запускаю iTerm2 як емулятор терміналу, який підтримує запускання сповіщень про гарчання через послідовності втечі символів.
Примітка. У echo
цьому питанні все працює на зразок printf %b
, або echo -e
в bash та GNU echo
.
наприклад, echo "\e]9;foobar\007"
змушує iTerm2 надсилати повідомлення Growl з текстом "foobar".
Однак, коли в tmux сеансі послідовності втечі з'їдаються. Тому використання захищеної символьної послідовності символів \Ptmux
можна використовувати так:
echo "\ePtmux;\e\e]9;foobar\007\e\\"
Це запускає бурчання повідомлення протягом сеансу tmux.
Однак, коли я використовую це в моєму сценарії подій mcabber, який звільняється, коли надходить нове повідомлення, повідомлення не запускається, ніби відлуння надсилається на неправильний термінал.
Я вважаю, що це пов'язано з тим mcabber, який запускає скрипт, є додатком ncurses, тому вихід з мого звичайного сценарію bash втрачається, і iTerm 2 ніколи його не бачить.
Я також намагався зателефонувати smcup без успіху, перш ніж повторюватися згідно з деякими я знайденими ідеями
tput smcup
echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\"
tput rmcup
Я припускаю, що це не працює, оскільки проблема полягає не в тому, щоб повернутися до «реального вікна терміналу», а більше направити висновок у вікно ncurses.
Будь-які ідеї на цьому?