В настоящее время я использую mcabber в качестве своего клиента Jabber (который использует ncurses) в сеансе tmux на моем домашнем сервере. Локально я запускаю iTerm2 как эмулятор терминала, который поддерживает запуск рычащих уведомлений через escape-последовательности символов.
Примечание: все echo
в этом вопросе работает как printf %b
, или echo -e
в bash и GNU echo
.
Например, echo "\e]9;foobar\007"
iTerm2 отправляет сообщение Growl с текстом «foobar».
Однако в сеансе tmux escape-последовательности сгорают. Поэтому, используя проприетарную символьную escape-последовательность, \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.
Есть идеи по этому поводу?