desk-notify
Bir soru ya da bir plan cevabınızı beklerken ve bir tur bittiğinde ya da düştüğünde masaüstü bildirimi gönderen bir Claude Code Mod'u. Başka bir pencerede duran bir session fark edilmeden beklemez.
Ne yapar
- Model
AskUserQuestionçağırınca mod, soru sizi beklemeye başlamadan önceQuestion awaiting your answergönderir. - Model
ExitPlanModeçağırınca, onay sizi beklemeye başlamadan öncePlan awaiting your approvalgönderir. - Bir ana döngü turu bitince (
Stop)Turn finishedgönderir. Bir subagent'ın bitişiSubagentStopolayıdır ve hiçbir şey göndermez. - Bir API hatası bir turu bitirince (
StopFailure)Turn failedgönderir; yanında hatanın ilk satırı, 60 karakterde kesilmiş ve markdown işaretleri atılmış olarak durur. Hata metni yoksa turun son sözleri onun yerini alır. - Her bildirim
Claude Codesubtitle'ını ve proje adını taşır: git worktree içinde de ana repository, yoksa git kökü, yoksa session'ın dizini. Ad session başında bir kere okunur, yani bir shellcdonu değiştirmez.
Bildirim komutu hemen döner ve 5 saniye sonra öldürülür, yani takılan bir bildirim daemon'ı hiçbir tool çağrısını bekletmez:
| Masaüstü | Komut |
|---|---|
| macOS | osascript -e 'display notification ...' |
| Linux | notify-send <title> <subtitle ve gövde> (subtitle alanı yoktur) |
| Windows | hiçbir tıklamayı beklemeyen bir PowerShell toast'ı |
Masaüstü session başına bir kere okunur: OS=Windows_NT Windows'u adlandırır, yoksa uname -s Darwin ya da Linux adını verir. Başka bir sistemde mod bunu bir kere söyler ve hiçbir şey göndermez. Başarısız olan ya da bulunmayan bir bildirim komutu, başka bir hata onun yerini alana kadar, bir kere transcript satırı olarak raporlanır.
2.1.282 üzerindeki canlı kontrolde modelin AskUserQuestion ile sorduğu bir soru, soru görünmeden önce osascript'i exit 0 ile çalıştırdı.
Komut
/desk-notify masaüstü ve her olayın ayarı
/desk-notify ask on | off cevabınızı bekleyen bir soru
/desk-notify plan on | off onayınızı bekleyen bir plan
/desk-notify stop on | off biten ya da düşen bir tur
Her olay varsayılan olarak on'dur ve ayarı session'lar arasında saklanır.
Kurulum
claude plugin marketplace add KilimcininKorOglu/claude-code-mods
claude plugin install desk-notify@kilimcininkoroglu-mods
Function hook'lar early access. Flag olmadan hiçbir şey yüklenmez. Flag'i kalıcı yapmak için ~/.claude/settings.json dosyasına ekleyin:
{ "env": { "CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1" } }
Kurulumdan sonra
- Claude Code'u yeniden başlatın.
- macOS'ta bildirim görünmezse System Settings > Notifications içinde
osascriptbildirimlerinin altında göründüğü uygulamayı kontrol edin. Linux'tanotify-send'i (libnotify) kurun. - Bu bildirimleri zaten gönderen kendi hook'unuzu kaldırın, yoksa her olay iki bildirim gönderir.
Nereye uzanır
Claude Code 2.1.282 üzerinde claude plugin validate ile doğrulandı:
❯ ./register.ts hooks: session.start, command.run{command=desk-notify}, tool.call{tool=/"^AskUserQuestion$"/}, tool.call{tool=/"^ExitPlanMode$"/}, classic.Stop, classic.StopFailure
❯ ./register.ts calls: $.command.register, $.env.get (via readPlatform), $.process.run (via gitOut, readPlatform, send), $.session.cwd (via readProject), $.store.get (via readSettings), $.store.set (via runCommand), $.ui.log
❯ ./register.ts env reads: OS
Reach L2, process çalıştırır.
1. Okur: OS değişkenini, her çağrının tool adını, ve düşen bir turun hata metnini ve son assistant mesajını
2. Çalıştırır: session başına bir kere uname -s ve iki git rev-parse; her bildirim için bir osascript, notify-send ya da powershell.exe
3. Gönderir: sabit bir başlık, proje adı ve düşen bir turda hatanın 60 karakteri ile bir masaüstü bildirimi; model'e hiçbir şey, makineden dışarı hiçbir şey
4. Saklar: $.store içinde her olayın on/off ayarını
5. Düşman girdi: proje adı ve hata metni AppleScript ve PowerShell string literal'leri için escape edilir ve notify-send'e tek bir argv elemanı olarak geçer, yani ikisi de komut çalıştıramaz
Sınırlar
- macOS bildiriminin kendi ikonu yoktur:
display notificationikon argümanı almaz. - Sizin kestiğiniz bir turun
Stopolayı raise edip etmediği ölçülmedi. - Linux ve Windows komutları canlı ölçülmedi.
Geliştirme
make install # eslint, typescript-eslint, typescript
make lint # complexity limiti 10, üstünde build'i düşürür
make typecheck # /plugin-types ile üretilen .claude/types/ gerekir
make validate
make test # claude plugin test