cmc/dotfiles

Using GNU Stow to manage my dotfiles. config dotfiles macos stow

common/claude/.claude/statusline.sh

33 lines · 911 bytes · executable

 1#!/bin/sh
 2# Claude Code status line: model, directory, git branch, context usage.
 3# Session JSON arrives on stdin; see
 4# https://code.claude.com/docs/en/statusline#available-data
 5
 6tab=$(printf '\t')
 7IFS="$tab" read -r model dir pct <<EOF
 8$(jq -r '[.model.display_name,
 9          .workspace.current_dir,
10          (.context_window.used_percentage // 0 | floor)] | @tsv' 2>/dev/null)
11EOF
12pct=${pct:-0}
13
14branch=''
15if [ -n "$dir" ] && cd "$dir" 2>/dev/null; then
16	branch=$(git branch --show-current 2>/dev/null)
17	if [ -n "$branch" ] && [ -n "$(git status --porcelain 2>/dev/null)" ]; then
18		branch="$branch*"
19	fi
20fi
21
22if [ "$pct" -ge 80 ]; then
23	ctx=31
24elif [ "$pct" -ge 50 ]; then
25	ctx=33
26else
27	ctx=32
28fi
29
30sep='\033[2m·\033[0m'
31printf "\033[35m%s\033[0m $sep \033[36m%s\033[0m" "$model" "${dir##*/}"
32[ -n "$branch" ] && printf " $sep \033[33m%s\033[0m" "$branch"
33printf " $sep \033[%dm%d%%\033[0m\n" "$ctx" "$pct"