Get set up
Install with uv, pick a display, and start the deck.
Configure
Themes, polling rates, pages, and quick actions live in settings.json.
Learn the UI
Music, stats, speed test, clock, emoji picker, developer info, and settings pages.
Troubleshoot
Fix MPRIS, GPU stats, speed tests, and display setup.
Capabilities at a glance
- Now Playing controls via MPRIS (Linux-first) and Spotify Web API (with optional device transfer)
- Synced lyrics using LRCLIB with caching and on-demand refresh
- System stats (CPU/RAM and optional NVIDIA GPU via NVML) with configurable polling
- Swipe navigation between pages plus swipe-up quick actions drawer
- Built-in speed test, emoji picker, clock, developer status, and settings pages
- Themes, UI scale, and opacity for dark kiosks or bright panels
The docs are mirrored in Context7 for quick answers: https://context7.com/codesoftgit/touchdeck
Requirements
- Python 3.10+
- Linux desktop with D-Bus (for MPRIS) and a compatible media player (Spotify, VLC, etc.)
- Optional: NVIDIA drivers +
nvidia-ml-pyfor GPU stats;speedtest-clifor speed tests; Spotify client credentials for Spotify mode - Small landscape touchscreen (default layout is 800x480); mouse/trackpad also works
How Touchdeck is built
- PySide6 for UI, qasync to bridge Qt’s event loop with asyncio
- Media providers: MPRIS and Spotify (
touchdeck/services/mpris.py,touchdeck/services/spotify_provider.py) - Stats: psutil and optional NVML (
touchdeck/services/stats.py) - Settings stored at
~/.config/touchdeck/settings.json(touchdeck/settings.py) - UI pages and widgets under
touchdeck/ui/