Op Linux stuurt Claude Code alleen in een paar terminals zelf een desktopnotificatie, zoals Ghostty en Kitty. Overal anders voeg je aan ~/.claude/settings.json een Notification-hook toe die notify-send 'Claude Code' 'Claude Code needs your attention' uitvoert, plus een Stop-hook als je meteen wilt weten wanneer Claude klaar is. notify-send komt uit libnotify (libnotify-bin op Debian en Ubuntu) en heeft een draaiende notificatie-daemon nodig. GNOME en KDE Plasma hebben die, headless servers en SSH-sessies niet.
01Wat Claude Code zelf al doet
Als Claude een taak afrondt of op een toestemming wacht en je lijkt weg te zijn, vuurt Claude Code een notificatie-event af. Volgens de terminalgids van Anthropic maken Ghostty en Kitty daar een desktopnotificatie van; andere terminals, zoals GNOME Terminal, Konsole of de terminal van VS Code, tonen niets.
Je kunt in plaats daarvan in elke terminal om een bell vragen:
{
"preferredNotifChannel": "terminal_bell"
}
Wat een bell doet, hangt af van je terminal en desktop. Hij kan piepen, knipperen of het venster als urgent markeren. De gids over de terminal bell legt dit uit. Voor een echte notificatie gebruik je een hook.
02notify-send installeren
Kijk of je het al hebt:
notify-send 'Claude Code' 'test'
Wordt het commando niet gevonden, installeer het dan:
sudo apt install libnotify-bin # Debian, Ubuntu, Mint
sudo dnf install libnotify # Fedora, RHEL
sudo pacman -S libnotify # Arch
Draait het commando wel maar verschijnt er niets, dan heb je geen notificatie-daemon. GNOME, KDE Plasma, Cinnamon en Xfce hebben er een ingebouwd. Op een tiling window manager zoals Sway, i3 of Hyprland installeer en start je er zelf een, bijvoorbeeld mako of dunst. Wayland en X11 werken allebei, omdat notify-send via D-Bus met de daemon praat, niet met het display.
03Een Notification hook
Dit is het Linux-voorbeeld uit de hooks-gids van Anthropic. Zet het in ~/.claude/settings.json, naast de keys die er al staan:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "notify-send 'Claude Code' 'Claude Code needs your attention'"
}
]
}
]
}
}
Typ /hooks in Claude Code om hem onder Notification te zien staan. De lege matcher vuurt bij elk notificatietype. De belangrijkste zijn permission_prompt, als een goedkeuring zo'n zes seconden heeft gewacht zonder dat je typt, en idle_prompt, zo'n 60 seconden nadat Claude klaar is. De gids over de Notification hook heeft de volledige lijst.
04Direct weten wanneer Claude klaar is
idle_prompt komt een minuut te laat. Een Stop-hook draait zodra Claude zijn beurt afsluit. Die heeft geen matcher nodig:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "notify-send -a 'Claude Code' 'Claude Code' 'Claude has finished'"
}
]
}
]
}
}
-a stelt de appnaam in die de daemon toont. Andere handige opties: -u critical houdt de notificatie bij de meeste daemons in beeld tot je hem wegklikt, en -i dialog-information voegt een icoon toe. Meer over dit event in de gids over de Stop hook.
05Toon het echte bericht, met geluid
Hooks krijgen JSON binnen via standaardinvoer, en de input van Notification bevat een message-veld. Een script kan die tekst tonen en een geluid afspelen. Sla dit op als ~/.claude/hooks/notify-linux.sh:
#!/bin/bash
msg=$(jq -r '.message // "Claude Code needs your attention"')
notify-send -a 'Claude Code' 'Claude Code' "$msg"
paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || true
Maak het uitvoerbaar met chmod +x ~/.claude/hooks/notify-linux.sh en gebruik ~/.claude/hooks/notify-linux.sh als hook-commando. jq zit in de pakketten van elke distributie. paplay werkt met PulseAudio en met de PulseAudio-laag van PipeWire, en het geluidsbestand komt uit het freedesktop-geluidsthema (sound-theme-freedesktop op Debian en Ubuntu). Je kunt elk .oga- of .wav-bestand gebruiken.
06Geen notify-send? Gebruik een escapesequentie
Begrijpt je terminal notificatie-escapesequenties, dan kan een hook Claude Code vragen er een te sturen. Hooks hebben geen eigen terminal, dus je geeft de sequentie terug in een terminalSequence-veld en Claude Code schrijft hem weg. De referentie van Anthropic noemt OSC 777 voor Ghostty, urxvt en Warp, en OSC 99 voor Kitty. Bijvoorbeeld:
#!/bin/bash
body=$(jq -r '.message // "Needs your attention"')
seq=$(printf '\033]777;notify;%s;%s\007' "Claude Code" "$body")
jq -nc --arg seq "$seq" '{terminalSequence: $seq}'
Hiervoor is geen daemon nodig op de machine waar Claude Code draait. Daarom is dit ook de truc voor remote servers via SSH.
07Als notify-send wel in een shell werkt, maar niet vanuit Claude Code
notify-send heeft het D-Bus-sessieadres van je desktoplogin nodig. Hooks erven de omgeving van Claude Code, dus als je Claude Code vanuit een desktopterminal start, zit je goed. Start je Claude Code via SSH, vanuit een systemd-service, in een container of in een tmux-server die oorspronkelijk via SSH is gestart, dan ontbreekt het mogelijk en komt de notificatie nergens aan. Voer echo $DBUS_SESSION_BUS_ADDRESS uit in de shell waarin je claude start; is die leeg, dan verschijnen er geen desktopnotificaties vanuit die sessie. De tmux-gids en de SSH-gids behandelen die set-ups.
08Waar Claude Code Notifier in past
De hooks hierboven zijn een prima keuze als je achter je computer zit. Ze bereiken je niet meer zodra je wegloopt, en met een desktopnotificatie kun je Claude niet antwoorden.
Claude Code Notifier is een onafhankelijke tool (gemaakt door TouchTap, niet door Anthropic) die is gebouwd op de hooks van Claude Code. De gratis command line tool, ccn, draait op Mac, Windows en Linux. Op Linux:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
of npx @touchtap/ccn als je Node.js hebt. Het voegt zijn hook-entries toe aan ~/.claude/settings.json, laat de rest ongemoeid en maakt een backup. Vanaf dan krijg je een Linux-desktopnotificatie als Claude klaar is, toestemming nodig heeft of een vraag stelt. Daarvoor heb je geen netwerk en geen telefoon nodig. Het draait een paar milliseconden per event; er blijft niets op de achtergrond draaien.
Koppel een iPhone of Android-telefoon en dezelfde events komen binnen als push-notificaties, zelfs op een machine zonder desktop. Vanaf je telefoon kun je een toestemming toestaan of weigeren, een antwoord kiezen op een vraag van Claude en de volgende instructie sturen als Claude klaar is. Zie een telefoon koppelen, de ccn-pagina en prijzen voor de telefoonapps. Op Linux bewaart ccn zijn token in een bestand dat alleen jij kunt lezen.
Installeer je ccn, verwijder dan je eigen notify-send-hooks om dubbele notificaties te voorkomen.
09FAQ
Waarom werkt notify-send wel in mijn terminal, maar niet in de hook?
Meestal heeft de hook geen D-Bus-sessieadres, omdat Claude Code via SSH, in een container of in een tmux-server zonder zo'n adres is gestart. Start Claude Code vanuit een terminal op je desktop, of gebruik in plaats daarvan een push naar je telefoon.
Welk pakket levert notify-send?
libnotify-bin op Debian en Ubuntu, en libnotify op Fedora en Arch. Je hebt ook een notification daemon nodig; volledige desktopomgevingen hebben die standaard.
Werkt dit op Wayland?
Ja. notify-send gebruikt D-Bus, dus het werkt op Wayland en X11 hetzelfde, zolang er een notification daemon draait.
Hoe laat ik de melding staan tot ik hem zie?
Voeg -u critical toe aan het notify-send-commando. De meeste daemons houden kritieke meldingen in beeld tot je ze wegklikt.
Kan ik meldingen van Claude Code krijgen op een headless Linux-server?
Niet als desktopmeldingen, want er is geen desktop. Gebruik een escape sequence via je SSH-terminal, of een pushdienst zoals de telefoon-app van ccn. In de SSH-handleiding worden de opties vergeleken.