30 KiB
30 KiB
17. Risks and mitigations
| Risk | Mitigation |
|---|---|
| Wayland compositor or Gamescope instability, especially on NVIDIA | Maintain Xorg, TTY, and safe-mode fallbacks; test pinned driver/kernel combinations. |
| Provider configuration changes | Keep adapters isolated, capability-based, version-tested, and replaceable. |
| Heroic lacks a stable comprehensive CLI API | Use supported launch mechanisms where possible and treat internal parsing as provisional. |
| Heroic store support is treated as one uniform backend | Test Epic/Legendary, GOG/GOGDL, and Amazon/Nile independently; Heroic's Legendary fork and shared state are not assumed compatible with standalone helpers. |
| UMU performs an unexpected first-launch download | Provide explicit prefetch/update commands, managed caches, verified acquisition where available, offline tests, progress reporting, and prompt failure when uncached offline. |
| GameMode is tied to an unreliable launch or tracking PID | Keep a real GameMode client/wrapper request alive for the game; test Steam and provider handoffs instead of toggling from heuristic state. |
| MangoHud is injected into Gamescope as though it were supported | Use MangoApp with Gamescope and reserve ordinary MangoHud for validated non-Gamescope launches. |
| CLI backend diverges from Heroic per-game configuration | Define ownership boundaries, compare generated launch plans, and require provider-specific integration tests. |
| Resident launchers consume resources without benefit | Keep Lean as default, hide inactive UIs, pause downloads during play where supported, and benchmark actual frametime impact. |
| Optimization folklore causes regressions | Require benchmarks and remove changes that lack measurable value. |
| Arch rolling updates break the appliance | Use normal complete Arch upgrades without a separate delayed channel; minimize fragile integration, publish project fixes, detect known incompatibilities, and retain recovery entries, logs, downgrade guidance, and optional snapshots. |
| Scope expands into a universal store manager | Limit version 1 to discovery, information, launch, scan, and diagnostics. |
| Minimal GUI omits hidden dependencies | Test authentication, file pickers, portals, fonts, Polkit, audio, and multiarch explicitly. |
| Pegasus integration becomes project-specific glue | Generate its metadata through a dedicated adapter and keep all provider logic in the shared core. |
| Premature frontend work delays the backend | Keep Pegasus, OpenGamepadUI integration, forks, and a first-party GUI outside version 1 implementation scope. |
| Public API freezes weak early assumptions | Version contracts explicitly; stabilize only operations proven by the CLI and reference frontend. |
| Premature repository splitting creates coordination overhead | Keep explicit crate and component boundaries in one repository; extract only independently useful, stable components with preserved history. |
| Broad implementation makes failures difficult to isolate | Enforce narrow vertical tasks and four test gates before dependent work begins. |
| Temporary codename leaks into public compatibility surfaces | Centralize branding, prefer functional internal identifiers, maintain a rename checklist, and scan before stable release. |
| Work Mode resource limits obscure failures or waste usage | Reserve compilation, large tests, VM work, dependency downloads, and performance validation for local Codex CLI. |
| Provider launch commands detach from the actual game | Track owned scopes when possible; otherwise use provider state or conservative correlation and report confidence explicitly. |
| Store identity, installation manager, and runtime are conflated | Model game identity, installation UUID, configuration owner, execution backend, and Wine/Proton/UMU runtime separately. |
| Untrusted provider or frontend metadata becomes a shell command | Use typed arguments and validated descriptor files; never interpolate titles or metadata into sh -c. |
| Upstream and community packages expand supply-chain risk | Prefer official packages; pin, review, isolate, sign, inventory, and publish provenance for project-supplied community builds. |
| Optional reused tools become accidental core dependencies | Keep Blueman, ProtonPlus, InputPlumber, snapshot recovery, and post-v1 frontends behind explicit profiles or capability checks; preserve direct diagnostic and filesystem-neutral paths. |
| Labwc cannot satisfy programmatic window-focus assumptions | Treat focus as a session-adapter capability, keep compositor keybindings as the baseline, and report unsupported focus requests explicitly; upstream intentionally exposes no D-Bus or custom IPC. |
| AUR or bundled launcher packages silently bypass release controls | Maintain a reviewed package/source inventory, build and sign pinned artifacts in isolation, and never resolve live AUR content during installation or update. |
| Malicious or corrupted provider data crosses a privilege boundary | Apply file-size/path/symlink limits, argument-safe execution, XDG confinement, redaction, atomic writes, and adversarial fixtures; keep parsers and games unprivileged. |
| Real provider tests leak personal accounts or proprietary data into fixtures | Use dedicated test accounts where practical, sanitize evidence, forbid live tokens and personal library dumps in the repository, and document provider-specific test constraints. |
| Temporary Kiln names collide with existing software, leak into stable surfaces, or drift away from the final project brand | Keep kiln, kiln-core, and related labels repository-local; maintain a rename manifest and automated scan; select the related product and technical naming system before anything is published or globally installed. |
18. Open questions
- What final public project name and related technical naming system should replace Project Kiln and the temporary
kiln/kiln-*family? This is intentionally deferred and does not block private implementation, but must be resolved and collision-checked before any package, crate, global executable, configuration namespace, or IPC name is published or installed. - Does Labwc pass the session prototype on AMD, Intel, and NVIDIA with Steam, Heroic, Lutris, portals, multi-monitor layouts, and nested Gamescope; which failures trigger Xorg fallback or a different compositor?
- Which representative controllers must pass the first compatibility matrix?
- Which bootloader and boot-menu integration should accompany the optional Btrfs/Snapper recovery profile?
- Which vendor launcher should be the first post-v1 managed-prefix integration: Battle.net, EA App, Ubisoft Connect, Rockstar, or another?
- Which terminal emulator should be the phase 5 reference after measuring startup, Wayland behavior, controller/font needs, and maintenance status?
- What concrete frontend or live-state requirement, if any, will justify a resident backend service beyond the small session supervisor?
- Which Pegasus limitations appear during real integration, and should they be solved externally, upstream, through a small patch set, or in a first-party frontend?
- Which Heroic settings and credentials can supported CLI backends safely reuse, and which require an explicit import or independent configuration model?
- Post-v1 only: after profiling, should Lean offer an explicit opt-in Steam idle-exit policy? Version 1 does not close provider clients automatically.
- What questions and presets should the eventual installer present? This is intentionally deferred to a later discussion.
19. Decision log
| ID | Date | State | Decision |
|---|---|---|---|
| D-001 | 2026-07-17 | Confirmed | Arch Linux is the base. |
| D-002 | 2026-07-17 | Confirmed | Version 1 is CLI-first and has no conventional persistent DE. |
| D-003 | 2026-07-17 | Confirmed | USB and Bluetooth controller support is required. |
| D-004 | 2026-07-17 | Confirmed | Performance is the primary optimization target. |
| D-005 | 2026-07-17 | Confirmed | The design includes a unified launcher backend suitable for future frontends. |
| D-006 | 2026-07-17 | Confirmed | Build and validate the desired system as a base Arch package/configuration project before producing a distributable ISO as an installation convenience. |
| D-007 | 2026-07-17 | Deferred | A persistent lightweight desktop may become an optional profile. |
| D-008 | 2026-07-18 | Confirmed | Use QEMU/KVM through libvirt as the primary development and disposable test environment. |
| D-009 | 2026-07-18 | Confirmed | Use dedicated spare-SSD or test-machine bare metal for hardware compatibility and performance validation. |
| D-010 | 2026-07-18 | Confirmed | No project-integrated catalogue frontend owns discovery or normalized launch logic; the CLI and project graphical interfaces are replaceable clients of the shared backend, while provider-native clients retain native behavior. |
| D-011 | 2026-07-18 | Confirmed | Use unmodified upstream Pegasus as the first reference controller frontend through generated metadata that calls the shared project CLI, temporarily kiln. |
| D-012 | 2026-07-18 | Confirmed | Do not fork Pegasus or build a first-party graphical frontend initially; revisit either option only after the upstream integration exposes concrete limitations. |
| D-013 | 2026-07-18 | Confirmed | Initial-shell and frontend startup policy must be changeable after installation and support terminal, manual, automatic, and TTY modes. |
| D-014 | 2026-07-18 | Proposed | Publish a versioned local API and example client after its contracts are proven by the CLI and frontend integration. |
| D-015 | 2026-07-18 | Confirmed | Normal gaming mode uses a persistent minimal graphical session with a fullscreen terminal as the default visible shell. |
| D-016 | 2026-07-18 | Confirmed | Preserve a true TTY-only target for recovery and explicit console-only use. |
| D-017 | 2026-07-18 | Confirmed | Lean is the default runtime profile; Ready supports autostarted resident launchers and rapid switching. |
| D-018 | 2026-07-18 | Confirmed | Steam is started silently when required; unsupported attempts to split or strip the Steam client are not a project dependency. |
| D-019 | 2026-07-18 | Confirmed | Heroic-managed providers may use validated command-line backends without Heroic's GUI, through capability-based adapters that preserve configuration ownership. |
| D-020 | 2026-07-18 | Deferred | Installer questions and their presentation will be designed in a later discussion. |
| D-021 | 2026-07-18 | Confirmed | Use Project Kiln as a temporary internal codename; centralize branding and keep a tested rename path for the final public name. |
| D-022 | 2026-07-18 | Confirmed | Use Rust for project-owned backend, CLI, and provider-adapter software. |
| D-023 | 2026-07-18 | Confirmed | Begin in one Git repository with strict workspace and crate boundaries; extract stable independently useful components later rather than using early multi-repository development or submodules. |
| D-024 | 2026-07-18 | Confirmed | Implement one narrow vertical capability at a time and require unit, contract, isolated integration, and real-system or VM acceptance gates before dependent work proceeds. |
| D-025 | 2026-07-18 | Confirmed | Keep heavy compilation, dependency, VM, graphical, controller, package, ISO, and performance work local in Codex CLI; use Work Mode for lightweight planning, scaffolding, fixtures, and review. |
| D-026 | 2026-07-18 | Confirmed | License project-owned software under AGPL-3.0-or-later. |
| D-027 | 2026-07-18 | Confirmed | Upstream Pegasus integration is the first planned reference-frontend milestone after version 1 and does not block the version 1 release. |
| D-028 | 2026-07-18 | Confirmed | Every future spec change requires a cross-spec integrity check; unresolved conflicts that materially affect scope, architecture, release timing, compatibility, or user-visible behavior require owner clarification before a choice is recorded. |
| D-029 | 2026-07-18 | Confirmed | UMU is an execution runtime rather than a library provider; game identity remains store-qualified or custom while launch plans may select UMU. |
| D-030 | 2026-07-18 | Confirmed | Track game lifetime only as needed for temporary performance policy, sleep inhibition, state, logging, and cleanup; do not automatically close Steam, Heroic, Lutris, or other provider clients after play. |
| D-031 | 2026-07-18 | Confirmed | Use normal complete Arch updates without maintaining a delayed tested package channel; deliver project compatibility fixes independently and retain recovery safeguards. |
| D-032 | 2026-07-18 | Confirmed | Use the regular Arch linux kernel as the reference; do not prefer linux-zen, while allowing linux-lts as a tested recovery fallback. |
| D-033 | 2026-07-18 | Confirmed | Steam, Heroic-managed stores, and Lutris remain required for version 1; third-party vendor-launcher integrations move outside version 1. D-038 later makes the three Heroic-managed store targets explicit. |
| D-034 | 2026-07-18 | Confirmed | Separate game identity, installation instance, configuration owner, execution backend, and compatibility runtime; version machine-readable schemas from phase 1 without promising public stability before 1.0. |
| D-035 | 2026-07-18 | Confirmed | Use validated inert descriptors for Pegasus exports, define reload/restart behavior, and never interpolate metadata into shell commands. |
| D-036 | 2026-07-18 | Confirmed | Resolve login, seat, user-session, and recovery-loop behavior during the session proof rather than deferring it to ISO work. |
| D-037 | 2026-07-18 | Confirmed | Define reproducibility initially as reconstruction from recorded repository/package/build inputs; treat bit-for-bit verification as later hardening and require signed releases, provenance, and an SBOM. |
| D-038 | 2026-07-18 | Confirmed | Treat Heroic-managed Epic, GOG, and Amazon support as three independent v1 capability targets using validated Legendary, GOGDL, and Nile paths; do not infer standalone-helper compatibility from Heroic's integration. |
| D-039 | 2026-07-18 | Confirmed | Make UMU runtime acquisition explicit and testable through managed caching, prefetch/update, verified downloads where available, and defined offline behavior. |
| D-040 | 2026-07-18 | Confirmed | Tie GameMode to a real client/wrapper request lasting for actual game execution; lifecycle confidence alone does not activate it. |
| D-041 | 2026-07-18 | Confirmed | Use MangoApp for Gamescope HUD integration and ordinary MangoHud only on validated non-Gamescope paths. |
| D-042 | 2026-07-18 | Confirmed | Adopt Bluetui as the interactive Bluetooth TUI, retain project-owned structured diagnostics and automation, and offer Blueman as the optional desktop-neutral Bluetooth GUI. |
| D-043 | 2026-07-18 | Confirmed | Evaluate InputPlumber as an optional, post-v1-leaning prototype for advanced routing, remapping, virtual devices, overlays, and controller shell control; do not make it a v1 baseline without evidence. |
| D-044 | 2026-07-18 | Confirmed | Offer ProtonPlus as an optional maintenance GUI while retaining backend ownership of runtime resolution, validation, pinning, provenance, caching, prefetch, and offline behavior. |
| D-045 | 2026-07-18 | Confirmed | Build the guided installer on archinstall with a maintained project profile/configuration and a pinned local plugin or custom script only where necessary; do not reimplement storage, encryption, account, or base-install functions or fetch unpinned executable plugins. |
| D-046 | 2026-07-18 | Confirmed | Offer an optional Btrfs recovery profile using Snapper and pacman transaction hooks; do not require Btrfs, and defer boot integration until the bootloader is selected. |
| D-047 | 2026-07-18 | Confirmed | Reference or reuse ChimeraOS gamescope-session for dedicated frontend sessions where appropriate, but not as the Lean/Ready general multi-window shell. |
| D-048 | 2026-07-18 | Confirmed | Add OpenGamepadUI as a post-v1 frontend candidate beside Pegasus without granting its internal catalog or plugins backend authority. |
| D-049 | 2026-07-18 | Confirmed | Use Labwc as the leading stacking-compositor prototype while keeping final selection conditional on application, hardware, portal, multi-monitor, and nested-Gamescope tests. |
| D-050 | 2026-07-18 | Superseded by D-067 | Originally required hosted CI quality gates as part of the phase 0 repository/evidence baseline. D-067 replaces hosted execution with mandatory local verification. |
| D-051 | 2026-07-18 | Confirmed | Start with on-demand authoritative discovery and no persistent database; add only a disposable cache or SQLite index when measured latency or live-state requirements justify it, preserving a no-cache path. |
| D-052 | 2026-07-18 | Confirmed | Store IDs remain storefront-qualified (epic:, gog:, amazon:) even when Heroic owns configuration; the management client is not part of canonical game identity. |
| D-053 | 2026-07-18 | Confirmed | Treat window focus as a compositor/session-adapter capability. Labwc keybindings are the baseline because Labwc intentionally exposes no D-Bus or custom IPC; unsupported programmatic focus is reported honestly. |
| D-054 | 2026-07-18 | Confirmed | Establish explicit XDG, filesystem, process-execution, redaction, atomic-write, local-IPC, and privilege trust boundaries before provider implementation, with adversarial acceptance tests. |
| D-055 | 2026-07-18 | Confirmed | Do not install Heroic or other non-repository components from live AUR state. Release profiles consume reviewed, pinned, reproducibly built and project-signed packages or verified upstream artifacts recorded in the source inventory. |
| D-056 | 2026-07-18 | Confirmed | Never guess through ambiguous game names: exact stable IDs are deterministic, unique names/aliases may launch directly, interactive terminals may present a numbered/TUI choice, and noninteractive callers receive a structured ambiguity error with candidates. |
| D-057 | 2026-07-18 | Confirmed | Persist installation UUIDs and move aliases in a small schema-versioned, atomic project-owned XDG state registry when adapters lack a stable native installation ID; this identity state is distinct from an optional disposable discovery cache. |
| D-058 | 2026-07-18 | Confirmed | Maintain requirement-to-phase-to-test traceability from phase 0 onward; a release cannot pass with an orphaned Required requirement or prose-only evidence. |
| D-059 | 2026-07-18 | Superseded by D-065 | Originally required collision-checked install/package/crate/configuration/IPC names during phase 0 before scaffolding public surfaces. D-065 narrows the gate to public, published, or globally installed artifacts so private implementation can proceed with repository-local placeholders. |
| D-060 | 2026-07-18 | Confirmed | Limit version 1 to x86_64 UEFI systems; legacy BIOS and non-x86 architectures are outside the v1 support boundary. |
| D-061 | 2026-07-18 | Confirmed | Ship v1 as a single-local-gaming-user appliance while keeping state, services, credentials, paths, libraries, saves, and profiles per-user so multi-user Steam-machine use can be added later. |
| D-062 | 2026-07-18 | Confirmed | Make AMD and NVIDIA GPU/driver coverage release-blocking for v1; treat Intel as tested best-effort until representative hardware can run the full matrix. |
| D-063 | 2026-07-18 | Confirmed | Use versioned TOML with commented generated defaults and CLI editing/validation for user configuration; retain JSON for machine-readable contracts and output. |
| D-064 | 2026-07-18 | Confirmed | Use the Ryzen 9 7900X3D/RTX 5070 desktop with a dedicated external USB project drive as the initial bare-metal reference, and require Xbox-family and PlayStation-family controller coverage over both USB and Bluetooth. |
| D-065 | 2026-07-18 | Confirmed | Defer technical names until the final public project name can define one related naming system. Permit only clearly temporary repository-local labels during private development, and require the rename manifest, collision screen, and final rename before anything is published or globally installed. |
| D-066 | 2026-07-18 | Confirmed | Use the temporary Project Kiln naming family for private development: one repository-local kiln CLI with subcommands, plus functional kiln-core, kiln-cli, kiln-session, and kiln-adapter-* component labels. Do not create separate play or administrative executables. |
| D-067 | 2026-07-18 | Confirmed | Keep Gitea as source storage only. Run compilation, tests, Clippy, dependency audits, VM work, and release verification locally on the development desktop through one recorded gate. Rust 1.97.1 is both the minimum supported and reviewed compiler; hosted workflows are not required. |
20. Change log
| Version | Date | Summary |
|---|---|---|
| 0.1 | 2026-07-17 | Initial living specification created from planning discussion. Added controller requirements, CLI-only scope, unified backend concept, optional future desktop, roadmap, risks, and open questions. |
| 0.2 | 2026-07-18 | Confirmed a libvirt/QEMU-first development workflow, layered VM and bare-metal validation, spare-SSD isolation, and optional-only GPU passthrough. |
| 0.3 | 2026-07-18 | Defined replaceable frontend architecture, upstream Pegasus reference integration, changeable graphical-session startup policies, fork/custom-frontend escalation rules, and a phased public API path. |
| 0.4 | 2026-07-18 | Replaced ephemeral per-launch graphics with a persistent minimal compositor shell and fullscreen terminal; added Lean/Ready/Frontend/Custom/TTY profiles, launcher switching and residency policy, Steam client constraints, Heroic CLI-backend integration, and deferred installer questions. |
| 0.5 | 2026-07-18 | Adopted the Project Kiln codename and rename policy, Rust, AGPL-3.0-or-later, a modular monorepo with extractable provider crates, strict incremental test gates, and a lightweight Work Mode/local Codex CLI execution split. |
| 0.6 | 2026-07-18 | Corrected spec authority wording, Pegasus status language, controller CLI namespacing, a deferred-capability example, bootloader status, and AGPL network-use wording; recorded the unresolved version 1 Pegasus boundary explicitly. |
| 0.7 | 2026-07-18 | Confirmed Pegasus integration as post-version-1 work, removed the related open question, and added an explicit version 1 release boundary after roadmap phase 11. |
| 0.8 | 2026-07-18 | Added a mandatory cross-spec integrity procedure for future planning changes, including dependency, release-boundary, status, example, ID, link, and version checks plus an explicit clarification rule for material ambiguity. |
| 0.9 | 2026-07-18 | Reclassified UMU as a runtime; separated game, installation, owner, backend, and runtime identity; defined confidence-based lifecycle tracking; adopted normal Arch updates and the regular kernel; confirmed base-Arch-first/ISO-later delivery; moved vendor launchers post-v1; and added configuration precedence, session ownership, controller states, safe Pegasus descriptors, reproducibility levels, and supply-chain requirements. |
| 0.10 | 2026-07-18 | Split Heroic-managed Epic, GOG, and Amazon into independent v1 targets; corrected Lutris local-ID handling, GameMode lifetime semantics, Gamescope HUD integration, and UMU acquisition/offline requirements using current upstream documentation. |
| 0.11 | 2026-07-18 | Reused maintained upstream components where appropriate: Bluetui and optional Blueman for Bluetooth, optional ProtonPlus, archinstall-based installation, optional Snapper/pacman-hook Btrfs recovery, gamescope-session references for dedicated frontend sessions, post-v1 OpenGamepadUI and InputPlumber evaluation, and Labwc as the leading compositor prototype. |
| 0.12 | 2026-07-18 | Completed a build-readiness audit: added phase 0 and reproducible evidence requirements; corrected store/adapter identity, durable installation-ID state, frontend/provider-native boundaries, ambiguous-name behavior, and post-v1 CLI leakage; made caching conditional; fixed session target ownership and duplicate headings; accounted for Labwc's lack of IPC; defined controller recovery, package-source, AUR, trust-boundary, adversarial-test, and release-matrix requirements; and narrowed the remaining owner decisions. |
| 0.13 | 2026-07-18 | Confirmed the x86_64/UEFI and single-user v1 boundaries with a multi-user-safe architecture; made AMD/NVIDIA release-blocking and Intel best-effort; selected versioned TOML plus CLI configuration; recorded the external-USB Ryzen 9/RTX 5070 reference system; and required Xbox/PlayStation USB and Bluetooth coverage. |
| 0.14 | 2026-07-18 | Deferred technical naming until the final project brand is selected; allowed private implementation with repository-local functional placeholders; and required a rename manifest, automated placeholder scan, collision check, and completed rename before public, published, or globally installed artifacts. |
| 0.15 | 2026-07-18 | Adopted the temporary Kiln development family throughout the active specification: a single repository-local kiln CLI and functional kiln-* component labels, with no separate convenience or administrative executable. |
| 0.16 | 2026-07-18 | Began private phase 0 implementation; pinned Rust 1.97.1 after the upstream miscompilation-fix release, established the initial workspace/evidence baseline, and changed project status from planning to implementation. |
| 0.17 | 2026-07-18 | Closed phase 0 after the exact Rust toolchain, formatting, compilation, unit tests, Clippy, canonical AGPL license, workspace/source checks, temporary-name scan, and cargo-deny advisory/bans/license/source gates all passed. |
| 0.18 | 2026-07-18 | Promoted Phase 0 lessons into binding development rules: distinguish MSRV from the enforced toolchain pin, version local path dependencies, keep license allowlists evidence-based, audit pinned development tools, and use Phase 0 completion as the Codex CLI handoff point with a root AGENTS.md. |
| 0.19 | 2026-07-18 | Completed phases 1 and 2: versioned provider-independent contracts, durable installation identity, native manifest and approved Desktop Entry discovery, normalized search and resolution, dry-run planning, owned process execution, private logging, structured failures, and their automated evidence. |
| 0.20 | 2026-07-18 | Replaced the unused hosted-CI plan with mandatory local verification, made Rust 1.97.1 the minimum and reviewed compiler, and scheduled closure of the remaining configuration and adversarial-test gaps before phase 3. |
| 0.21 | 2026-07-18 | Closed the pre-phase-3 gaps with local configuration defaults, validation, explanation and safe edits; native launch-plan configuration integration; removal of the obsolete file-lock dependency; bounded redacted process logs; and expanded adversarial tests. |
| 0.22 | 2026-07-18 | Completed Phase 3 with bounded read-only Steam library and app-manifest parsing, stable App ID identities, provider-scoped CLI discovery, adversarial fixtures, and a non-launching check against the local Steam installation. |
| 0.23 | 2026-07-20 | Completed Phase 4 with typed native and Flatpak Steam launch plans, shell-free client submission, structured failures, and real native Terraria plus GE-Proton Overlord II acceptance tests. |
21. Reference notes
- Gamescope
- Pegasus Frontend
- Bluetui
- Blueman
- InputPlumber
- ProtonPlus
- archinstall
- Snapper
- snap-pac
- ChimeraOS gamescope-session
- OpenGamepadUI
- Labwc
- UMU Launcher
- Heroic Games Launcher
- Legendary
- GOGDL
- Nile
- Lutris
- Lutris manual page
- GameMode
- MangoHud and MangoApp
- ArchWiki — Gaming
- ArchWiki — Gamescope
- systemd graphical-session target
- archinstall plugins
- Arch Linux package — umu-launcher
- Arch Linux package — Bluetui