设置/取消设置窗口的钟/标志状态



我倾向于在一个tmux会话中有多个窗口,并且在一个窗口中运行长时间的进程(例如数据库迁移和复杂查询等),而我专注于另一个窗口。

我想设置一些东西,以便在进程完成时标记窗口。我计划对zsh函数这样做,但是我很难找到在给定的tmux窗口上设置铃声的命令。我看了看set-window-option,找到了window_flag,但是我不知道如何设置 window_flag

如何通过shell命令设置和清除给定tmux窗口的指示器?

为了将铃声发送到任何终端,包括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

最新更新