Oleks 1d52542d28 inline hooks into plugin.json (Claude Code didn't pick up hooks.json)
The standalone .claude-plugin/hooks.json file wasn't being read by
Claude Code on /reload-plugins ("0 hooks" loaded). Inline the hook
block into plugin.json's `hooks` key per the manifest spec —
delete hooks.json so the plugin has a single source of truth.

Bump to 1.0.1 so the installed cache picks up the change on next
auto-update / `claude plugin update`.
2026-05-10 22:00:01 +03:00
2026-05-10 15:35:30 +03:00
2026-05-10 15:35:30 +03:00
2026-05-10 15:35:30 +03:00
2026-05-10 15:35:30 +03:00

hyprpanel-state

Claude Code plugin that surfaces per-window claude state in the HyprPanel workspaces bar.

What it does

Wires Claude Code hooks (UserPromptSubmit / PreToolUse / PostToolUse / Notification / Stop / SessionEnd) to a shell script that walks the parent PID chain from itself up through claude → shell → kitty until it finds a PID owned by a Hyprland kitty client, then writes a state token to /tmp/hyprpanel-claude/<address>. The patched HyprPanel bar reads those tokens and tints each kitty's app icon by what claude is doing.

State Color (in bar) Pip indicator Triggered by
active blue UserPromptSubmit / PreToolUse / PostToolUse
waiting orange Notification (suppressed when state is done/scheduled)
done green Stop (no ScheduleWakeup in last assistant turn)
scheduled cyan Stop (last turn used ScheduleWakeup / CronCreate)
(cleared) default SessionEnd

A blink-decay opacity animation fires on (re-)assignment of waiting, scheduled, done — and on the agent-idle "remember me" Notification while already done. Sticky-done means the green check survives idle pings.

Sidecar files

  • /tmp/hyprpanel-claude/<addr> — current state token
  • /tmp/hyprpanel-claude/.<addr>.tools — tool-in-flight counter (incremented on PreToolUse, decremented on PostToolUse, flock-protected for parallel tool fan-outs)
  • /tmp/hyprpanel-claude/.<addr>.ping — touch-only sidecar; mtime advance triggers the bar's blink animation

Bar side

The visuals live in HyprPanel and are not owned by this plugin. Install / patch HyprPanel separately — see ~/projects/hyprpanel-dev/PROMPT.md for the workspaces module changes that read these state files.

Dependencies

  • hyprctl (Hyprland)
  • jq
  • flock

All standard on a NixOS desktop.

Install

claude plugin add https://claude-plugins.oleks.space/plugins/hyprpanel-state.git

Once enabled, the hook chain wires itself up — no ~/.claude/settings.json edits required. Claude sessions started after the install will fire hooks into the script; pre-existing sessions need to restart to pick them up.

License

MIT

S
Description
Claude Code plugin: surfaces per-window claude state in the HyprPanel workspaces bar via lifecycle hooks. Each kitty's icon is tinted by what claude is doing — active (blue), waiting (orange ●), done (green ✔), scheduled for /loop wakeup (cyan ⧗). Hooks-only; bar visuals live in the patched HyprPanel.
Readme
47 KiB
Languages
Shell 100%