Sous Linux, Claude Code n'envoie une notification de bureau tout seul que dans quelques terminaux, comme Ghostty et Kitty. Partout ailleurs, ajoute à ~/.claude/settings.json un hook Notification qui lance notify-send 'Claude Code' 'Claude Code needs your attention', plus un hook Stop si tu veux savoir dès que Claude a terminé. notify-send fait partie de libnotify (libnotify-bin sur Debian et Ubuntu) et nécessite un daemon de notifications actif, fourni par GNOME et KDE Plasma, mais absent des serveurs headless et des sessions SSH.
01Ce que Claude Code fait tout seul
Quand Claude termine une tâche ou attend une autorisation et que tu sembles absent, Claude Code déclenche un événement de notification. D'après le guide du terminal d'Anthropic, Ghostty et Kitty le transforment en notification de bureau ; les autres terminaux, comme GNOME Terminal, Konsole ou le terminal de VS Code, n'affichent rien.
Tu peux demander une sonnerie (bell) dans n'importe quel terminal à la place :
{
"preferredNotifChannel": "terminal_bell"
}
L'effet du bell dépend du terminal et du bureau : un bip, un clignotement ou une fenêtre marquée comme urgente. Le guide du terminal bell détaille tout ça. Pour une vraie notification, utilise un hook.
02Installer notify-send
Vérifie si tu l'as déjà :
notify-send 'Claude Code' 'test'
Si la commande est introuvable, installe-la :
sudo apt install libnotify-bin # Debian, Ubuntu, Mint
sudo dnf install libnotify # Fedora, RHEL
sudo pacman -S libnotify # Arch
Si la commande s'exécute mais que rien ne s'affiche, c'est qu'il n'y a pas de daemon de notifications. GNOME, KDE Plasma, Cinnamon et Xfce en intègrent un. Avec un tiling window manager comme Sway, i3 ou Hyprland, installe-en un et lance-le toi-même, par exemple mako ou dunst. Wayland et X11 fonctionnent tous les deux, car notify-send communique avec le daemon via D-Bus, pas avec l'affichage.
03Un Notification hook
Voici l'exemple Linux du guide des hooks d'Anthropic. Ajoute-le à ~/.claude/settings.json, à côté des clés que tu as déjà :
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "notify-send 'Claude Code' 'Claude Code needs your attention'"
}
]
}
]
}
}
Tape /hooks dans Claude Code pour le voir sous Notification. Le matcher vide se déclenche pour tous les types de notification. Les principaux sont permission_prompt, quand une demande d'approbation attend depuis environ six secondes sans que tu tapes quoi que ce soit, et idle_prompt, environ 60 secondes après que Claude a terminé. Le guide du Notification hook donne la liste complète.
04Savoir dès que Claude a terminé
idle_prompt arrive avec une minute de retard. Un hook Stop s'exécute dès que Claude termine son tour. Il ne prend pas de matcher :
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "notify-send -a 'Claude Code' 'Claude Code' 'Claude has finished'"
}
]
}
]
}
}
-a définit le nom d'appli affiché par le daemon. Autres options utiles : -u critical garde la notification à l'écran jusqu'à ce que tu la fermes (sur la plupart des daemons), et -i dialog-information ajoute une icône. Plus d'infos sur cet événement dans le guide du Stop hook.
05Afficher le vrai message, avec un son
Les hooks reçoivent du JSON sur l'entrée standard, et l'entrée de Notification contient un champ message. Un script peut afficher ce texte et jouer un son. Enregistre ceci dans ~/.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
Rends-le exécutable avec chmod +x ~/.claude/hooks/notify-linux.sh et utilise ~/.claude/hooks/notify-linux.sh comme commande du hook. jq est disponible dans les paquets de toutes les distributions. paplay fonctionne avec PulseAudio et avec la couche PulseAudio de PipeWire, et le fichier son vient du thème sonore freedesktop (sound-theme-freedesktop sur Debian et Ubuntu). Tu peux utiliser n'importe quel .oga ou .wav.
06Pas de notify-send ? Utilise une séquence d'échappement
Si ton terminal comprend les séquences d'échappement de notification, un hook peut demander à Claude Code d'en envoyer une. Les hooks n'ont pas de terminal à eux : tu renvoies donc la séquence dans un champ terminalSequence et Claude Code l'écrit. La référence d'Anthropic indique OSC 777 pour Ghostty, urxvt et Warp, et OSC 99 pour Kitty. Par exemple :
#!/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}'
Aucun daemon n'est nécessaire sur la machine où tourne Claude Code, c'est pourquoi c'est aussi l'astuce pour les serveurs distants via SSH.
07Quand notify-send marche dans un shell mais pas depuis Claude Code
notify-send a besoin de l'adresse du bus de session D-Bus de ta session de bureau. Les hooks héritent de l'environnement de Claude Code : si tu lances Claude Code depuis un terminal de ton bureau, pas de souci. En revanche, si Claude Code est lancé via SSH, depuis un service systemd, dans un conteneur ou dans un serveur tmux démarré à l'origine depuis SSH, cette adresse peut manquer, et la notification se perd. Lance echo $DBUS_SESSION_BUS_ADDRESS dans le shell depuis lequel tu démarres claude ; si le résultat est vide, les notifications de bureau de cette session ne s'afficheront pas. Le guide tmux et le guide SSH couvrent ces configurations.
08Où se situe Claude Code Notifier
Les hooks ci-dessus sont un bon choix quand tu travailles devant ta machine. Mais ils ne peuvent plus te joindre dès que tu quittes ton bureau, et une notification de bureau ne permet pas de répondre à Claude.
Claude Code Notifier est un outil indépendant (développé par TouchTap, pas par Anthropic) basé sur les hooks de Claude Code. Son outil en ligne de commande gratuit, ccn, tourne sur Mac, Windows et Linux. Sous Linux :
curl -fsSL https://claudecodenotifier.com/install.sh | sh
ou npx @touchtap/ccn si tu as Node.js. Il ajoute ses entrées de hook à ~/.claude/settings.json, laisse tout le reste intact et garde une sauvegarde. Ensuite, il affiche une notification de bureau Linux quand Claude termine, a besoin d'une autorisation ou pose une question. Cette partie ne nécessite ni réseau ni téléphone. Il s'exécute quelques millisecondes par événement ; rien ne tourne en arrière-plan.
Associe un iPhone ou un téléphone Android et les mêmes événements arrivent en notifications push, même sur une machine sans aucun bureau. Depuis le téléphone, tu peux accepter ou refuser une autorisation, choisir une réponse à la question de Claude et envoyer l'instruction suivante une fois que Claude a terminé. Consulte l'association d'un téléphone, la page ccn et les tarifs des applis mobiles. Sous Linux, ccn stocke son token dans un fichier lisible par toi seul.
Si tu installes ccn, supprime tes propres hooks notify-send pour éviter les doublons.
09FAQ
Pourquoi notify-send marche dans mon terminal mais pas dans le hook ?
En général, le hook n'a pas d'adresse de session D-Bus, parce que Claude Code a été lancé via SSH, dans un conteneur ou dans un serveur tmux démarré sans elle. Lance Claude Code depuis un terminal de ton bureau, ou utilise plutôt une notification push sur ton téléphone.
Quel paquet fournit notify-send ?
libnotify-bin sur Debian et Ubuntu, et libnotify sur Fedora et Arch. Il te faut aussi un daemon de notifications, déjà inclus dans les environnements de bureau complets.
Est-ce que ça marche sous Wayland ?
Oui. notify-send passe par D-Bus, donc ça marche pareil sous Wayland et X11 tant qu'un daemon de notifications tourne.
Comment faire pour que la notification reste affichée jusqu'à ce que je la voie ?
Ajoute -u critical à la commande notify-send. La plupart des daemons gardent les notifications critiques à l'écran jusqu'à ce que tu les fermes.
Est-ce que je peux recevoir les notifications de Claude Code sur un serveur Linux headless ?
Pas sous forme de notifications de bureau, puisqu'il n'y a pas de bureau. Utilise une séquence d'échappement via ton terminal SSH, ou un service de push comme l'app mobile de ccn. Le guide SSH compare les options.