wum*_*ump 20
我很惊讶这个答案还没有给出:你可以使用tmux窗口设置visual-bell.随着bell-action然后你可以配置你是否希望看到当前窗口铃铛,或用于非当前窗口只(其他).我个人更喜欢第二个,因为你不会看到shell产生的噪音,如果它在当前窗口中,你可能不关心通知.
set-window-option -g visual-bell on
set-window-option -g bell-action other
Run Code Online (Sandbox Code Playgroud)
当进程生成铃声时,tmux将突出显示响铃铃声的窗口标题,并显示"窗口X中的铃声"通知.
然后在过程结束时响铃.例如:
make; echo -e '\a'
Run Code Online (Sandbox Code Playgroud)
(或者&& ||,;如果你想分别只在成功或失败时响铃)
Wer*_*ght 12
我知道有3个解决方案,没有一个真正理想.您可以将这些命令放入~/.tmux.conf或直接通过Ctrl-B作为Tmux命令运行它们:.
每当输出发生变化时监视并发出警报(然后您可以将输出重定向到其他位置,以便输出仅在命令完成后更改):
:set -g visual-activity on
:setw -g monitor-activity on
Run Code Online (Sandbox Code Playgroud)只要输出暂时没有变化(此处为30秒),就会监视并发出警报:
:set -g visual-silence on
:setw -g monitor-silence 30
Run Code Online (Sandbox Code Playgroud)(不推荐使用并且有一天会被更好的选项取代)监视和警告whevener输出包含匹配给定模式的字符串(并且可能运行您的命令my-command; echo foobar):
:set -g visual-content on
:setw -g monitor-content foo*bar
Run Code Online (Sandbox Code Playgroud)$ some-command; tmux display-message "Task 1 done".但是,该消息仅显示通过定义的短暂持续时间:set -g display-time 4000.
如果保持visual-*to off(默认值),它将仅突出显示警报发生的窗口的名称,而不显示全局警报状态消息.
有关每个设置的详细信息,请参见tmux手册页
我终于找到了适合我的解决方案。我zsh用于我的 shell,它有一个名为“Hook Functions”的功能——在某些操作上执行的 shell 函数:http: //zsh.sourceforge.net/Doc/Release/Functions.html。
很可能其他 shell 也有类似的功能。
我使用的钩子函数是precmd,每次出现提示时都会执行。即,当命令刚刚完成运行时。
在我的.zshrc:
precmd () {
echo -n -e "\a"
}
Run Code Online (Sandbox Code Playgroud)
这会向 发送一个铃声tmux,使其仅突出显示该命令正在运行的窗口。
如果您已经专注于该tmux窗口,则不会执行任何操作,因为铃声会立即清除。
这种方法的好处是它不会触发所有视觉活动。它仅在命令完成时触发。
小智 2
您可以使用 && bash 衍生品包装正在运行的脚本,它将调用 tmux 命令来通知您。使用 && 意味着只有当脚本以错误代码 0 退出时您才会收到通知。如果您希望它无论如何都通知您,只需使用 ;
至于包装脚本的 tmux 命令,看看这些命令,它们应该足够了 select-window split-window -h 'exec echo...' send-keys