Skip to content

Instantly share code, notes, and snippets.

@aguestuser
Created March 5, 2026 20:21
Show Gist options
  • Select an option

  • Save aguestuser/e8d72fc3d1b0b1c1ece566ca7d3405e4 to your computer and use it in GitHub Desktop.

Select an option

Save aguestuser/e8d72fc3d1b0b1c1ece566ca7d3405e4 to your computer and use it in GitHub Desktop.
Claude Code custom status line with Dracula theme, context window bar, git branch, and workplan tracking
#!/bin/bash
input=$(cat)
# Dracula theme: https://draculatheme.com/contribute
PURPLE='\033[38;2;189;147;249m'; CYAN='\033[38;2;139;233;253m'; ORANGE='\033[38;2;255;184;108m'
RED='\033[38;2;255;85;85m'; PINK='\033[38;2;255;121;198m'; GREEN='\033[38;2;80;250;123m'
COMMENT='\033[38;2;98;114;164m'; DIM='\033[38;2;68;71;90m'; RESET='\033[0m'
model=$(echo "$input" | jq -r '.model.display_name // empty')
used_pct=$(echo "$input" | jq -r '.context_window.used_percentage // empty')
ctx_size=$(echo "$input" | jq -r '.context_window.context_window_size // 0')
cwd=$(echo "$input" | jq -r '.workspace.current_dir // empty')
git_branch=""
if [ -n "$cwd" ] && git -C "$cwd" rev-parse --git-dir > /dev/null 2>&1; then
git_branch=$(git -C "$cwd" branch --show-current 2>/dev/null || git -C "$cwd" rev-parse --short HEAD 2>/dev/null)
fi
project=""
if [ -n "$cwd" ]; then
case "$cwd" in
*/monorepo-3/*) project="monorepo-3/${cwd#*monorepo-3/}" ;;
*/monorepo-3) project="monorepo-3" ;;
*/monorepo-2/*) project="monorepo-2/${cwd#*monorepo-2/}" ;;
*/monorepo-2) project="monorepo-2" ;;
*/monorepo/*) project="monorepo/${cwd#*monorepo/}" ;;
*/monorepo) project="monorepo" ;;
*) project=$(basename "$cwd") ;;
esac
fi
workplan=""
wp_file="/tmp/claude-workplan-$PPID"
[ -f "$wp_file" ] && workplan=$(cat "$wp_file" 2>/dev/null)
sep="${DIM} | ${RESET}"; parts=()
[ -n "$model" ] && parts+=("${PURPLE}${model}${RESET}")
if [ -n "$used_pct" ]; then
if [ "$used_pct" -lt 50 ]; then bc="$CYAN"; elif [ "$used_pct" -lt 80 ]; then bc="$ORANGE"; else bc="$RED"; fi
filled=$((used_pct / 5)); empty=$((20 - filled)); bar=""
for ((i=0;i<filled;i++)); do bar+="█"; done; for ((i=0;i<empty;i++)); do bar+="░"; done
used_k=$((ctx_size * used_pct / 100000)); total_k=$((ctx_size / 1000))
parts+=("${bc}${bar} ${used_pct}% (${used_k}k/${total_k}k)${RESET}")
fi
[ -n "$project" ] && parts+=("${PINK}${project}${RESET}")
[ -n "$git_branch" ] && parts+=("${GREEN}${git_branch}${RESET}")
if [ -n "$workplan" ]; then
parts+=("${COMMENT}${workplan}${RESET}")
else
parts+=("${COMMENT}-${RESET}")
fi
status_line=""
for i in "${!parts[@]}"; do
[ $i -eq 0 ] && status_line="${parts[$i]}" || status_line="${status_line}${sep}${parts[$i]}"
done
printf "%b" "$status_line"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment