Files
claude-statusline/install.sh
Axel Meyer ddd3b6d637 Initial commit: standalone Claude Code statusline
Headless-friendly statusline with context window bar and optional
token usage fetcher (cron-based, no browser needed).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 14:23:40 +00:00

74 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Install claude-statusline for the current user.
# Usage: bash install.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTALL_DIR="${HOME}/.local/share/claude-statusline"
CONFIG_DIR="${HOME}/.config/claude-statusline"
CLAUDE_DIR="${HOME}/.claude"
echo "==> Installing claude-statusline..."
# Copy scripts
mkdir -p "$INSTALL_DIR"
cp "$SCRIPT_DIR/statusline.js" "$INSTALL_DIR/"
cp "$SCRIPT_DIR/fetch-usage.js" "$INSTALL_DIR/"
chmod +x "$INSTALL_DIR"/*.js
# Create config dir
mkdir -p "$CONFIG_DIR"
if [ ! -f "$CONFIG_DIR/session-key" ]; then
echo "# Paste your claude.ai sessionKey cookie value here" > "$CONFIG_DIR/session-key"
chmod 600 "$CONFIG_DIR/session-key"
echo " Created $CONFIG_DIR/session-key (edit with your session key)"
fi
# Configure Claude Code statusline
mkdir -p "$CLAUDE_DIR"
SETTINGS="$CLAUDE_DIR/settings.json"
NODE_BIN="$(which node 2>/dev/null || echo '/usr/bin/node')"
if [ -f "$SETTINGS" ]; then
# Check if statusLine already configured
if grep -q '"statusLine"' "$SETTINGS" 2>/dev/null; then
echo " statusLine already configured in $SETTINGS — skipping"
else
# Insert statusLine before last closing brace
TMP=$(mktemp)
sed '$ d' "$SETTINGS" > "$TMP"
# Add comma if needed
if grep -q '[^{]' "$TMP"; then
echo ',' >> "$TMP"
fi
cat >> "$TMP" <<SEOF
"statusLine": {
"type": "command",
"command": "${NODE_BIN} --no-warnings ${INSTALL_DIR}/statusline.js"
}
}
SEOF
mv "$TMP" "$SETTINGS"
echo " Added statusLine to $SETTINGS"
fi
else
cat > "$SETTINGS" <<SEOF
{
"statusLine": {
"type": "command",
"command": "${NODE_BIN} --no-warnings ${INSTALL_DIR}/statusline.js"
}
}
SEOF
echo " Created $SETTINGS with statusLine config"
fi
# Offer cron setup
echo ""
echo "==> Optional: set up usage fetcher cron (every 5 min):"
echo " crontab -e"
echo " */5 * * * * ${NODE_BIN} ${INSTALL_DIR}/fetch-usage.js 2>/dev/null"
echo ""
echo "==> Done! Restart Claude Code to see the statusline."
echo " Don't forget to add your session key to: $CONFIG_DIR/session-key"