Linux'ta Claude Code kendi başına yalnızca Ghostty ve Kitty gibi birkaç terminalde masaüstü bildirimi gönderir. Diğer her yerde ~/.claude/settings.json dosyasına notify-send 'Claude Code' 'Claude Code needs your attention' komutunu çalıştıran bir Notification hook'u ekleyin; Claude'un işini bitirdiği anı da bilmek istiyorsanız bir Stop hook'u ekleyin. notify-send libnotify'dan gelir (Debian ve Ubuntu'da libnotify-bin) ve çalışan bir bildirim daemon'u gerektirir; GNOME ve KDE Plasma bunu sağlar, headless sunucular ve SSH oturumlarında ise yoktur.
01Claude Code kendiliğinden ne yapar
Claude bir görevi bitirdiğinde veya izin beklediğinde ve siz başında değilmiş gibi göründüğünüzde, Claude Code bir bildirim olayı tetikler. Anthropic'in terminal kılavuzuna göre Ghostty ve Kitty bunu masaüstü bildirimine dönüştürür; GNOME Terminal, Konsole veya VS Code terminali gibi diğer terminaller hiçbir şey göstermez.
Bunun yerine herhangi bir terminalde zil (bell) isteyebilirsiniz:
{
"preferredNotifChannel": "terminal_bell"
}
Zilin ne yapacağı terminale ve masaüstüne bağlıdır. Bip sesi çıkarabilir, yanıp sönebilir veya pencereyi acil olarak işaretleyebilir. Ayrıntılar terminal bell kılavuzunda. Gerçek bir bildirim için hook kullanın.
02notify-send'i kurun
Kurulu olup olmadığını kontrol edin:
notify-send 'Claude Code' 'test'
Komut bulunamazsa kurun:
sudo apt install libnotify-bin # Debian, Ubuntu, Mint
sudo dnf install libnotify # Fedora, RHEL
sudo pacman -S libnotify # Arch
Komut çalışıyor ama hiçbir şey görünmüyorsa bildirim daemon'unuz yok demektir. GNOME, KDE Plasma, Cinnamon ve Xfce bir tane içerir. Sway, i3 veya Hyprland gibi bir tiling pencere yöneticisinde, örneğin mako veya dunst gibi bir daemon'u kendiniz kurup başlatın. notify-send ekranla değil, D-Bus üzerinden daemon ile konuştuğu için hem Wayland hem X11'de çalışır.
03Bir Notification hook
Bu, Anthropic'in hook kılavuzundaki Linux örneğidir. Mevcut anahtarlarınızın yanına, ~/.claude/settings.json dosyasına ekleyin:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "notify-send 'Claude Code' 'Claude Code needs your attention'"
}
]
}
]
}
}
Hook'un Notification altında listelendiğini görmek için Claude Code'da /hooks yazın. Boş matcher her bildirim türü için tetiklenir. Başlıcaları şunlardır: bir onay siz bir şey yazmadan yaklaşık altı saniye beklediğinde permission_prompt ve Claude işini bitirdikten yaklaşık 60 saniye sonra idle_prompt. Tam liste Notification hook kılavuzunda.
04Claude bitirdiği anda haberdar olun
idle_prompt bir dakika geç gelir. Stop hook'u ise Claude sırasını bitirir bitirmez çalışır. Matcher almaz:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "notify-send -a 'Claude Code' 'Claude Code' 'Claude has finished'"
}
]
}
]
}
}
-a, daemon'un gösterdiği uygulama adını belirler. Diğer kullanışlı seçenekler: -u critical çoğu daemon'da bildirimi siz kapatana kadar ekranda tutar, -i dialog-information ise bir simge ekler. Bu olay hakkında daha fazlası Stop hook kılavuzunda.
05Gerçek mesajı sesle birlikte gösterin
Hook'lar standart girdiden JSON alır ve Notification girdisi bir message alanı içerir. Bir script bu metni gösterip ses çalabilir. Bunu ~/.claude/hooks/notify-linux.sh olarak kaydedin:
#!/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
chmod +x ~/.claude/hooks/notify-linux.sh ile çalıştırılabilir yapın ve hook komutu olarak ~/.claude/hooks/notify-linux.sh kullanın. jq her dağıtımın paketlerinde bulunur. paplay PulseAudio ile ve PipeWire'ın PulseAudio katmanıyla çalışır; ses dosyası freedesktop ses temasından gelir (Debian ve Ubuntu'da sound-theme-freedesktop). İstediğiniz herhangi bir .oga veya .wav dosyasını kullanabilirsiniz.
06notify-send yok mu? Escape dizisi kullanın
Terminaliniz bildirim escape dizilerini anlıyorsa, bir hook Claude Code'dan bunu göndermesini isteyebilir. Hook'ların kendi terminali olmadığından diziyi bir terminalSequence alanında döndürürsünüz ve Claude Code onu yazar. Anthropic'in referansı Ghostty, urxvt ve Warp için OSC 777'yi, Kitty için OSC 99'u listeler. Örneğin:
#!/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}'
Bu yöntem Claude Code'un çalıştığı makinede daemon gerektirmez; bu yüzden SSH üzerinden uzak sunucular için de işe yarayan yöntemdir.
07notify-send shell'de çalışıp Claude Code'dan çalışmadığında
notify-send, masaüstü oturumunuzun D-Bus oturum adresine ihtiyaç duyar. Hook'lar Claude Code'un ortamını devralır; bu yüzden masaüstü terminalinden başlatılan Claude Code sorunsuz çalışır. SSH üzerinden, bir systemd servisinden, bir container içinde veya ilk olarak SSH'tan başlatılmış bir tmux sunucusunda başlatılan Claude Code'da bu adres olmayabilir ve bildirim hiçbir yere gitmez. claude'u başlattığınız shell'de echo $DBUS_SESSION_BUS_ADDRESS çalıştırın; boşsa o oturumdan gelen masaüstü bildirimleri görünmez. Bu kurulumlar tmux kılavuzunda ve SSH kılavuzunda ele alınıyor.
08Claude Code Notifier'ın yeri
Makinenin başında çalışıyorsanız yukarıdaki hook'lar iyi bir seçimdir. Ancak masadan kalktığınızda size ulaşamazlar ve bir masaüstü bildirimi Claude'a yanıt veremez.
Claude Code Notifier, Claude Code'un hook'ları üzerine kurulmuş bağımsız bir araçtır (Anthropic değil, TouchTap tarafından geliştirilmiştir). Ücretsiz komut satırı aracı ccn, Mac, Windows ve Linux'ta çalışır. Linux'ta:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
veya Node.js kuruluysa npx @touchtap/ccn. Hook girdilerini ~/.claude/settings.json dosyasına ekler, geri kalan her şeyi olduğu gibi bırakır ve bir yedek tutar. Bundan sonra Claude işini bitirdiğinde, izin gerektiğinde veya bir soru sorduğunda Linux masaüstü bildirimi gösterir. Bu kısım ağ veya telefon gerektirmez. Her olay için birkaç milisaniye çalışır; arka planda sürekli çalışan hiçbir şey yoktur.
Bir iPhone veya Android telefon eşleştirdiğinizde aynı olaylar, masaüstü olmayan bir makinede bile push bildirimi olarak gelir. Telefondan bir izni onaylayabilir veya reddedebilir, Claude'un sorusuna yanıt seçebilir ve Claude işini bitirdikten sonra bir sonraki talimatı gönderebilirsiniz. Telefon uygulamaları için telefon eşleştirme, ccn sayfası ve fiyatlandırma sayfalarına bakın. Linux'ta ccn, token'ını yalnızca sizin okuyabileceğiniz bir dosyada saklar.
ccn'i kurarsanız, yinelenen bildirimlerden kaçınmak için kendi notify-send hook'larınızı kaldırın.
09SSS
notify-send neden terminalimde çalışıyor da hook'ta çalışmıyor?
Hook'un genellikle bir D-Bus oturum adresi yoktur; çünkü Claude Code SSH üzerinden, bir container içinde ya da bu adres olmadan başlatılmış bir tmux sunucusunda başlatılmıştır. Claude Code'u bir masaüstü terminalinden başlatın ya da bunun yerine telefona push kullanın.
notify-send hangi pakette bulunur?
Debian ve Ubuntu'da libnotify-bin, Fedora ve Arch'ta libnotify. Ayrıca bir bildirim daemon'una ihtiyacınız var; tam masaüstü ortamlarında bu zaten bulunur.
Wayland'de çalışır mı?
Evet. notify-send D-Bus kullandığı için, bir bildirim daemon'u çalıştığı sürece Wayland'de de X11'de de aynı şekilde çalışır.
Bildirimin ben görene kadar ekranda kalmasını nasıl sağlarım?
notify-send komutuna -u critical ekleyin. Çoğu daemon kritik bildirimleri siz kapatana kadar ekranda tutar.
Headless bir Linux sunucusunda Claude Code bildirimleri alabilir miyim?
Masaüstü bildirimi olarak alamazsınız, çünkü ortada bir masaüstü yok. SSH terminaliniz üzerinden bir escape sequence ya da ccn'in telefon uygulaması gibi bir push servisi kullanın. Seçenekler SSH rehberinde karşılaştırılıyor.