Skip to content

VEX-Systems/waka-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WakaGo

Go WakaTime Platform Fyne License

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.

Dashboard

Features

  • 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

Screenshots

Settings Custom Filters
Settings Filters

Getting Started

Prerequisites

  • Go 1.25+ (uses Fyne, which requires a C compiler — TDM-GCC works)
  • A WakaTime account and API key

Build

git clone https://github.com/your-user/waka-go.git
cd waka-go
go build -o wakago.exe .

Run

./wakago.exe
  1. Open Settings tab
  2. Paste your WakaTime API key
  3. Set a project name (shows up on your WakaTime dashboard)
  4. Hit Save All Settings
  5. Go to Dashboard and click Start Tracking

How It Works

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.

Supported Applications

Editors & IDEs

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

JetBrains Suite

IntelliJ IDEA, PhpStorm, WebStorm, PyCharm, GoLand, Rider, CLion, RubyMine, DataGrip, DataSpell, Fleet, Aqua, RustRover

AI Coding Tools

Claude, Codex, Copilot, Aider, Continue, Tabby, Codeium, Antigravity

Terminals

Windows Terminal, Alacritty, WezTerm, Hyper, Kitty, ConEmu, Cmder, Mintty, PuTTY, MobaXterm, cmd, PowerShell, Git Bash, WSL, Rio, Warp, Ghostty

Browsers

Chrome, Firefox, Edge, Brave, Opera, Vivaldi, Arc, Zen, Floorp, Waterfox, LibreWolf, Thorium, Chromium, Tor, qutebrowser, Ladybird, Mullvad Browser, Pale Moon, Min

Communication

Slack, Discord, Teams, Telegram, Signal, WhatsApp, Element, Guilded, Skype, Zoom, Webex, Outlook, Thunderbird, Vesktop, Beeper, Mattermost, Rocket.Chat, Zulip

Design & Media

Figma, Photoshop, Illustrator, After Effects, Premiere Pro, InDesign, Lightroom, Blender, GIMP, Inkscape, Krita, Sketch, Lunacy, Canva, Affinity Designer/Photo, DaVinci Resolve, OBS, Paint.NET

DevOps & Databases

Docker, Lens, DBeaver, HeidiSQL, MySQL Workbench, pgAdmin, SSMS, TablePlus, Beekeeper Studio, Postman, Insomnia, Bruno

Git GUIs

GitKraken, SourceTree, Fork, GitHub Desktop, TortoiseGit, Lazygit

Notes & Docs

Obsidian, Notion, OneNote, Typora, Mark Text, Logseq, Word, Excel, PowerPoint

Supported Languages

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).

Project Structure

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

Config

Settings are stored in ~/.waka-go/config.json. Daily activity data goes to ~/.waka-go/activity.json and resets automatically at midnight.

WakaTime Categories

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

License

MIT

About

Track your daily computer usage with WakaTime.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages