{"id":50772920,"url":"https://github.com/eyalm321/clawdpanel","last_synced_at":"2026-06-11T21:00:38.245Z","repository":{"id":360772034,"uuid":"1251639100","full_name":"Eyalm321/clawdpanel","owner":"Eyalm321","description":"A retro-styled desktop HUD for Claude Code. Monitor token usage, switch accounts, dock across monitors, and stream Lo-Fi radio — all from a native cross-platform utility bar (Windows / macOS / Linux).","archived":false,"fork":false,"pushed_at":"2026-06-05T07:17:52.000Z","size":3139,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-05T09:10:00.504Z","etag":null,"topics":["anthropic","claude","claude-ai","claude-code","desktop-app","golang","hud","linux","macos","radio","retro","statusbar","taskbar","tui","usage","usage-tracking","wails","windows"],"latest_commit_sha":null,"homepage":"https://github.com/Eyalm321/claudepanel/releases/latest","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Eyalm321.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["Eyalm321"]}},"created_at":"2026-05-27T19:22:03.000Z","updated_at":"2026-06-05T07:17:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Eyalm321/clawdpanel","commit_stats":null,"previous_names":["eyalm321/claudepanel","eyalm321/clawdpanel"],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/Eyalm321/clawdpanel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyalm321%2Fclawdpanel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyalm321%2Fclawdpanel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyalm321%2Fclawdpanel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyalm321%2Fclawdpanel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Eyalm321","download_url":"https://codeload.github.com/Eyalm321/clawdpanel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eyalm321%2Fclawdpanel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34217312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","claude","claude-ai","claude-code","desktop-app","golang","hud","linux","macos","radio","retro","statusbar","taskbar","tui","usage","usage-tracking","wails","windows"],"created_at":"2026-06-11T21:00:25.908Z","updated_at":"2026-06-11T21:00:38.228Z","avatar_url":"https://github.com/Eyalm321.png","language":"Go","funding_links":["https://github.com/sponsors/Eyalm321"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"logo.png\" alt=\"ClawdPanel logo\" width=\"160\" /\u003e\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e👾 ClawdPanel\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eA retro-styled desktop HUD for Claude Code.\u003c/strong\u003e\u003cbr/\u003e\nMonitor token usage, switch accounts, dock across monitors, and stream Lo-Fi radio — all from a native cross-platform utility bar.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Go-1.25-00ADD8?logo=go\u0026logoColor=white\" alt=\"Go 1.25\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Wails-v2-DF0067\" alt=\"Wails v2\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platforms-Windows%20%7C%20macOS%20%7C%20Linux-success\" alt=\"Windows | macOS | Linux\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/RAM-~6MB-orange\" alt=\"~6MB RAM\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"MIT License\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"bar.png\" alt=\"Bar layout\" /\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cem\u003eAlways-on-top · Frameless · Multi-monitor Dock · Pin / auto-hide on hover · System tray · Multi-account\u003c/em\u003e\u003c/p\u003e\n\n---\n\n## 💡 Why ClawdPanel?\n\nA permanent lightweight desktop HUD for Claude Code users — live token monitoring, multi-account switching, cross-monitor docking, retro terminal aesthetics, ambient Lo-Fi radio, zero-browser workflow.\n\nUnlike browser dashboards or terminal-only tools, ClawdPanel lives directly in your desktop environment with native OS integrations: Windows AppBar reservation, macOS LaunchAgents, Linux `_NET_WM_STRUT_PARTIAL`, system-tray everywhere.\n\n## 👤 Built for\n\n- Claude Code power users running long sessions\n- Teams juggling multiple Claude accounts\n- Terminal enthusiasts and retro / CRT-aesthetic fans\n- Anyone who prefers a HUD over an extra browser tab\n\n---\n\n## 🎬 Demo\n\n\u003c!-- TODO: drop GIFs into docs/demo/ and replace this section with a 3-column table:\n| Themes | Auto-hide | Claude FM |\n|---|---|---|\n| ![](docs/demo/themes.gif) | ![](docs/demo/hide.gif) | ![](docs/demo/fm.gif) |\n--\u003e\n\n_Animated demos coming soon. For now, see [the bar layout above](#-clawdpanel) and the [themes](#-visual-design) section below._\n\n---\n\n## 🖥️ Core Features\n\n- **Live token usage** — weekly + hourly consumption, percentage, shaded progress bar, reset countdown\n- **Multi-account** — switch any number of Claude accounts (separate `~/.claude` paths) via tray or Settings\n- **Multi-monitor docking** — pick the target monitor at any time; reserves screen space on Windows + Linux X11\n- **Pin / auto-hide on hover** — unpin to slide the bar off-screen; cursor at top edge slides it back\n- **System tray** — switch account, switch monitor, toggle start-on-login, manage accounts, quit\n- **Start on login** — native autostart on all three platforms\n- **5 retro themes** — Claude, Fallout, Amber, Matrix, Dracula\n- **Headless Claude FM** — embedded Lo-Fi YouTube stream with custom volume control\n\n---\n\n## 🚀 Quick Start\n\nDownload from the [Releases](../../releases/latest) page:\n\n| Platform | File | Notes |\n|---|---|---|\n| Windows 10/11 x64 | `ClawdPanel-*-windows-amd64-setup.exe` | NSIS installer. Requires [WebView2 Runtime](https://go.microsoft.com/fwlink/p/?LinkId=2124703) (pre-installed on Win11). |\n| macOS 10.13+ (Intel + Apple Silicon) | `ClawdPanel-*-macos-universal.pkg` | Double-click to install to `/Applications`. |\n| Debian / Ubuntu | `clawdpanel_*_amd64.deb` | `sudo apt install ./clawdpanel_*_amd64.deb` |\n| Fedora / RHEL | `clawdpanel-*.x86_64.rpm` | `sudo dnf install ./clawdpanel-*.x86_64.rpm` |\n| Any Linux (portable) | `ClawdPanel-x86_64.AppImage` | `chmod +x ClawdPanel-x86_64.AppImage \u0026\u0026 ./ClawdPanel-x86_64.AppImage` |\n\nInstallers wire up Claude Code's `statuslineCommand` automatically and clean it up on uninstall — no terminal commands needed. AppImage users get a one-time first-run prompt instead.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eFirst-launch security warnings (unsigned v1)\u003c/strong\u003e\u003c/summary\u003e\n\n- **Windows** → SmartScreen \"Windows protected your PC\" → *More info* → *Run anyway*\n- **macOS** → \"ClawdPanel cannot be opened…\" → System Settings → Privacy \u0026 Security → *Open Anyway*, or right-click the .app → *Open*\n- **Linux .deb/.rpm** → no warnings (root install)\n- **AppImage** → no warnings (user-mode)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eBuild from source\u003c/strong\u003e\u003c/summary\u003e\n\nRequires Go 1.25+, Node.js 18+, Wails v2 CLI (`go install github.com/wailsapp/wails/v2/cmd/wails@latest`). On Linux also: `libgtk-3-dev`, `libwebkit2gtk-4.1-dev`, `libayatana-appindicator3-dev`, `pkg-config`.\n\n```bash\nwails dev                                         # hot-reload dev mode\nwails build -platform windows/amd64 -nsis         # Windows installer\nwails build -platform darwin/universal            # macOS .app (then build/darwin/scripts for .pkg)\nwails build -platform linux/amd64 -tags webkit2_41  # Linux binary (then nfpm/AppImage via build/linux/*)\n```\n\n\u003c/details\u003e\n\n---\n\n## 🎨 Visual Design\n\nFive distinct CRT-scanline-filtered themes, cycle on the fly:\n\n| Theme | Vibe |\n|---|---|\n| 🔸 **CLAUDE** (default) | Flat CLI — signature terracotta orange (`#d77757`), lavender badges (`#b1b9f9`), white headers |\n| 🟢 **FALLOUT** | Pip-Boy green HUD, outlined progress brackets, glowing CRT scanlines |\n| 🟡 **AMBER** | DEC VT100 / Fallout NV amber terminal — glowing values, dimmed labels |\n| 📟 **MATRIX** | Digital rain — sharp green characters, blinking caret synced to warning status |\n| 😈 **DRACULA** | Sleek dark mode — cyan labels, pastel pink progress |\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eClaude\u003c/strong\u003e \u0026nbsp;·\u0026nbsp; \u003cem\u003eterracotta + lavender, the default\u003c/em\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/themes/claude.png\" alt=\"Claude theme\" /\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eFallout\u003c/strong\u003e \u0026nbsp;·\u0026nbsp; \u003cem\u003ePip-Boy green with CRT scanlines\u003c/em\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/themes/fallout.png\" alt=\"Fallout theme\" /\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eAmber\u003c/strong\u003e \u0026nbsp;·\u0026nbsp; \u003cem\u003eDEC VT100 glowing amber\u003c/em\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/themes/amber.png\" alt=\"Amber theme\" /\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eMatrix\u003c/strong\u003e \u0026nbsp;·\u0026nbsp; \u003cem\u003edigital rain with dot dividers\u003c/em\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/themes/matrix.png\" alt=\"Matrix theme\" /\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eDracula\u003c/strong\u003e \u0026nbsp;·\u0026nbsp; \u003cem\u003edark mode with pastel pink progress\u003c/em\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/themes/dracula.png\" alt=\"Dracula theme\" /\u003e\u003c/p\u003e\n\n### Typography \u0026 TUI glyphs\n\n- **Developer-first font stack**: prefers Cascadia Mono / Cascadia Code, then SF Mono, Menlo, Fira Code, JetBrains Mono, DejaVu Sans Mono, Inconsolata — uses whatever's installed.\n- **Retro shaded meters**: usage rendered with `░▒▓█` glyphs that change shade with warning tier; unused cells are faint terminal middle dots (`·`).\n\n---\n\n## 🛠️ Advanced Features\n\n### Pin / auto-hide\n\nA pin icon to the right of THEME toggles:\n- **Pinned** (orange, tilted): docked, permanently visible — the default.\n- **Unpinned** (gray, upright): bar slides up off-screen; cursor at the top edge slides it back.\n\n\u003cdetails\u003e\n\u003csummary\u003eImplementation notes\u003c/summary\u003e\n\nGo-side cursor polling at 80 ms — WebView2's `mouseleave` is unreliable on a 28 px window. A 200 ms grace period prevents accidental dismissal on cursor overshoot. The slide animates the OS window's Y position at ~60 fps (ease-out cubic) with a `SetWindowRgn` clip that masks any portion that would spill onto a monitor sitting above. (Windows only at v1; on macOS / Linux the toggle still affects docked-vs-floating state but the slide is a no-op.)\n\n\u003c/details\u003e\n\n### Multi-monitor docking\n\nPick the target monitor from the tray menu. On Windows, **AppBar mode** uses `SHAppBarMessage` to reserve screen space — maximized windows automatically tile below. On Linux X11 it sets `_NET_WM_STRUT_PARTIAL` for compatible compositors. On macOS and Linux Wayland the bar floats at the topmost window level without reserving space.\n\n### Claude FM (headless Lo-Fi radio)\n\nEmbedded YouTube audio stream — no browser windows needed.\n\n- 📻 **Masked marquee**: when playing, the label scrolls `NOW PLAYING CLAUDE FM ·` horizontally behind a 75 px mask; reverts instantly on pause.\n- 🔊 **0–200 % volume range**: extended headroom mapped linearly to YouTube's `0–100`.\n- 🎛️ **Dual control**: scroll-wheel adjusts in 5 % steps; clicking `VOL` cycles in 10 % steps.\n- 💾 **State persistence**: volume and theme saved to `localStorage`.\n\n### Smart status overrides\n\nDynamic and static `OFFLINE` indicators are translated globally into a lavender **`IDLE`** badge (`#b1b9f9`) to preserve your active CLI context.\n\n---\n\n## 🧭 Architecture\n\n```\nClaude Code (CLI)\n       │\n       │  statuslineCommand hook\n       ▼\n~/.claude/rate_limits.json   ←  written every prompt\n       │\n       │  filesystem poll (refreshSeconds)\n       ▼\nClawdPanel backend (Go)\n       │\n       │  Wails IPC (JSON bindings)\n       ▼\nWebView frontend (HTML/CSS/JS)\n       │\n       └── OS integrations: AppBar / NSWindow / X11 dock,\n                            system tray, autostart, monitors\n```\n\n---\n\n## ⚙️ Configuration\n\nAuto-created on first run:\n\n| Platform | Path |\n|---|---|\n| Windows | `%APPDATA%\\ClawdPanel\\config.json` |\n| macOS | `~/Library/Application Support/ClawdPanel/config.json` |\n| Linux | `$XDG_CONFIG_HOME/ClawdPanel/config.json` (fallback `~/.config/ClawdPanel/config.json`) |\n\n```json\n{\n  \"monitor\": 0,\n  \"theme\": \"claude\",\n  \"opacity\": 0.92,\n  \"refreshSeconds\": 15,\n  \"barHeight\": 28,\n  \"appBarMode\": true,\n  \"startWithWindows\": false\n}\n```\n\n\u003e **Accounts** are managed inside the app — open **Manage accounts** from the system tray to add, rename, switch between, or remove Claude account paths. No JSON editing required.\n\n| Field | Description |\n|---|---|\n| `barHeight` | Pixel height of the bar |\n| `refreshSeconds` | Re-read interval for Claude data files |\n| `theme` | `claude`, `fallout`, `amber`, `matrix`, `dracula` |\n| `appBarMode` | Reserve screen space (Windows / Linux X11 only) |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow live usage capture works\u003c/strong\u003e\u003c/summary\u003e\n\nClawdPanel reads `~/.claude/rate_limits.json`, populated by Claude Code's `statuslineCommand` hook. Installers set this hook automatically and clear it on uninstall by editing `~/.claude/settings.json` (only the `statuslineCommand` key — other keys are preserved).\n\nIf you built from source or are using the AppImage and want to configure manually:\n\n```bash\nclaude config set statuslineCommand \"node -e \\\"const fs=require('fs');const p=require('path');const os=require('os');const d=fs.readFileSync(0,'utf-8');if(d){const parsed=JSON.parse(d);fs.writeFileSync(p.join(os.homedir(),'.claude','rate_limits.json'),JSON.stringify({...parsed,captured_at:Date.now()}))}\\\"\"\n```\n\nEvery Claude prompt then writes a tiny JSON payload to `rate_limits.json`, which ClawdPanel picks up instantly.\n\n\u003c/details\u003e\n\n---\n\n## 📁 Project Structure\n\n```\nclawdpanel/\n├── main.go                          # Wails bootstrap + embed directives\n├── app.go                           # App struct + Wails-exported bindings\n├── icon_{windows,darwin,linux}.go   # Per-OS tray icon embedding\n├── internal/\n│   ├── config/\n│   │   ├── config.go                # Config struct, Load/Save, cross-platform AppDataDir\n│   │   └── startup_{windows,darwin,linux}.go  # autostart (registry / LaunchAgent / .desktop)\n│   ├── claude/                      # Read Claude JSON files, compute BarData\n│   ├── platform/                    # Per-OS window + monitor APIs\n│   │   ├── window_{windows,darwin,linux}.go\n│   │   └── monitor_{windows,darwin,linux}.go\n│   └── tray/                        # System tray via fyne.io/systray\n├── frontend/                        # Wails webview UI\n└── build/\n    ├── windows/installer/           # NSIS template + statusline PowerShell script\n    ├── darwin/scripts/              # pkgbuild postinstall/preuninstall bash scripts\n    └── linux/                       # nfpm.yaml, .desktop, AppDir, AppRun, postinstall.sh\n```\n\n---\n\n## ⚠️ Known limitations (v1 cross-platform)\n\n- **Linux Wayland**: no portable protocol for \"stay above other windows\" or \"reserve screen space\". KWin honors `_NET_WM_WINDOW_TYPE_DOCK`; GNOME/Mutter mostly ignores it; wlroots compositors (Hyprland, Sway) vary. X11 sessions work correctly.\n- **macOS docking**: NSWindow at `NSStatusWindowLevel` floats above other windows but can't reserve screen space the way Windows AppBar does — accepted as macOS-native behavior.\n- **macOS Gatekeeper** (unsigned v1): see *First-launch security warnings* in Quick Start.\n- **Settings merge safety**: if `~/.claude/settings.json` already exists but contains invalid JSON, the installer logs a warning and skips the modification rather than overwriting it.\n\n---\n\n## 📄 License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feyalm321%2Fclawdpanel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feyalm321%2Fclawdpanel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feyalm321%2Fclawdpanel/lists"}