Lightweight desktop activity tracker for Windows that sends heartbeats to WakaTime. Tracks what apps you use, how long you spend in each, and what languages you're coding in — all without browser extensions or editor plugins.
- Activity tracking via Windows API — foreground window, process name, keyboard/mouse idle detection
- WakaTime integration — sends heartbeats with proper OS, hostname, language, and category data
- Language detection — parses editor window titles to figure out what language you're working in (490+ languages with GitHub Linguist colors)
- 170+ built-in app mappings — editors, browsers, terminals, design tools, communication apps, and more
- Custom filters — map any process to any WakaTime category
- Dark GUI with tabbed layout (Dashboard, Settings, Activity Log, Custom Filters)
- System tray — close minimizes to tray, right-click to show or quit
- Windows autostart — optional registry entry, auto-starts tracking on boot
- Persistent daily data — survives restarts, resets at midnight
- Customizable category colors via hex values
| Settings | Custom Filters |
|---|---|
![]() |
![]() |
git clone https://github.com/your-user/waka-go.git
cd waka-go
go build -o wakago.exe ../wakago.exe- Open Settings tab
- Paste your WakaTime API key
- Set a project name (shows up on your WakaTime dashboard)
- Hit Save All Settings
- Go to Dashboard and click Start Tracking
WakaGo polls the foreground window every 2 seconds using Win32 API calls (GetForegroundWindow, GetWindowTextW, GetModuleBaseNameW). It categorizes each process into one of WakaTime's 23 categories and sends heartbeats via the WakaTime Heartbeat API.
For language detection, it parses the window title of known editors (VS Code, JetBrains, Visual Studio, Sublime, Vim, etc.) looking for file extensions. No plugins needed — if your editor shows the filename in the title bar, WakaGo picks it up.
Idle detection uses GetLastInputInfo with a 30-second threshold. If you stop typing/moving the mouse, it pauses tracking until you come back.
VS Code, VS Code Insiders, Cursor, Windsurf, Zed, Sublime Text, Notepad++, Vim, Neovim, Neovide, Emacs, Eclipse, Helix, Lapce, Lite-XL, Kakoune, Kate, Geany, CodeBlocks, CodeLite, UltraEdit, Nova, TextMate
IntelliJ IDEA, PhpStorm, WebStorm, PyCharm, GoLand, Rider, CLion, RubyMine, DataGrip, DataSpell, Fleet, Aqua, RustRover
Claude, Codex, Copilot, Aider, Continue, Tabby, Codeium, Antigravity
Windows Terminal, Alacritty, WezTerm, Hyper, Kitty, ConEmu, Cmder, Mintty, PuTTY, MobaXterm, cmd, PowerShell, Git Bash, WSL, Rio, Warp, Ghostty
Chrome, Firefox, Edge, Brave, Opera, Vivaldi, Arc, Zen, Floorp, Waterfox, LibreWolf, Thorium, Chromium, Tor, qutebrowser, Ladybird, Mullvad Browser, Pale Moon, Min
Slack, Discord, Teams, Telegram, Signal, WhatsApp, Element, Guilded, Skype, Zoom, Webex, Outlook, Thunderbird, Vesktop, Beeper, Mattermost, Rocket.Chat, Zulip
Figma, Photoshop, Illustrator, After Effects, Premiere Pro, InDesign, Lightroom, Blender, GIMP, Inkscape, Krita, Sketch, Lunacy, Canva, Affinity Designer/Photo, DaVinci Resolve, OBS, Paint.NET
Docker, Lens, DBeaver, HeidiSQL, MySQL Workbench, pgAdmin, SSMS, TablePlus, Beekeeper Studio, Postman, Insomnia, Bruno
GitKraken, SourceTree, Fork, GitHub Desktop, TortoiseGit, Lazygit
Obsidian, Notion, OneNote, Typora, Mark Text, Logseq, Word, Excel, PowerPoint
WakaGo detects 90+ file extensions from editor window titles, including:
Go, Rust, Python, JavaScript, TypeScript, JSX, TSX, Java, Kotlin, C#, F#, C, C++, Ruby, PHP, Swift, Objective-C, Dart, Lua, R, Scala, Clojure, Elixir, Erlang, Haskell, OCaml, Zig, Nim, V, D, Julia, Perl, Shell, Bash, PowerShell, SQL, HTML, CSS, SCSS, Sass, Less, Vue, Svelte, Astro, JSON, YAML, TOML, XML, Markdown, MDX, LaTeX, Dockerfile, GraphQL, Protocol Buffers, HCL, Solidity, Move, Prisma, WebAssembly
Each language is displayed with its official GitHub Linguist color (490+ colors included).
waka-go/
├── main.go # entry point, wiring
├── config/
│ ├── config.go # settings persistence (~/.waka-go/config.json)
│ ├── activity.go # daily activity persistence
│ └── autostart.go # windows registry autostart
├── tracker/
│ ├── tracker.go # core types (Activity, Monitor interface)
│ ├── window.go # foreground window monitor (Win32 API)
│ ├── input.go # keyboard/mouse idle detection
│ ├── browser.go # browser tab categorization
│ └── categories.go # 170+ app-to-category mappings, language detection
├── wakatime/
│ └── client.go # heartbeat API client with dedup
├── gui/
│ ├── app.go # main window, tabs, system tray
│ ├── donut.go # bar chart widget, chart data store
│ ├── langcolors.go # 490 GitHub Linguist language colors
│ └── theme.go # custom dark theme
└── assets/ # screenshots
Settings are stored in ~/.waka-go/config.json. Daily activity data goes to ~/.waka-go/activity.json and resets automatically at midnight.
WakaGo maps apps to all 23 WakaTime categories:
advising · ai coding · animating · browsing · building · code reviewing · coding · communicating · configuring · debugging · designing · indexing · learning · manual testing · meeting · notes · planning · researching · running tests · supporting · translating · writing docs · writing tests
MIT



