Skip to content

Linux and macOS support #74

Description

@lippdev

Idea

Bring Console Mode to Linux (desktop and handheld distros like SteamOS/Bazzite) and macOS: one click to focus the TV, turn off the other screens, switch audio, launch the game UI, and restore everything afterwards.

Why it's a big one

Today the app is Windows-only by design, not just by packaging:

  • UI: WinUI 3 / Windows App SDK, which only runs on Windows.
  • Displays: Windows CCD APIs (SetDisplayConfig), MultiMonitorTool, HDR/VRR toggles.
  • Audio: Windows audio endpoints (SoundVolumeView).
  • Controllers: XInput, Windows.Gaming.Input, and the Sony HID reader (hid.dll / SetupAPI).
  • Session: Steam Big Picture / Xbox app / Playnite detection, RTSS for the FPS limit, tray, named-pipe control API, Inno Setup installer and updater.

Possible path

  1. Split a platform-neutral core (config, session flow, rules like UiModeResolver and ControllerMapping) from the Windows services behind interfaces.
  2. Pick a cross-platform UI: Avalonia or Uno Platform (both C#, closest to the current XAML), or keep WinUI on Windows and add a thin UI per OS.
  3. Per-OS backends:
    • Linux: displays via xrandr (X11) or wlr-randr / KDE kscreen-doctor / GNOME Mutter D-Bus (Wayland); audio via PipeWire/PulseAudio (pactl/wpctl); controllers via SDL2 or evdev; launch steam -gamepadui or Gamescope.
    • macOS: displays via CoreGraphics (CGDisplay*, mirroring/disable where allowed); audio via CoreAudio; controllers via GameController.framework; launch Steam Big Picture.
  4. Packaging: AppImage/Flatpak on Linux, a signed .app / DMG on macOS; the updater per platform.

Open questions

  • Which platform first? Linux handhelds and HTPCs look like the closest fit.
  • Wayland makes turning outputs off compositor-specific; how many compositors to support at first?
  • Is there interest? 👍 this issue if you'd use it, and say which distro/desktop or Mac you have.

Not planned for a specific version yet.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is neededroadmapPlanned feature

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions