我可以设置tmux在进程完成时在非活动窗口中触发警报吗?
例如:我开始一个很长的构建过程。我希望在完成时收到通知,而不是每次打印状态时都会收到通知。
答案 0 :(得分:16)
我很惊讶这个答案还没有给出:你可以使用tmux窗口设置visual-bell
。使用bell-action
,您可以配置是仅要查看当前窗口的铃声,还是仅查看非当前窗口(其他)的铃声。我个人更喜欢第二个,因为你不会看到shell产生的噪音,如果它在当前窗口中,你可能不关心通知。
set-window-option -g visual-bell on
set-window-option -g bell-action other
当进程生成铃声时,tmux将突出显示响铃铃声的窗口标题,并显示“窗口X中的铃声”通知。
然后在过程结束时按铃。 E.g:
make; echo -e '\a'
(或&&
||
代替;
,如果您想分别仅在成功或失败时响铃)
答案 1 :(得分:12)
我知道有3个解决方案,没有一个真正理想。您可以将这些命令放在~/.tmux.conf
中,或者直接通过Ctrl-B :
以Tmux命令运行它们。
每当输出发生变化时监视并发出警报(然后您可以将输出重定向到其他位置,以便输出仅在命令完成后更改):
:set -g visual-activity on
:setw -g monitor-activity on
只要输出不一段时间(此处为30秒),监视并发出警报:
:set -g visual-silence on
:setw -g monitor-silence 30
(deprecated and someday replaced by a better option)监视并警告whevener输出包含与给定模式匹配的字符串(并且可能运行像my-command; echo foobar
这样的命令):
:set -g visual-content on
:setw -g monitor-content foo*bar
$ some-command; tmux display-message "Task 1 done"
。但是,该消息仅会在:set -g display-time 4000
定义的短暂时间内显示。
如果您将visual-*
保留为off
(默认值),则只会突出显示警报的窗口名称,而不会显示全局警报状态消息。
有关这些设置的详细信息,请参阅tmux man page
答案 2 :(得分:2)
你可以使用&&&amp ;; bash衍生物将调用tmux命令通知你。 使用&&意味着只有当脚本以错误代码0退出时才会收到通知。如果您希望它通知您,只需使用;
至于用于包装脚本的tmux命令,看看那些束,它们就足够了 选择窗口 split-window -h'exec echo ...' 发送密钥答案 3 :(得分:2)
我终于找到了适合我的解决方案。我使用.cell {
height: 100px;
border: 1px solid;
border-collapse: collapse;
}
.red {
background: red;
}
.yel {
background: lightyellow;
}
.row {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-wrap: wrap;
}
.row > [class*='col-'] {
display: flex;
flex-direction: column;
}
作为我的shell,它有一个名为" Hook Functions" - 执行某些操作的shell函数:http://zsh.sourceforge.net/Doc/Release/Functions.html。
可能其他炮弹也有相似的特征。
我使用的钩子函数是zsh
,每次显示提示时都会执行。即,当一个命令刚刚运行完毕。
在我的precmd
:
.zshrc
这会向precmd () {
echo -n -e "\a"
}
发送一个铃声,这会使其突出显示该命令所在的窗口。
如果您已经专注于tmux
窗口,则不会执行任何操作,因为铃声会立即被清除。
这种方法的好处是它不会触发所有视觉活动。它仅在命令完成时触发。
答案 4 :(得分:0)
有两种选择:
set -g visual-activity on
setw -g monitor-activity on
你试过在tmux.conf中设置它们吗?
答案 5 :(得分:0)
作为一个好的解决方法,您可以使用: https://github.com/tcreech/tmux-notifications
您只需执行以下操作: $命令; tmux-notify
您会在状态栏中收到一个不错的通知(如果启用)
答案 6 :(得分:0)
为了将来参考,人们还可以查看由 ChanderG 创建的 tmux-notify 插件,该插件专为此目的而设计。
免责声明:我是这个插件的贡献者。如果您发现错误或发现缺失的内容,请随时查看并打开问题/拉取请求或功能请求。