# lel Python X11 STT daemon that records audio, runs Whisper, logs the transcript, and can optionally run AI post-processing before injecting text. ## Requirements - X11 (not Wayland) - `sounddevice` (PortAudio) - `faster-whisper` - Tray icon deps: `gtk3`, `libayatana-appindicator3` - Python deps: `pillow`, `python-xlib`, `faster-whisper`, `PyGObject`, `sounddevice` System packages (example names): `portaudio`/`libportaudio2`. ## Python Daemon Install Python deps: ```bash uv sync ``` Run: ```bash uv run python3 src/leld.py --config ~/.config/lel/config.json ``` ## Config Create `~/.config/lel/config.json`: ```json { "daemon": { "hotkey": "Cmd+m" }, "recording": { "input": "0" }, "stt": { "model": "base", "device": "cpu" }, "injection": { "backend": "clipboard" }, "ai_cleanup": { "model": "llama3.2:3b", "base_url": "http://localhost:11434", "api_key": "" } } ``` Recording input can be a device index (preferred) or a substring of the device name. ## systemd user service ```bash mkdir -p ~/.local/bin cp src/leld.py ~/.local/bin/leld.py cp systemd/lel.service ~/.config/systemd/user/lel.service systemctl --user daemon-reload systemctl --user enable --now lel ``` ## Usage - Press the hotkey once to start recording. - Press it again to stop and run STT. - The transcript is logged to stderr. Injection backends: - `clipboard`: copy to clipboard and inject via Ctrl+Shift+V (GTK clipboard + XTest) - `injection`: type the text with simulated keypresses (XTest) AI provider: - Generic OpenAI-compatible chat API at `ai_base_url` (base URL only; the app uses `/v1/chat/completions`) Control: ```bash make run ```