pynput's XRecord backend silently fails to receive keyboard events on
this system. Switch to direct Xlib XRecord API which works reliably.
- Replace pynput keyboard.Listener with Xlib XRecord context
- Hotkey in listen mode now acts as manual dictation trigger:
LISTENING → DICTATING on press, DICTATING → LISTENING on next press
- Wake word continues to work in parallel with hotkey
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add global hotkey (Ctrl+Super) via pynput with config support
- Fix display_server auto-detection (wayland → x11)
- Fix text injection: use xdotool type directly (no clipboard pollution),
fall back to clipboard with both PRIMARY+CLIPBOARD selections
- Fix tray icon not updating from background threads (pyqtSignal instead
of QTimer.singleShot)
- Add blinking tray icon for RECORDING/DICTATING states
- Fix wake word → DICTATING: save active window at wake time, play end
signal on stop, start silence timer immediately
- Reduce VAD trailing silence 300ms → 150ms for faster response
- Redesign Settings menu: hotkey always active, wake word listening
is an independent ON/OFF toggle
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>