我倾向于在tmux会话中有多个窗口,并在一个窗口中运行长进程(例如数据库迁移和复杂查询等),同时我将注意力集中在另一个窗口中。
我想在进程完成时设置一些内容来标记窗口。我打算用zsh
函数执行此操作,但是我无法找到在给定tmux窗口上设置铃声的命令。我查看set-window-option
并找到了window_flag
,但我不知道如何设置 window_flag
如何通过shell命令为给定的tmux窗口设置和清除指示符?
答案 0 :(得分:3)
为了向任何终端(包括tmux)发送铃声,您只需将\a
打印到终端即可。您可以使用echo '\a'
或print '\a'
。 (在 ZSH 以外的shell上,您可能需要使用echo -e '\a'
或printf '\a'
。)
如果窗口中出现铃声,tmux会在状态栏中为窗口名称添加!
。激活窗口会自动删除铃声标志,这也意味着如果铃声出现在当前活动的窗口中,则不会设置标志。
您还可以使用window-status-bell-style
选项在状态行中为这些窗口设置单独的样式(默认似乎是reverse
,即切换前景色和背景色。)
此外,如果通过将bell-action
选项设置为any
来发出铃声,您可以让tmux显示短信。
如果一个过程需要至少60秒才完成,我在~/.zshrc
中有以下铃声响铃:
autoload -Uz add-zsh-hook
typeset -i LONGRUNTIME=60
save_starttime () {
starttime=$SECONDS
}
set_longrunning_alert () {
if ((LONGRUNTIME > 0 && SECONDS - starttime >= LONGRUNTIME)); then
print "\a"
fi
}
add-zsh-hook preexec save_starttime
add-zsh-hook precmd set_longrunning_alert