{"id":39110308,"url":"https://github.com/andrew-ld/lutris-gamepad-ui","last_synced_at":"2026-04-17T21:01:09.921Z","repository":{"id":299876901,"uuid":"1004503377","full_name":"andrew-ld/lutris-gamepad-ui","owner":"andrew-ld","description":"A simple, TV-friendly, gamepad-navigable frontend for the Lutris game launcher on Linux.","archived":false,"fork":false,"pushed_at":"2026-04-11T17:30:45.000Z","size":2761,"stargazers_count":47,"open_issues_count":4,"forks_count":6,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-11T18:23:36.817Z","etag":null,"topics":["gamepad","linuxgaming","lutris"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrew-ld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-18T18:15:52.000Z","updated_at":"2026-04-11T17:30:48.000Z","dependencies_parsed_at":"2025-06-18T19:39:20.257Z","dependency_job_id":"3a275731-5ac8-4b2d-b28b-8fc2fa315f27","html_url":"https://github.com/andrew-ld/lutris-gamepad-ui","commit_stats":null,"previous_names":["andrew-ld/lutris-gamepad-ui"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/andrew-ld/lutris-gamepad-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-ld%2Flutris-gamepad-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-ld%2Flutris-gamepad-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-ld%2Flutris-gamepad-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-ld%2Flutris-gamepad-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrew-ld","download_url":"https://codeload.github.com/andrew-ld/lutris-gamepad-ui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-ld%2Flutris-gamepad-ui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31945987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gamepad","linuxgaming","lutris"],"created_at":"2026-01-17T19:47:04.995Z","updated_at":"2026-04-17T21:01:09.909Z","avatar_url":"https://github.com/andrew-ld.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lutris Gamepad UI\n\nA simple, TV-friendly, gamepad-navigable frontend for the [Lutris](https://lutris.net/) game launcher on Linux. This application provides a \"10-foot UI\" designed for couch gaming, allowing you to browse and launch your Lutris library entirely with a gamepad.\n\n[View Screenshots](./README_SCREENSHOTS.md)\n\n## Table of Contents\n\n- [Requirements](#requirements)\n- [Installation](#installation)\n  - [AppImage (Recommended)](#appimage-recommended)\n  - [Arch User Repository (AUR)](#arch-user-repository-aur)\n- [Features](#features)\n- [Custom Theming Guide](#custom-theming-guide)\n- [Building from Source](#building-from-source)\n- [Configuration](#configuration)\n  - [Environment Variables](#environment-variables)\n- [License](#license)\n\n## Requirements\n\n- A Linux-based operating system.\n- [Lutris](https://lutris.net/downloads) installed and configured with your games.\n- For full functionality, a standard desktop environment with:\n  - **PulseAudio** or **PipeWire** (optional, for audio control).\n  - **BlueZ** (optional, for Bluetooth management).\n  - **GNOME** or **KDE** (optional, for native display management).\n  - **ddcutil** (optional, for external monitor brightness control).\n  - **SDL2** (optional, for LUTRIS_GAMEPAD_UI_ENABLE_SDL_INPUT).\n  - **X11** (optional, for Gamescope focus management).\n\n## Installation\n\n### AppImage (Recommended)\n\nYou can download the latest `.AppImage` from the [**Releases page**](https://github.com/andrew-ld/lutris-gamepad-ui/releases).\n\nAfter downloading, make the file executable and run it:\n\n```bash\nchmod +x lutris-gamepad-ui-*.AppImage\n./lutris-gamepad-ui-*.AppImage\n```\n\n### Arch User Repository (AUR)\n\nArch Linux users (and users of Arch-based distributions) can install [`lutris-gamepad-ui-git`](https://aur.archlinux.org/packages/lutris-gamepad-ui-git) from the AUR.\n\n## Features\n\n- **Gamepad-First Interface:** Navigate the entire application without a mouse or keyboard. The UI provides context-aware on-screen button prompts that adapt to your connected controller (Xbox, PlayStation, etc.) and offers audio feedback for interactions.\n\n- **Organized Game Library:** Games are automatically organized into shelves for \"Recently Played,\" \"All Games,\" and by categories defined in Lutris. Find games quickly using the universal search with an integrated **on-screen keyboard**. Game cards display cover art, playtime, and last played date, with dynamically generated gradients as fallbacks for missing art.\n\n- **Seamless Gameplay:** Launch games directly from the library. While a game is running, a clean \"Now Playing\" screen is displayed. Features include an **experimental pause function** and the ability to open the main Lutris desktop app directly. A global shortcut (Gamepad Home/Guide button or `Ctrl+X`) allows you to toggle the UI's visibility without closing your game.\n\n- **Integrated System Controls:** Access a comprehensive system menu to manage your device:\n  - **Audio Settings:** Manage volume and switch between output devices.\n  - **Bluetooth Management:** Connect and disconnect devices (controllers, headsets, etc.).\n  - **Display Settings:** Control **Brightness** and toggle **Night Light** (supports GNOME, KDE, and external monitors via `ddcutil`).\n  - **Power Options:** Reboot or shutdown the system directly from the UI.\n\n- **Customization \u0026 Localization:**\n  - **Multi-language Support:** Currently available in English, Italian, Persian, and Swedish.\n  - **Advanced Settings:** Fine-tune your experience with settings for gamepad autorepeat delay, UI zoom level, and sound feedback.\n  - **Theming:** Fully customizable appearance via `theme.json` (see the Custom Theming Guide below).\n\n## Custom Theming Guide\n\nYou can customize the application's appearance by creating a `theme.json` file to override default CSS properties.\n\n#### How It Works\n\nOn first launch, the application creates two files in its configuration directory:\n\n- `theme.default.json`: A reference file containing all available CSS selectors and their default properties. **Do not edit this file**, as it may be overwritten by updates.\n- `theme.json`: An empty file for your custom overrides.\n\n#### Steps to Create a Custom Theme\n\n1.  **Locate the Theme Files:**\n    Navigate to the application's configuration directory:\n\n    ```bash\n    cd ~/.local/lutris-gamepad-ui/\n    ```\n\n2.  **Identify the Element to Style:**\n    Open `theme.default.json` to find the CSS selector for the UI element you wish to change (e.g., `:root`, `.game-card`).\n\n3.  **Add Your Overrides:**\n    Open `theme.json` and add your custom styles, including only the selectors and properties you wish to modify.\n\n4.  **Apply Changes:**\n    Save the `theme.json` file. The application will detect the changes and apply your theme instantly, no restart required.\n\n#### Example: Changing the Accent Color\n\nTo change the main accent color from red to blue:\n\n1.  Find the `--accent-color` variable under the `:root` selector in `theme.default.json`.\n\n2.  Add the following override to your `theme.json` file:\n    ```json\n    {\n      \":root\": {\n        \"--accent-color\": \"#0078d4\"\n      }\n    }\n    ```\n3.  Save the file. The UI will immediately update with the new color.\n\n## Building from Source\n\n1.  **Clone the repository:**\n\n    ```bash\n    git clone https://github.com/andrew-ld/lutris-gamepad-ui.git\n    cd lutris-gamepad-ui\n    ```\n\n2.  **Install dependencies:**\n\n    ```bash\n    npm install\n    ```\n\n3.  **Run in development mode:**\n\n    ```bash\n    npm run start\n    ```\n\n4.  **Build the AppImage:**\n    ```bash\n    npm run build\n    ```\n\n## Configuration\n\n### Environment Variables\n\nYou can customize the application's behavior using the following environment variables. Set them to `1` to enable/disable the respective feature.\n\n| Variable                                       | Description                                                          |\n| :--------------------------------------------- | :------------------------------------------------------------------- |\n| `LUTRIS_GAMEPAD_UI_IS_DEV`                     | Enable development mode (hot reloading, devtools).                   |\n| `LUTRIS_GAMEPAD_UI_FORCE_WINDOWED`             | Force the application to run in a window instead of fullscreen.      |\n| `LUTRIS_GAMEPAD_UI_LOCALE_CLEANUP`             | Remove unused translation strings during build.                      |\n| `LUTRIS_GAMEPAD_UI_ENABLE_SDL_INPUT`           | Use SDL2 for gamepad input (alternative to Web Gamepad API).         |\n| `LUTRIS_GAMEPAD_UI_DISABLE_ANIMATIONS`         | Disable all UI animations for a faster feel or lower resource usage. |\n| `LUTRIS_GAMEPAD_UI_DISABLE_LUTRIS_SETTINGS`    | Hide the \"Lutris settings\" from the system menu.                     |\n| `LUTRIS_GAMEPAD_UI_DISABLE_AUDIO_SETTINGS`     | Hide the \"Audio settings\" from the system menu.                      |\n| `LUTRIS_GAMEPAD_UI_DISABLE_DISPLAY_SETTINGS`   | Hide the \"Display settings\" from the system menu.                    |\n| `LUTRIS_GAMEPAD_UI_DISABLE_BLUETOOTH_SETTINGS` | Hide the \"Bluetooth settings\" from the system menu.                  |\n| `LUTRIS_GAMEPAD_UI_DISABLE_OPEN_LUTRIS`        | Hide the \"Open Lutris\" option from the system menu.                  |\n| `LUTRIS_GAMEPAD_UI_DISABLE_REBOOT_SYSTEM`      | Hide the \"Reboot System\" option from the system menu.                |\n| `LUTRIS_GAMEPAD_UI_DISABLE_POWER_OFF_SYSTEM`   | Hide the \"Power Off System\" option from the system menu.             |\n| `LUTRIS_GAMEPAD_UI_DISABLE_BUG_REPORT`         | Hide the \"Generate Bug Report\" option from the system menu.          |\n\n## License\n\nThis project is licensed under the **GNU General Public License v3.0**. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrew-ld%2Flutris-gamepad-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrew-ld%2Flutris-gamepad-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrew-ld%2Flutris-gamepad-ui/lists"}