Import games from Steam, Lutris, Heroic, Bottles, Faugus, Ryubing, RetroArch, and Eden into Sunshine, add SteamGridDB covers, and stream headlessly from an isolated virtual display.
  • Python 93.4%
  • Shell 6.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Arbitrate3280 8d1338a1fe feat(launchers): detect Flatpak Eden installs
get_eden_command only probed a native 'eden' on PATH and AppImages, and
get_eden_game_dirs only read ~/.config/eden/qt-config.ini, so an
Eden installed as a Flatpak was never offered and its games -- registered
in the sandboxed ~/.var/app/dev.eden_emu.eden/config/eden/qt-config.ini --
would not have been listed even if it were.

Probe 'flatpak info dev.eden_emu.eden' first like Cemu does, read every
existing qt-config.ini (Flatpak and native merged), and emit FLATPAK_ID
plus process-name detect hints for Flatpak runs. Verified against a live
Flatpak install (game listed, launch command built); 364 tests pass and
pyflakes is clean.
2026-10-17 13:33:54 -03:00
.github refactor(display): split monolithic manager into dedicated modules 2026-08-02 09:27:52 -03:00
config feat(punktfunk): add host support and per-game detect hints 2026-10-17 13:19:08 -03:00
display fix(display): support Sunshine libvirtualhid input devices 2026-10-04 14:54:03 -03:00
launchers feat(launchers): detect Flatpak Eden installs 2026-10-17 13:33:54 -03:00
punktfunk feat(punktfunk): add host support and per-game detect hints 2026-10-17 13:19:08 -03:00
sunshine feat(punktfunk): add host support and per-game detect hints 2026-10-17 13:19:08 -03:00
tests feat(launchers): detect Flatpak Eden installs 2026-10-17 13:33:54 -03:00
utils feat(punktfunk): add host support and per-game detect hints 2026-10-17 13:19:08 -03:00
.gitignore chore: stop tracking PyInstaller build artifacts 2026-08-02 09:28:46 -03:00
AGENTS.md fix(display): support Sunshine libvirtualhid input devices 2026-10-04 14:54:03 -03:00
LICENSE Initial commit 2024-06-24 05:14:31 -03:00
lutristosunshine.py feat(punktfunk): add host support and per-game detect hints 2026-10-17 13:19:08 -03:00
README.md feat(punktfunk): add host support and per-game detect hints 2026-10-17 13:19:08 -03:00
requirements.txt feat(launchers): list Lutris and Bottles games from their data files 2026-08-21 10:49:33 -03:00

LutrisToSunshine

Import games from Steam, Lutris, Heroic, Bottles, Faugus, Ryubing, RetroArch, and Eden into Sunshine, add SteamGridDB covers, and stream headlessly from an isolated virtual display.

lutristosunshine Captura_de_tela_20260324_203642

Supported Launchers

  • Lutris, Heroic, Steam, Faugus: native and Flatpak
  • Bottles, Ryubing: Flatpak
  • RetroArch: native and Flatpak
  • Eden: AppImage and native binary

Quick Start

git clone https://github.com/Arbitrate3280/LutrisToSunshine.git
cd LutrisToSunshine
pip install -r requirements.txt

Make sure Sunshine is running, close Lutris before scanning (other launchers can stay open), then:

python3 lutristosunshine.py

Imported games carry process/install detection hints (Steam app IDs, Flatpak IDs, executables, install directories, process names) derived from launcher configs, so Punktfunk can reliably recognize a running title.

Options

Flag What it does
--all Import all detected games without prompts
--cover Download SteamGridDB covers for imported games
--sunshine-host Override the Sunshine/Punktfunk management host
--sunshine-port Override the Sunshine/Punktfunk management port (usually 47990)

Ignoring sources

Run python3 lutristosunshine.py ignore to toggle which detected sources are scanned. Ignored sources are never listed, in normal runs or with --all.

Virtual Display

Run python3 lutristosunshine.py display to open an interactive menu for managing headless streaming in a separate Sway session. Audio and input stay isolated from your main desktop, so you can keep using it while someone streams a game.

The menu includes:

  • Setup/update — installs the Sway+Sunshine stack and reconciles your game apps
  • Display sync — match the client's resolution and FPS, set a custom mode, or lock a fixed resolution
  • GPU selection — pick which GPU drives the virtual display (for multi-GPU setups)
  • Renderer — toggle between GLES2 (stable, broad support) and Vulkan (HDR capable)
  • MangoHud FPS limit — dynamically cap FPS to the client's refresh rate
  • Service controls — start, stop, or restart Sunshine for the virtual display
  • Status dashboard — health overview, input isolation state, and more
  • Advanced tools — logs and full teardown

Requires sway.

Binary Release

chmod +x lutristosunshine
./lutristosunshine --all --cover

License

MIT

Acknowledgements