Skip to main content

Project layout

  • App code: touchdeck/
  • Tests: tests/
  • Docs (this site): docs/
  • Settings + caches at runtime: ~/.config/touchdeck/

Dev environment

1

Install dev dependencies

This installs PySide6, qasync, psutil, NVML bindings (optional), Spotipy, and test tools.
2

Run the app locally

Use --display flags? Not needed—the app prompts you to pick a screen on first launch.
3

Run tests

For coverage:

Code style and linting

  • The codebase is type-hinted; prefer mypy-friendly changes.
  • Keep UI styles consistent with touchdeck/themes.py and widget helpers.
  • Avoid blocking the Qt event loop—use asyncio.to_thread where needed.

Working on docs

1

Install the Mintlify CLI

2

Preview docs

Open http://localhost:3000 to view the docs.

Where to contribute

  • New UI pages or widgets: touchdeck/ui/
  • Media providers: touchdeck/services/mpris.py, touchdeck/services/spotify_provider.py
  • Settings and validation: touchdeck/settings.py
  • Quick actions and custom commands: touchdeck/quick_actions.py and touchdeck/ui/window.py
See README for user-facing setup.