style(statusline): compact Claude status display

This commit is contained in:
Julian lechner committed 2026-09-16 16:53:03 +02:00
1 parent 9d23c4455e
commit 847038d1e0
2 files changed
+56 -7

No files matched your search

+20 -3
View File
@@ -1,3 +1,5 @@
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$invariantCulture = [System.Globalization.CultureInfo]::InvariantCulture
$data = ($input | Out-String) | ConvertFrom-Json
$model = if ($data.model.display_name) { $data.model.display_name } else { '-' }
$effort = if ($data.effort.level) { $data.effort.level } else { '-' }
@@ -5,7 +7,22 @@ $directory = if ($data.workspace.current_dir) { $data.workspace.current_dir } el
$repo = if ($data.workspace.repo.name) { $data.workspace.repo.name } elseif ($directory) { Split-Path $directory -Leaf } else { '-' }
$branch = if ($directory -and (Get-Command git -ErrorAction SilentlyContinue)) { (& git -C $directory branch --show-current 2>$null | Select-Object -First 1) } else { $null }
if (-not $branch) { $branch = '-' }
$maxContext = if ($data.context_window.context_window_size) { [long]$data.context_window.context_window_size } else { 0 }
$usedContext = if ($null -ne $data.context_window.used_percentage) { "$([math]::Round([double]$data.context_window.used_percentage, [MidpointRounding]::AwayFromZero))%" } else { '-' }
$usedPercentage = if ($null -ne $data.context_window.used_percentage) { [double]$data.context_window.used_percentage } else { $null }
$usedContext = if ($null -ne $usedPercentage) { "$([math]::Round($usedPercentage, [MidpointRounding]::AwayFromZero).ToString($invariantCulture))%" } else { '-' }
$usedTokens = [long]$data.context_window.total_input_tokens + [long]$data.context_window.total_output_tokens
Write-Output "Model: $model | Effort: $effort | Repo: $repo | Branch: $branch | Max Context: $maxContext | Used Context: $usedContext | Used Tokens: $usedTokens"
$usedTokensDisplay = if ($usedTokens -ge 1000) { ($usedTokens / 1000).ToString('0.0', $invariantCulture) + 'k' } else { $usedTokens.ToString($invariantCulture) }
$esc = [char]27
$reset = "$esc[0m"
$dim = "$esc[90m"
$cyan = "$esc[36m"
$magenta = "$esc[35m"
$blue = "$esc[34m"
$green = "$esc[32m"
$contextColor = if ($null -eq $usedPercentage) { $dim } elseif ($usedPercentage -ge 85) { "$esc[31m" } elseif ($usedPercentage -ge 60) { "$esc[33m" } else { $green }
$middot = [char]0x00B7
$sep = "$dim$middot$reset"
$line1 = "$cyan$model$reset $sep $magenta$effort$reset"
$line2 = "$blue$repo$reset$dim on$reset $green$branch$reset $sep $contextColor$usedContext ctx$reset $dim($usedTokensDisplay tok)$reset"
Write-Output "$line1`n$line2"
+36 -4
View File
@@ -4,19 +4,51 @@ set -euo pipefail
command -v jq >/dev/null 2>&1 || exit 0
input=
while IFS= read -r line || [ -n "$line" ]; do input+="$line"; done
IFS=$'\t' read -r model effort repo directory max_context used_context used_tokens < <(
IFS=$'\t' read -r model effort repo directory used_percentage used_tokens < <(
printf '%s' "$input" | jq -r '[
(.model.display_name // "-"),
(.effort.level // "-"),
(.workspace.repo.name // "-"),
(.workspace.current_dir // .cwd // "."),
(.context_window.context_window_size // 0),
(if .context_window.used_percentage == null then "-" else ((.context_window.used_percentage | round | tostring) + "%") end),
(if .context_window.used_percentage == null then "-" else (.context_window.used_percentage | round) end),
((.context_window.total_input_tokens // 0) + (.context_window.total_output_tokens // 0))
] | @tsv'
)
used_percentage=${used_percentage%$'\r'}
used_tokens=${used_tokens%$'\r'}
[ "$repo" != - ] || repo=$(basename -- "$directory")
[ -n "$repo" ] || repo=-
branch=$(git -C "$directory" branch --show-current 2>/dev/null || true)
[ -n "$branch" ] || branch=-
printf 'Model: %s | Effort: %s | Repo: %s | Branch: %s | Max Context: %s | Used Context: %s | Used Tokens: %s\n' "$model" "$effort" "$repo" "$branch" "$max_context" "$used_context" "$used_tokens"
if [ "$used_percentage" != - ]; then
used_context="${used_percentage}%"
else
used_context=-
fi
if [ "$used_tokens" -ge 1000 ]; then
used_tokens_display=$(awk -v t="$used_tokens" 'BEGIN { printf "%.1fk", t / 1000 }')
else
used_tokens_display=$used_tokens
fi
esc=$'\033'
reset="$esc[0m"
dim="$esc[90m"
cyan="$esc[36m"
magenta="$esc[35m"
blue="$esc[34m"
green="$esc[32m"
if [ "$used_percentage" = - ]; then
context_color=$dim
elif [ "$used_percentage" -ge 85 ]; then
context_color="$esc[31m"
elif [ "$used_percentage" -ge 60 ]; then
context_color="$esc[33m"
else
context_color=$green
fi
sep="${dim}·${reset}"
printf "${cyan}%s${reset} ${sep} ${magenta}%s${reset}\n${blue}%s${reset}${dim} on${reset} ${green}%s${reset} ${sep} ${context_color}%s ctx${reset} ${dim}(%s tok)${reset}\n" \
"$model" "$effort" "$repo" "$branch" "$used_context" "$used_tokens_display"