我目前正在我的家庭服务器上的tmux会话中将mcabber作为我的Jabber客户端(使用ncurses)运行。我在本地将iTerm2作为终端仿真器运行,它支持通过字符转义序列触发咆哮通知。
注意:echo
此问题中的所有内容都类似printf %b
,或echo -e
在bash和GNU中工作echo
。
例如,echo "\e]9;foobar\007"
使iTerm2发送带有文本“ foobar”的Growl消息。
但是,在tmux会话中,转义序列会被吃掉。因此,\Ptmux
可以像这样使用专有字符转义序列:
echo "\ePtmux;\e\e]9;foobar\007\e\\"
这会在tmux会话中触发咆哮消息。
但是,当我在收到新消息时触发的mcabber事件脚本中使用此命令时,不会触发任何通知,就像将回声发送到错误的终端一样。
我想这与触发脚本的mcabber有关,它是一个ncurses应用程序,因此我普通bash脚本的输出丢失了,而iTerm 2却看不到它。
在回应发现的一些想法之前,我还尝试打电话给打sm而未成功
tput smcup
echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\"
tput rmcup
我想这不起作用,因为问题不是切换回“真实终端窗口”,而是将输出直接定向到ncurses窗口。
关于这个有什么想法吗?