Document SDL3 as a required dependency and describe how to build the project with kde-builder. Also consolidate the repo-local config as kde-builder.yaml (without the leading dot) so it is recognized consistently.
7.1 KiB
A-La-Karte
A unified game launcher for KDE Plasma 6, inspired by KDE Apps Initiative issue#26.
Features
- Import games from Steam, Lutris, Heroic, Bottles, itch.io, Legendary, RetroArch playlists, Flatpak applications, and desktop entries
- Manual game entries with editable metadata (name, developer/publisher, executable, working directory)
- Grid and list views
- Search by name/developer/publisher and filter by source
- Favorites and hidden games views
- Last-played timestamp
- Optional SteamGridDB cover fetching (requires API key)
- Optional KRunner integration (if KF6Runner is available at build time)
- Gamepad navigation (via SDL3)
Requirements
Build Dependencies
- CMake >= 3.20
- Qt >= 6.6
- KDE Frameworks >= 6.0
- Kirigami
- KI18n
- KCoreAddons
- KConfig
- Extra CMake Modules (ECM)
- SDL3
Runtime Dependencies
- Qt 6 (Core, Quick, QuickControls2, Gui, Network, Concurrent)
- Kirigami 6
- KDE Frameworks 6
Optional
- Steam (for Steam game import)
- Lutris (for Lutris game import)
- Heroic Games Launcher (for Epic/GOG/Amazon game import)
- Bottles (for Windows apps via Wine)
- itch.io app (for itch.io games)
- Legendary CLI (for Epic Games)
- RetroArch (for retro games via playlists)
Building
Using kde-builder (Recommended)
This project is not currently part of KDE's repo-metadata, so you need to add it as a custom project in your ~/.config/kde-builder.yaml.
- Set up kde-builder:
- Install distro build dependencies:
kde-builder --install-distro-packages
- Add a project entry to
~/.config/kde-builder.yaml:
project alakarte:
repository: https://invent.kde.org/marcoa/a-la-karte.git
cmake-options: -DALAKARTE_SDL3_SOURCE_DIR=/path/to/SDL
- Build:
kde-builder alakarte
To run the built app:
kde-builder --run alakarte
Manual Build
cmake -B build -S . -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build
cmake --install build
Development Build
cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug
cmake --build build
./build/bin/alakarte
Usage
- Launch A-La-Karte from your application menu or run
alakarte - If your library is empty, the import dialog opens automatically
- Import games from your supported platforms
- Your games will appear in the library grid
- Select a game to see details, double-click or press Play to launch
Keyboard Shortcuts
- Ctrl+F: Focus search field
- Ctrl+N: Add new game
- Ctrl+I: Open import dialog
- Ctrl+,: Open settings
- Ctrl+H: Toggle hidden games view
- Ctrl+D: Show game details
- F5: Refresh/import all games
- Escape: Close dialog/sheet or clear search
- Enter/Space: Select/launch game in grid
Gamepad Controls
- D-pad / Left Stick: Navigate grid
- A Button: Select/launch game
- B Button: Back/close dialog
- Start: Open settings
- Y Button: Focus search
Supported Platforms
Steam
A-La-Karte automatically detects Steam installations at:
~/.steam/steam~/.local/share/Steam- Flatpak:
~/.var/app/com.valvesoftware.Steam/.local/share/Steam
All library folders are scanned for installed games.
Lutris
Games are imported from:
~/.local/share/lutris- Flatpak:
~/.var/app/net.lutris.Lutris/data/lutris
Uses the Lutris CLI when available for best results.
Heroic Games Launcher
Supports Epic Games, GOG, and Amazon Games via Heroic:
~/.config/heroic- Flatpak:
~/.var/app/com.heroicgameslauncher.hgl/config/heroic
Bottles
Windows applications via Wine:
~/.local/share/bottles- Flatpak:
~/.var/app/com.usebottles.bottles/data/bottles
itch.io
Games installed via the itch.io app:
~/.config/itch/db/butler.db- Flatpak:
~/.var/app/io.itch.itch/config/itch/db/butler.db
Legendary
Epic Games via Legendary CLI:
~/.config/legendary
RetroArch
Retro games from RetroArch playlists:
~/.config/retroarch/playlists- Flatpak:
~/.var/app/org.libretro.RetroArch/config/retroarch/playlists
Desktop Entries
Games from XDG .desktop files in standard application directories.
Flatpak Games
Games installed as Flatpak applications (detected by category).
Configuration
Settings are stored in ~/.config/alakarterc and include:
- View mode (Grid/List)
- Grid size
- Platform badge visibility
- Auto-import on startup
- Enabled import sources
Game library is stored in ~/.local/share/alakarte/library.json.
Code Overview
- Application entry point:
src/main.cpp - Core singleton:
src/app.*exposes models/services to QML (game model, launcher, config, SteamGridDB) - Data model:
src/game.*stores per-game metadatasrc/gamemodel.*andsrc/gamesortfiltermodel.*provide sorting/filtering for the UI
- Importers:
src/*importer.*(Steam/Lutris/Heroic/etc.) - Launcher:
src/gamelauncher.*launches processes/URLs and records last-played on launch - UI:
src/qml/(Kirigami + Qt Quick)
Local Smoke Testing (Repeatable)
If you want to test without affecting your real configuration/library, run with isolated XDG directories:
export XDG_CONFIG_HOME="$(mktemp -d)"
export XDG_DATA_HOME="$(mktemp -d)"
./build/bin/alakarte
Suggested quick checks:
- Add a manual entry with a harmless command (e.g.
trueorsleep 2) and launch it. - Confirm
Last playedupdates after launch. - Toggle favorite/hidden and confirm filtering works.
- Open the import sheet and run an import; confirm it completes and does not crash even if sources are missing.
- (Optional) Create a temporary
.desktopfile under$XDG_DATA_HOME/applications/and verify the Desktop Entries importer detects it.
Contributing
Contributions are welcome! Please see the KDE development guidelines.
Getting Started
- Set up your development environment: https://develop.kde.org/docs/getting-started/building/kde-builder-setup/
- Clone the repository
- Build and test your changes
- Submit a merge request
Code Style
This project follows KDE coding conventions:
- https://community.kde.org/Policies/Frameworks_Coding_Style
- https://community.kde.org/Policies/Library_Code_Policy
License
A-La-Karte is licensed under the GNU General Public License v3.0 or later.
See LICENSES/GPL-3.0-or-later.txt for the full license text.