Skip to main content

Supported platforms

This page lists what the Desktop Agent can track today. Support means: the agent can resolve the focused application (name and, when possible, executable path) in a normal interactive session.

Operating systems

OSStatusHow focus is read
LinuxSupportedCompositor-specific backends (see below)
WindowsSupportedWin32 GetForegroundWindow + process image path
macOS (Darwin)SupportedAppleScript via System Events (osascript)

The agent is a single Go codebase with build tags per OS. You need a binary built for the target GOOS/GOARCH.

Linux desktop environments and compositors

Linux support depends on the session type (Wayland vs X11) and the compositor. The agent tries backends in order and uses the first one that returns a focused window.

Fully supported

EnvironmentSessionBackendNotes
GNOMEWayland / X11Built-in Shell extension over D-Bus; fallback xprop on X11Agent auto-installs the user extension and may restart GNOME Shell once
KDE PlasmaWayland / X11KWin script over D-Bus; fallback xprop / xdotool on X11Agent auto-installs and enables the KWin script
HyprlandWaylandhyprctl activewindow -jNeeds hyprctl on PATH
SwayWaylandswaymsg -t get_tree (focused node)Needs swaymsg on PATH
Generic X11X11xprop and/or xdotoolWorks for many X11 DEs when those tools are installed

Not supported / skipped

The following are not first-class targets right now. The agent does not ship a dedicated compositor helper for them. On pure Wayland they usually fail with:

no active window backend available for this desktop session

EnvironmentReason
XFCENo dedicated Wayland/X11 helper; not validated
CinnamonNot validated; may work only if X11 + xdotool/xprop happen to work
MATESame as above
BudgieSame as above
LXQt / LXDESame as above
Other wlroots compositors (besides Sway)No generic wlroots backend yet
Headless / SSH-only sessionsNo interactive focused window
XFCE

XFCE is intentionally out of scope for now. Do not expect reliable active-window tracking there, especially on Wayland. Prefer GNOME, KDE Plasma, Hyprland, or Sway if you need the agent.

Windows details

  • Uses the foreground HWND, window title, and QueryFullProcessImageName for the process path.
  • The background worker is started detached (new process group, hidden console window).
  • Stop uses process termination after writing the disabled flag (Windows does not deliver Unix SIGTERM to arbitrary processes).

macOS details

  • Reads the frontmost process name and POSIX path through System Events.
  • The first run may require granting Automation / Accessibility permissions to the terminal or to the agent binary in System Settings → Privacy & Security.
  • Platform field reported to the API is Darwin.

Quick self-check

After start + login:

./Analog-WakaTime-Agent status
tail -f logs/agent.log

Switch focus between two apps. Within a poll interval you should see activity flushing / syncing rather than repeated:

active window: no active window backend available for this desktop session

If that warning keeps appearing on Linux, open Linux desktops for GNOME/KDE helper setup, or confirm you are not on an unsupported DE such as XFCE.