[English](#english) | [Deutsch](#deutsch) --- # Twitch4SteamDeck Ad-free Twitch client for the Steam Deck with Big-Screen UI, full gamepad control, and VOD playback with resume. ## Features - **Live Streams** — Ad-free playback via Streamlink + hls.js (HTML5 video, no external player) - **VOD Playback** — Watch recordings with automatic resume at last position - **VOD Chapters** — Browse and jump to chapters within VODs - **Direct Stream Start** — Press A on any stream card in Browse/Top Streams/Category to start immediately without leaving the browse view - **Gamepad Control** — Full control via Steam Deck controller or Xbox gamepad, including Gaming Mode (reads `/dev/input/js*` directly, bypasses Chromium sandbox limitations) - **Big-Screen UI** — 10-foot interface optimized for TV/deck; fills the screen on Steam Deck and on external TVs when docked (React + Electron) - **Twitch Login** — Device Code Flow with QR code (no browser required) - **Following** — Live status and overview of followed streamers - **Category Browser** — Browse Twitch categories and top streams - **Language-Filtered Streams** — Top streams filtered by German/English - **Account Screen** — User profile, app version, logout - **VOD History** — Local SQLite database with playback history and progress - **Hardware Decoding** — GPU-accelerated video via Chromium's built-in VA-API on Steam Deck - **Quit Dialog** — Confirm quit via Xbox/Start button ## Architecture ``` Electron (Main Process) ├── Auth -- Twitch Device Code Flow + token management (Electron safeStorage) ├── Helix Client -- Twitch API (followed channels, streams, VODs, categories, chapters via GQL) ├── Playback -- Streamlink --stream-url → HLS URL → IPC event to renderer ├── Gamepad -- Linux joystick API (/dev/input/js*) └── History -- SQLite (better-sqlite3) for VOD history + resume Electron (Renderer) ├── React UI -- Screens: Login, Following, Browse, Category, Channel, │ StreamList (DE/EN), Settings, Account ├── VideoPlayer -- hls.js