feat: добавить настройку статусной строки Claude Code
Шаг 6.7 - копирует statusline-command.sh и прописывает statusLine в settings.json. Показывает user@host, путь, git-ветку, модель и usage%. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
33
ai-setup.sh
33
ai-setup.sh
@@ -638,7 +638,36 @@ else
|
|||||||
info "Папка со skills не найдена, пропускаю"
|
info "Папка со skills не найдена, пропускаю"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 6.7. Регистрация официального маркетплейса плагинов Claude ──
|
# ── 6.7. Статусная строка Claude Code ───────────────────────
|
||||||
|
info "Настраиваю статусную строку Claude Code..."
|
||||||
|
STATUSLINE_SRC="$SCRIPT_DIR/home-configs/claude/statusline-command.sh"
|
||||||
|
STATUSLINE_DST="$HOME/.claude/statusline-command.sh"
|
||||||
|
if [ -f "$STATUSLINE_SRC" ]; then
|
||||||
|
cp "$STATUSLINE_SRC" "$STATUSLINE_DST"
|
||||||
|
chmod +x "$STATUSLINE_DST"
|
||||||
|
# Вписываем statusLine в settings.json через python3
|
||||||
|
SETTINGS="$HOME/.claude/settings.json"
|
||||||
|
python3 - "$SETTINGS" "$STATUSLINE_DST" <<'PYEOF'
|
||||||
|
import sys, json, os
|
||||||
|
settings_path, script_path = sys.argv[1], sys.argv[2]
|
||||||
|
data = {}
|
||||||
|
if os.path.exists(settings_path):
|
||||||
|
with open(settings_path) as f:
|
||||||
|
try:
|
||||||
|
data = json.load(f)
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
pass
|
||||||
|
data["statusLine"] = {"type": "command", "command": f"bash {script_path}"}
|
||||||
|
with open(settings_path, "w") as f:
|
||||||
|
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||||
|
f.write("\n")
|
||||||
|
PYEOF
|
||||||
|
success "Статусная строка настроена"
|
||||||
|
else
|
||||||
|
warn "Файл $STATUSLINE_SRC не найден, пропускаю"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── 6.8. Регистрация официального маркетплейса плагинов Claude ──
|
||||||
info "Настраиваю маркетплейс плагинов Claude Code..."
|
info "Настраиваю маркетплейс плагинов Claude Code..."
|
||||||
if ! command -v claude &>/dev/null; then
|
if ! command -v claude &>/dev/null; then
|
||||||
warn "claude не найден, пропускаю настройку маркетплейса"
|
warn "claude не найден, пропускаю настройку маркетплейса"
|
||||||
@@ -667,7 +696,7 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 6.8. Установка Claude Notifier ──────────────────────────
|
# ── 6.9. Установка Claude Notifier ──────────────────────────
|
||||||
info "Устанавливаю Claude Notifier..."
|
info "Устанавливаю Claude Notifier..."
|
||||||
if [ -f "$HOME/.claude/hooks/claude-notifier-on-stop.js" ]; then
|
if [ -f "$HOME/.claude/hooks/claude-notifier-on-stop.js" ]; then
|
||||||
success "Claude Notifier уже установлен"
|
success "Claude Notifier уже установлен"
|
||||||
|
|||||||
19
home-configs/claude/statusline-command.sh
Normal file
19
home-configs/claude/statusline-command.sh
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
input=$(cat)
|
||||||
|
cwd=$(echo "$input" | jq -r '.cwd')
|
||||||
|
model=$(echo "$input" | jq -r '.model.display_name // empty')
|
||||||
|
five_pct=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')
|
||||||
|
week_pct=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty')
|
||||||
|
|
||||||
|
branch=$(git -C "$cwd" --no-optional-locks symbolic-ref --short HEAD 2>/dev/null)
|
||||||
|
|
||||||
|
printf "\033[01;32m%s@%s\033[00m:\033[01;34m%s\033[00m" "$(whoami)" "$(hostname -s)" "$cwd"
|
||||||
|
|
||||||
|
[ -n "$branch" ] && printf " \033[01;33m[%s]\033[00m" "$branch"
|
||||||
|
[ -n "$model" ] && printf " \033[00;36m%s\033[00m" "$model"
|
||||||
|
|
||||||
|
if [ -n "$five_pct" ]; then
|
||||||
|
printf " \033[00;35m5h:$(printf '%.0f' "$five_pct")%%\033[00m"
|
||||||
|
elif [ -n "$week_pct" ]; then
|
||||||
|
printf " \033[00;35m7d:$(printf '%.0f' "$week_pct")%%\033[00m"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user