feat(statusline): dot-separated format, GLM brand color, blue branch
- сегменты через жирную серую точку · вместо пробелов, квадратные скобки убраны (ветка, effort, аккаунты) - glm → фирменный кремовый Z.ai (#FFE4B5 ≈ 256-палитра 223) - ветка → светло-синий (#8FB3EF ≈ 111) вместо серого - суффикс [1m]/[1M] вычищается из отображения модели: окно задаёт CLAUDE_CODE_MAX_CONTEXT_TOKENS, суффиксу в статусной строке делать нечего Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,12 @@ input=$(cat)
|
||||
cwd=$(echo "$input" | jq -r '.cwd')
|
||||
model=$(echo "$input" | jq -r '.model.display_name // empty')
|
||||
model_id=$(echo "$input" | jq -r '.model.id // empty')
|
||||
# Суффикс [1m] в отображении не нужен: окно контекста задаётся
|
||||
# CLAUDE_CODE_MAX_CONTEXT_TOKENS, а не суффиксом модели
|
||||
model="${model/\[1m\]/}"
|
||||
model="${model% \[1M\]}"
|
||||
model="${model% (1M context)}"
|
||||
model_id="${model_id/\[1m\]/}"
|
||||
five_pct=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')
|
||||
five_reset=$(echo "$input" | jq -r '.rate_limits.five_hour.resets_at // empty')
|
||||
week_pct=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty')
|
||||
@@ -11,15 +17,18 @@ week_reset=$(echo "$input" | jq -r '.rate_limits.seven_day.resets_at // empty')
|
||||
ctx_pct=$(echo "$input" | jq -r '.context_window.used_percentage // empty')
|
||||
|
||||
|
||||
# Разделитель сегментов: жирная серая средняя точка ·
|
||||
_sep() { printf " \033[1m\033[38;5;240m·\033[00m "; }
|
||||
|
||||
# Цвет effort: насыщенные, глубже чем пастельные (jewel tones)
|
||||
_effort_color() {
|
||||
case "$1" in
|
||||
low) printf '\033[38;5;220m[low]\033[00m' ;; # золотой
|
||||
medium) printf '\033[38;5;50m[medium]\033[00m' ;; # насыщенный teal
|
||||
high) printf '\033[38;5;38m[high]\033[00m' ;; # глубокий голубой
|
||||
xhigh) printf '\033[38;5;206m[xhigh]\033[00m' ;; # насыщенный фиолетовый
|
||||
max) printf '\033[38;5;210m[\033[38;5;220mm\033[38;5;114ma\033[38;5;50mx\033[38;5;206m]\033[00m' ;; # радуга
|
||||
*) printf '\033[38;5;252m[%s]\033[00m' "$1" ;;
|
||||
low) printf '\033[38;5;220mlow\033[00m' ;; # золотой
|
||||
medium) printf '\033[38;5;50mmedium\033[00m' ;; # насыщенный teal
|
||||
high) printf '\033[38;5;38mhigh\033[00m' ;; # глубокий голубой
|
||||
xhigh) printf '\033[38;5;206mxhigh\033[00m' ;; # насыщенный фиолетовый
|
||||
max) printf '\033[38;5;220mm\033[38;5;114ma\033[38;5;50mx\033[38;5;206m\033[00m' ;; # радуга
|
||||
*) printf '\033[38;5;252m%s\033[00m' "$1" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -29,6 +38,7 @@ _brand_color() {
|
||||
deepseek) printf '\033[38;5;69m' ;; # DeepSeek фирменный синий
|
||||
claude) printf '\033[38;5;173m' ;; # Anthropic оранжевый
|
||||
kimi) printf '\033[38;5;81m' ;; # Kimi голубой
|
||||
glm) printf '\033[38;5;223m' ;; # Z.ai кремовый (бренд-фон z.ai, #FFE4B5)
|
||||
openrouter) printf '\033[38;5;135m' ;; # OpenRouter фиолетовый
|
||||
*) printf '\033[38;5;223m' ;; # кремовый (fallback)
|
||||
esac
|
||||
@@ -39,7 +49,7 @@ branch=$(git -C "$cwd" --no-optional-locks symbolic-ref --short HEAD 2>/dev/null
|
||||
short_cwd="${cwd/#$HOME/\~}"
|
||||
printf "\033[38;5;252m%s\033[00m" "$short_cwd"
|
||||
|
||||
[ -n "$branch" ] && printf " \033[38;5;252m[%s]\033[00m" "$branch"
|
||||
[ -n "$branch" ] && { _sep; printf "\033[38;5;111m%s\033[00m" "$branch"; }
|
||||
if [ -n "$model" ]; then
|
||||
brand_color=$(_brand_color "${AI_LAUNCHER:-}")
|
||||
effort=$(echo "$input" | jq -r ".effort.level // empty")
|
||||
@@ -84,18 +94,20 @@ if [ -n "$model" ]; then
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
[ -n "$account" ] && printf " %s[%s]\033[00m" "$brand_color" "$account"
|
||||
[ -n "$account" ] && { _sep; printf "%s%s\033[00m" "$brand_color" "$account"; }
|
||||
fi
|
||||
|
||||
# Аккаунт/ключ Kimi — показываем alias (account1/account2/...).
|
||||
if [ "${AI_LAUNCHER:-}" = "kimi" ]; then
|
||||
kimi_account=$(cat "$HOME/.config/ai-setup/kimi_keys/current" 2>/dev/null)
|
||||
[ -n "$kimi_account" ] && printf " %s[%s]\033[00m" "$brand_color" "$kimi_account"
|
||||
[ -n "$kimi_account" ] && { _sep; printf "%s%s\033[00m" "$brand_color" "$kimi_account"; }
|
||||
fi
|
||||
if [ -n "$effort" ]; then
|
||||
_sep
|
||||
printf "%s%s " "$brand_color" "$model"
|
||||
_effort_color "$effort"
|
||||
else
|
||||
_sep
|
||||
printf "%s%s\033[00m" "$brand_color" "$model"
|
||||
fi
|
||||
fi
|
||||
@@ -138,7 +150,7 @@ if [[ "$model_id" == *deepseek* ]]; then
|
||||
cache_file="$HOME/.cache/ai-setup/deepseek_balance"
|
||||
if [ -f "$cache_file" ]; then
|
||||
balance=$(head -1 "$cache_file")
|
||||
[ -n "$balance" ] && printf " \033[38;5;78m%s\033[00m" "$balance"
|
||||
[ -n "$balance" ] && { _sep; printf "\033[38;5;78m%s\033[00m" "$balance"; }
|
||||
fi
|
||||
|
||||
# Фоновое обновление баланса (не чаще раза в 30 секунд)
|
||||
@@ -182,7 +194,7 @@ elif [ "${AI_LAUNCHER:-}" = "openrouter" ]; then
|
||||
cache_file="$HOME/.cache/ai-setup/openrouter_balance"
|
||||
if [ -f "$cache_file" ]; then
|
||||
balance=$(head -1 "$cache_file")
|
||||
[ -n "$balance" ] && printf " \033[38;5;78m%s\033[00m" "$balance"
|
||||
[ -n "$balance" ] && { _sep; printf "\033[38;5;78m%s\033[00m" "$balance"; }
|
||||
fi
|
||||
|
||||
# Фоновое обновление баланса (не чаще раза в 30 секунд)
|
||||
@@ -247,13 +259,13 @@ else
|
||||
five_int=$(printf '%.0f' "$five_pct")
|
||||
remaining=$(fmt_remaining "$five_reset")
|
||||
color=$(pct_color "$five_int")
|
||||
printf " %s%s:%s%%\033[00m" "$color" "$remaining" "$five_int"
|
||||
_sep; printf "%s%s:%s%%\033[00m" "$color" "$remaining" "$five_int"
|
||||
fi
|
||||
if [ -n "$week_pct" ] && [ -n "$week_reset" ]; then
|
||||
week_int=$(printf '%.0f' "$week_pct")
|
||||
remaining=$(fmt_remaining "$week_reset")
|
||||
color=$(pct_color "$week_int")
|
||||
printf " %s%s:%s%%\033[00m" "$color" "$remaining" "$week_int"
|
||||
_sep; printf "%s%s:%s%%\033[00m" "$color" "$remaining" "$week_int"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -263,7 +275,7 @@ fi
|
||||
if [ -n "$ctx_pct" ]; then
|
||||
ctx_int=$(printf '%.0f' "$ctx_pct")
|
||||
color=$(pct_color "$ctx_int")
|
||||
printf " %sctx:%s%%\033[00m" "$color" "$ctx_int"
|
||||
_sep; printf "%sctx:%s%%\033[00m" "$color" "$ctx_int"
|
||||
|
||||
# Звуковой сигнал при первом достижении 60%
|
||||
alert_file="$HOME/.cache/ai-setup/ctx_alert_state"
|
||||
|
||||
Reference in New Issue
Block a user