Skip to content

itenium-be/Yoink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

203 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yoink

Themed Windows (WSL) Claude notification hooks, whatever theme you fancy, be it 🦄, 🌸, 🐉 or The Matrix, we've got you covered. Fully configurable.

yoink-unicorn.mp4

Install

/plugin marketplace add itenium-be/Yoink
/plugin install yoink@yoink-marketplace

Manual Install

Running from a checkout, point ~/.claude/settings.json at the hook scripts. If the repo lives at ~/.claude/yoink:

"hooks": {
  "SessionStart": [
    { "hooks": [ { "type": "command", "command": "bash ~/.claude/yoink/hooks/notify-capture.sh" } ] }
  ],
  "Stop": [
    { "hooks": [ { "type": "command", "command": "bash ~/.claude/yoink/hooks/notify-fire.sh done" } ] }
  ],
  "Notification": [
    { "hooks": [ { "type": "command", "command": "bash ~/.claude/yoink/hooks/notify-fire.sh needs-input" } ] }
  ]
}

Note: Start a fresh session after installation. This will capture the window handle for correct screen display.

Usage

  • Left click — activate the originating terminal.
  • Right click — close the notification without activating the terminal.

/yoink

Command Effect
/yoink off [scope] [duration] [--allow …] Mute. Scope all (default), session, or project. Duration 30m/2h/1d, omit for indefinite.
/yoink on [scope] Unmute. Bare on clears every scope that could be silencing you here.
/yoink attach [--force] Bind the foreground window to this session — fixes a missed HWND capture.
/yoink doctor Self-check: jq, powershell.exe, window binding, settings, sounds, active mutes.

While muted the card never shows. off-behavior in settings.json picks what still does:

"off-behavior": ["bell"]

bell is the ASCII BEL on the session's own tab — your terminal decides whether that flashes or dings. sound plays the themed wav with no card. [] is fully dark.

Settings

Fully configurable by updating settings.json. Put your copy at ~/.claude/yoink/settings.json — it overrides the defaults bundled with the plugin and survives plugin updates. Custom sounds go in ~/.claude/yoink/sounds/.

Use the editor if you want to test-drive the different themes and options. It writes settings.json next to itself, so run it from a checkout and copy the result into ~/.claude/yoink/.

.\settings-editor.ps1

Configuration

Possible replacements for the notification body text.

Token Resolves to
{{folder}} Basename of the working directory
{{cwd}} Full working-directory path
{{repo}} Git repository name (top-level dir), empty outside a repo
{{branch}} Current git branch
{{dirty}} when the working tree has uncommitted changes, else empty
{{message}} Claude Code's notification reason (needs-input only)
{{last_prompt}} Your most recent prompt
{{last_assistant}} Claude's last message
{{last_assistant_clean}} Claude's last message, markdown stripped, first sentence only
{{model}} Active model id
{{agents}} Background agents still running (empty when none)
{{pending_tool}} Name of the most recent tool call
{{permission_mode}} auto / default / plan / acceptEdits
{{event}} done or needs-input
{{duration}} How long the turn took (2m13s)
{{diff_stat}} Staged + unstaged changes (3 files +42 −7), empty when clean
{{files_changed}} File count behind {{diff_stat}}
{{errors}} Tool calls that failed this turn, empty when none
{{tokens}} Output tokens Claude spent this turn (1.3k)

A line or badge whose tokens all resolve empty is dropped, so {{errors}} ⚠ only shows up on a turn that had a failure.

Events also take an errorAccent: a color the card switches to when {{errors}} is non-empty, so a turn that hit a tool failure doesn't look like a clean done.

Requirements

WSL with jq on PATH.

sudo apt install jq

Trigger manually

From a PowerShell prompt, in the repo directory:

.\show-notification.ps1 -Event done -Folder Notify
.\show-notification.ps1 -Event needs-input -Folder Notify
Switch Effect
-Event done (default) or needs-input
-Seconds <n> Auto-close after n seconds (default: stay until focused/clicked)
-Folder <s> Folder name shown in the card body
-Hwnd <n> Terminal to flash + auto-close once it regains focus

Flash and auto-close on this terminal:

.\show-notification.ps1 -Event done -Hwnd ([int64](Get-Process -Id $PID).MainWindowHandle)

Tests

bash ~/.claude/yoink/tests/run.sh

Credits

Thanks to Wale-Durojaye Ayotomiwa for the awesome Claude mascot animations

About

Because why just have a boring notification

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors