On Wayland, XGrabKey via XWayland is not forwarded by most compositors.
The new Linux implementation tries evdev first (works on Wayland and X11
without compositor-specific support — requires 'input' group or systemd-logind
seat ACLs, which GNOME/KDE grant automatically). Falls back to X11 XGrabKey
for plain X11 sessions or when evdev devices aren't accessible. The log now
records which backend was selected.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Adds fyne.io/systray with a programmatic monkey face icon and Quit menu item
- Logs to discord-lobby-mute.log next to the exe so startup errors are visible
without a console window
- Windows now uses raw Win32 RegisterHotKey in a locked goroutine instead of
golang.design/x/hotkey, avoiding a deadlock where systray and the hotkey
library both try to own the main thread message loop
- Build with: GOOS=windows GOARCH=amd64 go build -ldflags "-H windowsgui" -o discord-lobby-mute.exe .
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>