summaryrefslogtreecommitdiff
path: root/default/.claude/statuslines/statusline.sh
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-01-16 08:30:14 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-01-16 08:30:14 +0900
commit3fbb9a18372f2b6a675dd6c039ba52be76f3eeb4 (patch)
treeaa694a36cdd323a7853672ee7a2ba60409ac3b06 /default/.claude/statuslines/statusline.sh
updates
Diffstat (limited to 'default/.claude/statuslines/statusline.sh')
-rwxr-xr-xdefault/.claude/statuslines/statusline.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/default/.claude/statuslines/statusline.sh b/default/.claude/statuslines/statusline.sh
new file mode 100755
index 0000000..7326283
--- /dev/null
+++ b/default/.claude/statuslines/statusline.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# Read JSON input from stdin
+input=$(cat)
+
+# Extract model and workspace values
+MODEL_DISPLAY=$(echo "$input" | jq -r '.model.display_name')
+CURRENT_DIR=$(echo "$input" | jq -r '.workspace.current_dir')
+
+# Extract context window metrics
+INPUT_TOKENS=$(echo "$input" | jq -r '.context_window.total_input_tokens')
+OUTPUT_TOKENS=$(echo "$input" | jq -r '.context_window.total_output_tokens')
+CONTEXT_SIZE=$(echo "$input" | jq -r '.context_window.context_window_size')
+
+# Extract cost metrics
+COST_USD=$(echo "$input" | jq -r '.cost.total_cost_usd')
+LINES_ADDED=$(echo "$input" | jq -r '.cost.total_lines_added')
+LINES_REMOVED=$(echo "$input" | jq -r '.cost.total_lines_removed')
+
+# Extract percentage metrics
+USED_PERCENTAGE=$(echo "$input" | jq -r '.context_window.used_percentage')
+REMAINING_PERCENTAGE=$(echo "$input" | jq -r '.context_window.remaining_percentage')
+
+# Format tokens as Xk
+format_tokens() {
+ local num="$1"
+ if [ "$num" -ge 1000 ]; then
+ echo "$((num / 1000))k"
+ else
+ echo "$num"
+ fi
+}
+
+# Generate progress bar for context usage
+generate_progress_bar() {
+ local percentage=$1
+ local bar_width=20
+ local filled=$(awk "BEGIN {printf \"%.0f\", ($percentage / 100) * $bar_width}")
+ local empty=$((bar_width - filled))
+ local bar=""
+ for ((i = 0; i < filled; i++)); do bar+="█"; done
+ for ((i = 0; i < empty; i++)); do bar+="░"; done
+ echo "$bar"
+}
+
+# Calculate total
+TOTAL_TOKENS=$((INPUT_TOKENS + OUTPUT_TOKENS))
+
+# Generate progress bar
+PROGRESS_BAR=$(generate_progress_bar "$USED_PERCENTAGE")
+
+# Show git branch if in a git repo
+GIT_BRANCH=""
+if git rev-parse --git-dir >/dev/null 2>&1; then
+ BRANCH=$(git branch --show-current 2>/dev/null)
+ if [ -n "$BRANCH" ]; then
+ GIT_BRANCH=" | 🌿 $BRANCH"
+ fi
+fi
+
+echo "[$MODEL_DISPLAY] 📁 ${CURRENT_DIR##*/}${GIT_BRANCH}
+Context: [$PROGRESS_BAR] ${USED_PERCENTAGE}%
+Cost: \$${COST_USD} | +${LINES_ADDED} -${LINES_REMOVED} lines"