W Linux Claude Code sam wysyła powiadomienie na pulpit tylko w kilku terminalach, np. Ghostty i Kitty. Wszędzie indziej dodaj do ~/.claude/settings.json hook Notification, który uruchamia notify-send 'Claude Code' 'Claude Code needs your attention', a do tego hook Stop, jeśli chcesz wiedzieć od razu, gdy Claude skończy. notify-send pochodzi z libnotify (libnotify-bin w Debianie i Ubuntu) i wymaga działającego demona powiadomień – GNOME i KDE Plasma go mają, ale serwery headless i sesje SSH już nie.
01Co Claude Code robi sam z siebie
Gdy Claude kończy zadanie albo czeka na zgodę, a ciebie chyba nie ma przy komputerze, Claude Code wywołuje zdarzenie powiadomienia. Poradnik Anthropic o terminalach podaje, że Ghostty i Kitty zamieniają je w powiadomienie na pulpicie; inne terminale, jak GNOME Terminal, Konsole czy terminal w VS Code, nic nie pokazują.
Zamiast tego w każdym terminalu możesz włączyć dzwonek:
{
"preferredNotifChannel": "terminal_bell"
}
Efekt dzwonka zależy od terminala i środowiska graficznego. Może zapikać, mignąć albo oznaczyć okno jako wymagające uwagi. Więcej w poradniku o dzwonku terminala. Jeśli chcesz prawdziwe powiadomienie, użyj hooka.
02Instalacja notify-send
Sprawdź, czy go masz:
notify-send 'Claude Code' 'test'
Jeśli polecenie nie zostanie znalezione, zainstaluj je:
sudo apt install libnotify-bin # Debian, Ubuntu, Mint
sudo dnf install libnotify # Fedora, RHEL
sudo pacman -S libnotify # Arch
Jeśli polecenie się wykonuje, ale nic się nie pojawia, nie masz demona powiadomień. GNOME, KDE Plasma, Cinnamon i Xfce mają go wbudowanego. W kafelkowym menedżerze okien, takim jak Sway, i3 czy Hyprland, musisz go zainstalować i uruchomić sam, np. mako albo dunst. Działa zarówno Wayland, jak i X11, bo notify-send komunikuje się z demonem przez D-Bus, a nie z serwerem wyświetlania.
03Notification hook
To przykład dla Linux z poradnika Anthropic o hookach. Dodaj go do ~/.claude/settings.json obok istniejących kluczy:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "notify-send 'Claude Code' 'Claude Code needs your attention'"
}
]
}
]
}
}
Wpisz /hooks w Claude Code, żeby zobaczyć go w sekcji Notification. Pusty matcher odpala się dla każdego typu powiadomienia. Najważniejsze to permission_prompt, gdy prośba o zgodę czeka około sześciu sekund bez twojej reakcji, oraz idle_prompt, mniej więcej 60 sekund po tym, jak Claude skończy. Pełną listę znajdziesz w poradniku o Notification hook.
04Dowiedz się od razu, gdy Claude skończy
idle_prompt przychodzi z minutowym opóźnieniem. Hook Stop uruchamia się od razu, gdy Claude kończy swoją turę. Nie potrzebuje matchera:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "notify-send -a 'Claude Code' 'Claude Code' 'Claude has finished'"
}
]
}
]
}
}
-a ustawia nazwę aplikacji wyświetlaną przez demona. Inne przydatne opcje: -u critical w większości demonów trzyma powiadomienie na ekranie, dopóki go nie zamkniesz, a -i dialog-information dodaje ikonę. Więcej o tym zdarzeniu w poradniku o Stop hook.
05Pokaż prawdziwą wiadomość i odtwórz dźwięk
Hooki dostają JSON na standardowe wejście, a wejście Notification zawiera pole message. Skrypt może wyświetlić ten tekst i odtworzyć dźwięk. Zapisz to jako ~/.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
Nadaj mu prawa wykonywania przez chmod +x ~/.claude/hooks/notify-linux.sh i ustaw ~/.claude/hooks/notify-linux.sh jako polecenie hooka. jq jest w repozytoriach każdej dystrybucji. paplay działa z PulseAudio i z warstwą PulseAudio w PipeWire, a plik dźwiękowy pochodzi z motywu dźwiękowego freedesktop (sound-theme-freedesktop w Debianie i Ubuntu). Możesz użyć dowolnego pliku .oga lub .wav.
06Nie masz notify-send? Użyj sekwencji escape
Jeśli twój terminal rozumie sekwencje escape powiadomień, hook może poprosić Claude Code o ich wysłanie. Hooki nie mają własnego terminala, więc zwracasz sekwencję w polu terminalSequence, a Claude Code ją wypisuje. Dokumentacja Anthropic wymienia OSC 777 dla Ghostty, urxvt i Warp oraz OSC 99 dla Kitty. Na przykład:
#!/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}'
Nie wymaga to demona na maszynie, na której działa Claude Code, dlatego to też sposób na zdalne serwery przez SSH.
07Gdy notify-send działa w shellu, ale nie z Claude Code
notify-send potrzebuje adresu sesji D-Bus z twojego logowania do pulpitu. Hooki dziedziczą środowisko Claude Code, więc jeśli uruchomisz Claude Code z terminala na pulpicie, wszystko gra. Jeśli uruchomisz Claude Code przez SSH, z usługi systemd, w kontenerze albo w serwerze tmux pierwotnie uruchomionym przez SSH, może go brakować i powiadomienie trafi w próżnię. Uruchom echo $DBUS_SESSION_BUS_ADDRESS w tym samym shellu, z którego odpalasz claude; jeśli wynik jest pusty, powiadomienia na pulpicie z tej sesji się nie pokażą. Te konfiguracje opisują poradnik o tmux i poradnik o SSH.
08Gdzie pasuje Claude Code Notifier
Powyższe hooki sprawdzają się, gdy siedzisz przy komputerze. Nie dosięgną cię jednak, gdy odejdziesz od biurka, a z powiadomienia na pulpicie nie odpowiesz Claude.
Claude Code Notifier to niezależne narzędzie (stworzone przez TouchTap, nie przez Anthropic) oparte na hookach Claude Code. Jego darmowe narzędzie wiersza poleceń, ccn, działa na Macu, Windows i Linux. W Linux:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
albo npx @touchtap/ccn, jeśli masz Node.js. Dodaje swoje wpisy hooków do ~/.claude/settings.json, resztę zostawia bez zmian i robi kopię zapasową. Od tej chwili pokazuje powiadomienie na pulpicie Linux, gdy Claude skończy, potrzebuje zgody albo zadaje pytanie. Ta część nie wymaga sieci ani telefonu. Działa przez kilka milisekund na zdarzenie; nic nie zostaje uruchomione w tle.
Sparuj iPhone albo telefon z Android, a te same zdarzenia dostaniesz jako powiadomienia push, nawet na maszynie w ogóle bez pulpitu. Z telefonu możesz zezwolić lub odmówić zgody, wybrać odpowiedź na pytanie Claude i wysłać kolejne polecenie, gdy Claude skończy. Zobacz parowanie telefonu, stronę ccn i cennik aplikacji na telefon. W Linux ccn trzyma swój token w pliku, który możesz odczytać tylko ty.
Jeśli instalujesz ccn, usuń własne hooki z notify-send, żeby uniknąć duplikatów.
09FAQ
Dlaczego notify-send działa w moim terminalu, ale nie w hooku?
Zwykle hook nie ma adresu sesji D-Bus, bo Claude Code został uruchomiony przez SSH, w kontenerze albo w serwerze tmux uruchomionym bez niego. Uruchom Claude Code z terminala na pulpicie albo użyj zamiast tego pusha na telefon.
Który pakiet dostarcza notify-send?
libnotify-bin na Debianie i Ubuntu oraz libnotify na Fedorze i Archu. Potrzebujesz też demona powiadomień, który pełne środowiska graficzne mają w zestawie.
Czy to działa na Waylandzie?
Tak. notify-send korzysta z D-Bus, więc działa tak samo na Waylandzie i X11, o ile działa demon powiadomień.
Jak sprawić, żeby powiadomienie zostało, dopóki go nie zobaczę?
Dodaj -u critical do polecenia notify-send. Większość demonów trzyma krytyczne powiadomienia na ekranie, dopóki ich nie zamkniesz.
Czy mogę dostawać powiadomienia z Claude Code na serwerze Linux bez GUI?
Nie jako powiadomienia na pulpicie, bo nie ma pulpitu. Użyj sekwencji escape przez terminal SSH albo usługi push, np. aplikacji na telefon od ccn. Poradnik o SSH porównuje te opcje.