如何在tmux状态栏窗口指示器中添加最近命令的退出码标识
在tmux状态栏显示窗口活跃分栏的命令退出状态
解决方法
要实现这个需求,你可以通过自定义tmux状态栏格式,结合shell脚本检测每个窗口活跃分栏的最近命令退出码,把异常状态标识附加到窗口名称后面。
1. 编写检测退出码的脚本
创建脚本文件~/.tmux/check_exit.sh,内容如下:
#!/bin/bash # 获取目标窗口的活跃分栏ID active_pane=$(tmux display-message -p -t "$1" "#{pane_active} #{pane_id}" | awk '$1 == 1 {print $2}') # 获取该分栏最近命令的退出码 last_exit=$(tmux display-message -p -t "$active_pane" "#{pane_last_command_exit_status}") # 非0退出输出感叹号,否则输出空 [ "$last_exit" -ne 0 ] && echo "❗️" || echo ""
给脚本添加执行权限:
chmod +x ~/.tmux/check_exit.sh
2. 修改tmux配置
打开~/.tmux.conf,添加或修改窗口状态栏格式设置:
# 普通窗口的状态栏显示格式 set -g window-status-format "#I:#W#(~/.tmux/check_exit.sh #I)#{?window_flags,#window_flags, }" # 当前窗口的状态栏显示格式 set -g window-status-current-format "#I:#W#(~/.tmux/check_exit.sh #I)#{?window_flags,#window_flags, }"
其中#I是窗口索引,#W是窗口名称,脚本会根据窗口索引定位到对应窗口的活跃分栏,判断退出码后返回状态标识。
3. 使配置生效
在tmux会话中执行命令重新加载配置:
tmux source ~/.tmux.conf
说明
- 仅检测每个窗口的活跃分栏——即该窗口最后一次被切换时处于活跃状态的分栏
- 当活跃分栏的最近命令非0退出时,窗口名称后会显示
❗️,逻辑和分栏缩放时的Z标识一致 - 边缘场景(如分栏未执行过命令、后台进程退出)可能无法检测,符合忽略特殊场景的需求
内容的提问来源于stack exchange,提问作者beyarkay
相关产品推荐
相关产品推荐

