You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据命令执行结果设置tmux状态栏样式?

如何根据命令执行结果设置tmux状态栏样式?

这个需求太实用了!我之前也遇到过类似的情况,凭证过期了半天都没发现,耽误事得很。咱们一步步来解决这个问题:

第一步:写个凭证状态判断脚本

tmux的条件判断#{?...}语法可以基于外部命令的返回值来分支,所以我们先写个小脚本,帮我们判断凭证是否需要提醒:

创建一个叫check_creds.sh的脚本,内容如下:

#!/bin/bash

# 获取凭证剩余时间的输出
creds_output=$(credentials_remaining)

# 如果输出为空,直接判定为需要提醒(没凭证)
if [ -z "$creds_output" ]; then
    exit 0
fi

# 把剩余时间转换成总分钟数,方便判断
# 提取小时部分,比如从"7h30m"里拿7
hours=$(echo "$creds_output" | sed -n 's/^\([0-9]*\)h.*/\1/p')
# 提取分钟部分,比如从"7h30m"里拿30
minutes=$(echo "$creds_output" | sed -n 's/.*\([0-9]*\)m/\1/p')

# 处理只有小时或者只有分钟的情况
hours=${hours:-0}
minutes=${minutes:-0}

total_minutes=$((hours * 60 + minutes))

# 如果剩余时间小于等于4小时(240分钟),返回0(触发提醒样式)
if [ "$total_minutes" -le 240 ]; then
    exit 0
else
    exit 1
fi

保存后给脚本加执行权限:

chmod +x check_creds.sh

最好把它放到你的用户可执行目录里,比如~/.local/bin/,这样tmux能轻松找到它:

mv check_creds.sh ~/.local/bin/

第二步:配置tmux使用这个脚本

现在我们可以在tmux配置(一般是~/.tmux.conf)里用这个脚本的返回值来切换样式了。

方案1:只给凭证部分加红色背景

如果只想让凭证显示区域变色,用这个配置:

set-option -ga status-right '#{?#(check_creds.sh),#[bg=#ff0000 fg=#ffffff],#[bg=#44475a fg=#f8f8f2]} Creds: #(credentials_remaining)#[default] '

解释一下:

  • #{?#(check_creds.sh),A,B}:如果check_creds.sh返回0(需要提醒),就用A分支的样式,否则用B分支
  • #[bg=#ff0000 fg=#ffffff]:红色背景+白色文字,醒目度拉满!
  • #[default]:恢复默认样式,避免影响状态栏后面的其他内容

方案2:整个状态栏背景变红

如果想让整个状态栏都提醒你,就修改状态栏的全局样式:

set-option -g status-style '#{?#(check_creds.sh),bg=#ff0000 fg=#ffffff,bg=#44475a fg=#f8f8f2}'
# 然后正常设置状态栏右侧内容
set-option -ga status-right 'Creds: #(credentials_remaining) '

第三步:测试生效

保存tmux配置后,在tmux里执行tmux source ~/.tmux.conf让配置生效。你可以手动模拟凭证过期的情况(比如临时修改check_creds.sh里的阈值为一个很大的数,或者直接让credentials_remaining返回空),看看状态栏会不会变成红色。

一些小细节

  • 如果你的credentials_remaining输出格式和7h30m不一样(比如只有30m或者2h),脚本里的sed命令已经做了兼容,不用太担心;如果格式差别很大,只要调整sed的正则匹配就行。
  • 要是觉得4小时的阈值不合适,直接改脚本里的240为你想要的分钟数就行,比如改成60就是剩余1小时提醒。

备注:内容来源于stack exchange,提问作者izidor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:29:35