macOS menü çubuğu widget'ı — Claude haftalık kullanımını tek bakışta gösteriyor. claude.ai/settings/usage'daki verinin aynısı, canlı menü çubuğunda, üstüne zengin bir dropdown.
💻 Bu macOS sürümü. Windows'ta mısın? → claude-usage-widget-windows
🌐 English README · Ücretsiz, açık kaynak (MIT), Apple imzalı binary Releases sayfasında
… ☀︎ 22°C 🤖 %32 🔊 12:46 ← hava durumunun yanına oturur
┌──────────────────────────────────────────┐
│ Nurullah [Max 20x] │ ← isim + plan rozeti
│ ──────────────────────────────────── │
│ BU HAFTA 3g 18s kaldı │
│ Tüm modeller ████████░░░░░░░░░ %32 │
│ Sonnet █░░░░░░░░░░░░░░░░ %2 │
│ ↗ Hafta sonu tahmini: %64 │ ← burn-rate tahmini
│ ╭───────●─ ─ ─ ─ ─ ─ ─◌╮ │ ← 7 günlük trend + projeksiyon
│ ──────────────────────────────────── │
│ 5 SAATLİK PENCERE 2s 38dk kaldı │
│ Kullanım ██░░░░░░░░░░░░░░░░ %7 │
│ ──────────────────────────────────── │
│ Güncelleme: 12:46 │
│ ──────────────────────────────────── │
│ Ayarlar… ⌘, │
│ Şimdi yenile ⌘R │
│ claude.ai/settings/usage'ı aç ⌘U │
│ Çıkış ⌘Q │
│ nurullah.net ↗ @nurullah ↗ │
└──────────────────────────────────────────┘
Bir menü çubuğu uygulamasında genellikle yan yana bulunmayan birkaç özellik:
- 🍩 Menü çubuğu başlığına gömülü donut halkalar. Her veri minik bir halka olarak çizilebilir (ayrı pencere değil, popup değil — gerçekten başlığın içinde), ve her birinin rengini bağımsız seçersin.
- 🔮 Burn-rate tahmini. Dropdown sana "↗ Hafta sonu tahmini: %64" der, hafta ortasındayken. Hızın 100'ü aşıyorsa "⚠ Bu hızla yaklaşık 1g 8s sonra limit" olur.
- 📈 İlk gün bile anlamlı görünen sparkline. Veri birikmesini beklemek yerine, ilk yenilemeden itibaren
haftaBaşı (%0) → bugün (gerçek) → haftaSonu (tahmin, kesik)çizer. - 🤝 Aynı binary'nin içine gömülü MCP server. Claude Code'un kendisi
get_usage'ı çağırıp uzun bir görev öncesi haftalık limitini görebilir. Tek JSON parçası, Claude Code'a tek restart. - 🌐 Yerel HTTP + CLI modları — Raycast, Alfred, tmux, shell script'ler için. Aynı veri, üç farklı okuma yolu.
- 🦊 Çoklu tarayıcı failover. Chrome, Brave, Edge, Arc — sadece kullandıklarını aç; widget sırayla dener, geçerli claude.ai oturumu bulan ilk tarayıcı kazanır.
- 🔔 Edge-triggered eşik bildirimleri. Üç ayarlanabilir seviye (uyarı / alarm / kritik) haftada her seviye için bir kez tetiklenir — eşik etrafında dolaşırsan spam yok. Haftalık reset sonrası otomatik hazır olur.
- 🎚 Gerçek bir ayarlar penceresi, iç içe submenu değil. Tüm seçenekler tek bakışta. Özel emoji alanına tıkla, macOS Emoji Picker otomatik açılır.
- 🔐 İmzalı & notarize —
xattrnumarası yok. /Applications'a sürükle, çift tıkla, bitti. - 🪙 Üçüncü taraf servis yok. Sparkle yok, Sentry yok, analytics endpoint yok, telemetri SDK'sı yok. Tek dışarı trafik claude.ai (kullanım verisi) ve api.github.com (günlük sürüm kontrolü, kapatılabilir).
- 🎯 Gerçek haftalık limit % — claude.ai'ın kendi kullandığı API'den
- 🍩 Veri bazlı görüntüleme —
Haftalık %,Haftalık kalan süre,5 saatlik %,5 saatlik kalan süre— her biri bağımsız olarak gizlenebilir, yazı olarak gösterilebilir, ya da seçtiğin renkte küçük bir inline donut halka olarak gösterilebilir - 🤖 Simge seçimi — 8 emoji hazır seçenek, kendi özel emojin, yüzdeyi dolduran donut özet, ya da hiç simge yok
- 📊 Hesap başlığı (isim + plan rozeti —
Max 20x,Pro, vb.) - 🟢 Renkli yuvarlatılmış bar'lar (limite yaklaştıkça yeşil → sarı → turuncu → kırmızı)
- 🔮 Burn-rate tahmini — "↗ Hafta sonu tahmini: %64" veya "⚠ Bu hızla yaklaşık 1g 8s sonra limit"
- 📈 Trend grafiği — geçmiş örnekler + 7 günlük zaman çizelgesinde projeksiyon
- 🪟 5 saatlik rolling pencere için ayrı bölüm
- 🌍 Otomatik dil — English, Türkçe, Deutsch, Español, Français
- Tüm tercihler tek bakışta, iç içe menü yok
- Eşik bildirimleri (uyarı / alarm / kritik) — slider'larla ayarlanır
- Yenileme aralığı (30sn · 1dk · 5dk · 10dk)
- Genel klavye kısayolu — dropdown'ı her yerden aç (varsayılan ⌥⌘U)
- Çoklu tarayıcı cookie kaynağı — Chrome · Brave · Edge · Arc (tüm Chromium kardeşleri)
- 🤝 MCP sunucu modu — Claude Code'un kendisi
get_usagearacı ile haftalık limitini görebilir - 🌐 Yerel HTTP endpoint
127.0.0.1:9123üzerinde — Raycast/Alfred/tmux entegrasyonları için - 🖥 CLI mod —
ClaudeUsageWidget --print-usageshell script'leri için JSON döker
- ✅ Apple Developer ID ile imzalı & notarize — Gatekeeper uyarısı yok
- 🪶 Boştayken ~%0 CPU
- 🔒 Hiçbir şifre saklamaz — mevcut tarayıcı cookie'sini macOS Keychain üzerinden okur, tarayıcının kendi kullandığı yol
- 🔄 Otomatik sürüm kontrolü GitHub Releases üzerinden (Sparkle yok, üyelik yok, üçüncü taraf yok)
- Releases sayfasından en son
ClaudeUsageWidget.zip'i indir - Aç →
ClaudeUsageWidget.app'i/Applications'a sürükle - Çift tıkla. Binary imzalı ve notarize olduğu için macOS uyarısız açar.
- (İsteğe bağlı) Menü çubuğu simgesi → Ayarlar → açılışta başlatmayı aç, kısayolunu ayarla, eşikleri yapılandır, vb.
cp install/local.claude-usage-widget.plist ~/Library/LaunchAgents/
# .app'in yolu /Applications dışındaysa plist içinden düzenle
launchctl load -w ~/Library/LaunchAgents/local.claude-usage-widget.plistlaunchctl unload ~/Library/LaunchAgents/local.claude-usage-widget.plist 2>/dev/null
rm -rf /Applications/ClaudeUsageWidget.app \
~/Library/LaunchAgents/local.claude-usage-widget.plist \
~/.claude-usage-widget-cache.json \
~/.claude-usage-widget-history.json
defaults delete app.claude-usage-widget 2>/dev/null| Bileşen | Neden |
|---|---|
| macOS 12+ | Native Cocoa uygulaması |
| Chromium tabanlı tarayıcı + aktif claude.ai oturumu | Widget sessionKey'i tarayıcının cookie deposundan okur. Chrome, Brave, Edge ve Arc desteklenir — Ayarlar → Tarayıcılar'dan aç/kapat. |
| Claude.ai hesabı (Free, Pro, Max — herhangi bir plan) | Gösterilecek veri için |
Tarayıcı eklentisi yok, API key yok, masaüstü Claude uygulaması yok. Sadece tarayıcı + claude.ai'da açık oturum.
İlk açılışta macOS, tarayıcı cookie anahtarını okumak için Keychain izni ister. Always Allow / Her zaman izin ver seç.
Dropdown'u aç → Ayarlar… (⌘,)
| Bölüm | İçerik |
|---|---|
| Başlık içeriği | Haftalık %, Haftalık kalan süre, 5 saatlik %, 5 saatlik kalan süre — her biri için: gizle / yazı / donut. Donut'ta 8 renkten seç. |
| Simge | Hazır emoji (🤖🧠⚡✨◉●▲◐), özel emoji (alana tıklayınca macOS Emoji Picker otomatik açılır), donut özet, ya da simge yok. |
| Yenileme aralığı | 30 sn · 1 dk · 5 dk · 10 dk |
| Bildirimler | Eşik bildirimlerini etkinleştir. Üç seviye macOS-native bildirim (uyarı / alarm / kritik). Her seviye haftada bir kez tetiklenir (reset sonrası yeniden hazır olur). |
| Klavye kısayolu | Genel kısayolu aç/kapat. Varsayılan ⌥⌘U dropdown'u her yerden açar. |
| Tarayıcılar | Chrome, Brave, Edge, Arc'ı aç/kapat. Widget etkin olanları sırayla dener; geçerli oturum bulan ilk tarayıcı kazanır. |
| Ağ & entegrasyon | Günlük güncelleme kontrolü · Yerel HTTP endpoint :9123 · MCP kurulum talimatları |
Ayarlar → "MCP kurulum talimatları…" ~/.claude.json dosyasına yapıştıracağın JSON parçasını verir:
{
"mcpServers": {
"claude-usage": {
"command": "/Applications/ClaudeUsageWidget.app/Contents/MacOS/ClaudeUsageWidget",
"args": ["--mcp-server"]
}
}
}Claude Code'u yeniden başlattıktan sonra Claude get_usage'ı çağırıp haftalık limitini görebilir — uzun bir görev öncesi faydalı.
Ayarlar → "Yerel HTTP endpoint (:9123)"'i aç:
$ curl localhost:9123/usage
{
"display_name": "Nurullah",
"fetched_at": "2026-05-13T00:42:00Z",
"five_hour_resets_at": "2026-05-13T03:10:00Z",
"five_hour_utilization_pct": 7,
"plan": "Max 20x",
"weekly_resets_at": "2026-05-16T05:00:00Z",
"weekly_utilization_pct": 32
}Sadece 127.0.0.1 üzerinde dinler. Dışarıya hiçbir zaman açılmaz.
$ /Applications/ClaudeUsageWidget.app/Contents/MacOS/ClaudeUsageWidget --print-usageAynı JSON, hemen çıkar. Shell script'leri, statusline'lar için.
Xcode Command Line Tools gerekir.
git clone https://github.com/turkbil/claude-usage-widget.git
cd claude-usage-widget
./build.sh
open ClaudeUsageWidget.appBuild imzasız bir .app üretir. Resmi imzalı/notarize binary için Releases sayfasını kullan.
┌──────────────────┐ SQLite + AES-128-CBC ┌─────────────────┐
│ Tarayıcı cookie │ ────────────────────────────▶│ sessionKey │
│ (şifreli) │ anahtar macOS Keychain'den │ (çözülmüş) │
└──────────────────┘ └────────┬────────┘
│
Cookie: sessionKey=...
▼
┌──────────────────────────────────────────┐
│ GET claude.ai/api/organizations/{id}/ │
│ usage (seven_day.* + five_hour.*) │
│ GET claude.ai/api/account (isim) │
│ GET claude.ai/api/.../rate_limits (plan) │
└────────────────┬─────────────────────────┘
▼
┌──────────────────────────────┐
│ Menü çubuğu UI · 60s'de yen │
│ + 5dk'da bir history örneği │
│ + eşik bildirimleri │
│ + sparkline trend │
└──────────────────────────────┘
Widget şifreni asla görmez. Tarayıcının kendisinin kullandığı şifreli-cookie + Keychain mantığını kullanır — macOS'taki her tarayıcı saklanmış cookie'ler için aynı şeyi yapar.
- Telemetri yok. Analytics yok. Üçüncü taraf çökme raporu yok. Tek dışarı çıkan trafik claude.ai'a HTTPS (kullanım verisi) ve günde bir kez
api.github.com'a (sürüm kontrolü, kapatılabilir). - Cookie diske yazılmaz. Sadece bellekte.
- Saklanan dosyalar (toplam ~70 KB):
~/.claude-usage-widget-cache.json— son snapshot~/.claude-usage-widget-history.json— 14 günlük sparkline örnekleri
- Ayarlar
defaults(UserDefaults) içinde.
Widget macOS tercih edilen dilini otomatik algılar, İngilizce'ye geri düşer.
| 🇬🇧 | English (varsayılan) |
| 🇹🇷 | Türkçe |
| 🇩🇪 | Deutsch |
| 🇪🇸 | Español |
| 🇫🇷 | Français |
Dil eklemek için Resources/en.lproj/Localizable.strings'i Resources/<kod>.lproj/Localizable.strings olarak kopyala, değerleri çevir, build.sh içindeki CFBundleLocalizations'a kodu ekle, PR aç.
| Belirti | Çözüm |
|---|---|
🤖 ? + "claude.ai oturumu yok" |
Tarayıcını aç, claude.ai'a giriş yap. Giriş yaptığın tarayıcının Ayarlar → Tarayıcılar'da etkin olduğundan emin ol. |
🤖 ? + "Keychain erişimi reddedildi" |
İlk açılışta Keychain prompt'u çıkar — Always Allow de. Resetlemek için: Keychain Access → "Chrome Safe Storage" → Access Control → ClaudeUsageWidget'ı ekle. |
HTTP 401 |
claude.ai oturumun süresi dolmuş. Tarayıcında yeniden giriş yap. |
| Eski yüzde | Dropdown → Şimdi yenile (⌘R) |
| Menü çubuğunda hiçbir şey yok | /tmp/claude-usage-widget.err.log'a bak. Uygulama çalışıyor mu (pgrep ClaudeUsageWidget). |
| Çökme | macOS otomatik olarak ~/Library/Logs/DiagnosticReports/'a crash log yazar. GitHub'da issue aç, log'u yapıştır. |
- Hızlı aç: ⌥⌘U her yerden dropdown'u açar (Ayarlar'dan değiştirilebilir).
- Donut + yazı gizli = en temiz menü çubuğu görünümü. Her veriyi farklı renkte "Donut" yap → menü çubuğunda 4 ufak halka, sayı kalabalığı yok.
- Polling'i yavaşlat: pildeyken yenileme aralığını 10 dk yap — saatlik API çağrısı 6'ya düşer.
- Terminal alias'ı:
alias claude-status='ClaudeUsageWidget --print-usage | jq .weekly_utilization_pct'ekle. - Tahmin %100'ü geçince: dropdown kırmızı "bu hızla X süre sonra limit" mesajına döner — yavaşlama vakti.
- Çoklu tarayıcı: iş için bir tarayıcı, kişisel için başka kullanıyorsan ikisini de aç — widget hangisinde claude.ai oturumu varsa ondan okur.
.
├── Sources/ 13 Swift dosyası
│ ├── main.swift # AppDelegate, popup, menu, refresh döngüsü
│ ├── Preferences.swift # Codable ayarlar + UserDefaults store
│ ├── SettingsWindow.swift # Tüm tercihleri içeren NSWindow
│ ├── TitleRenderer.swift # Menü çubuğu başlığı için NSAttributedString
│ ├── DonutImage.swift # Inline donut NSImage çizer
│ ├── BrowserCookieReader.swift # Chrome/Brave/Edge/Arc cookie decrypt
│ ├── ClaudeApi.swift # claude.ai API client (şu an main.swift içinde)
│ ├── Forecast.swift # Burn-rate projeksiyon mantığı
│ ├── UsageHistory.swift # Sparkline örnek buffer'ı (14 günlük cap)
│ ├── NotificationManager.swift # Eşik bildirimleri (UserNotifications)
│ ├── HotKeyManager.swift # Carbon RegisterEventHotKey wrapper'ı
│ ├── VersionChecker.swift # Günlük GitHub Releases polling
│ ├── LocalHTTPServer.swift # 127.0.0.1:9123 üzerinde NWListener
│ ├── MCPServer.swift # JSON-RPC over stdio
│ └── CLIRunner.swift # --print-usage one-shot modu
├── Resources/{en,tr,de,es,fr}.lproj/Localizable.strings
├── .github/workflows/release.yml # Tag push'unda imzala + notarize + yayınla
├── build.sh # .app derler
├── install/local.claude-usage-widget.plist # LaunchAgent template
└── docs/feature-preview.html # Tasarım önizleme / katalog
Nurullah Okatan — nurullah.net · @nurullah
MIT © Nurullah Okatan
Anthropic ile bağlı değildir. "Claude", Anthropic'in markasıdır.