Files
lhns--steam-frame-nix/docs/desktop-integration.md
T
Pierre Kisters 13d7a437f8 docs: split feature details into docs/
One page per feature group (sessions, keyboard, launcher menu, dashboard, SteamVR debugger, Firefox, Jellyfin, UI patches, changes outside Nix) and the full options table in docs/options.md.
2026-09-29 00:31:35 +02:00

2.0 KiB

Session, portal and clipboard

Plumbing between the Frame's two sessions. Options: Session, Clipboard sync.

Session settings and services

Module session.nix, used by the other modules; normally nothing to set.

  • session.runtimeDir / session.bus point at the Steam session's runtime dir and bus (services, KDE wallet), which the nested desktop can't see. session.busEnv is a launcher prefix to reach them:

    xdg.dataFile."applications/org.example.App.desktop".text = ''
      [Desktop Entry]
      Type=Application
      Name=Example
      Exec=${config.steamFrame.session.busEnv} flatpak run org.example.App %U
    '';
    
  • Switching from the nested desktop, Home Manager can't reach the service manager ("User systemd daemon not running"). So after every switch this module reloads the Steam session's user manager and applies session.services.start / stop / restart, which other modules fill.

Portal

session.portalFix.enable, on by default.

Problem: the Frame image (SteamOS 0.3.0, build 20260922) points the Steam session's xdg-desktop-portal at /usr/share/xdg-desktop-portal/gamescope-portals, which lacks gamescope-portals.conf: no backend, no OpenURI, so no app in the Steam session can open links.

Fix: a portal dir in ~/.local/share linking Valve's .portal files plus a config (default=holo;gamescope), and a drop-in on xdg-desktop-portal.service. The desktop's portal is unaffected.

Remove when SteamOS ships gamescope-portals.conf.

Clipboard sync

clipboardSync.enable, on by default.

Problem: the Steam session's X displays and the nested desktop have separate clipboards.

Fix: clipboard-sync, built from source (its flake is x86-only; clipboardSync.package to replace it), started via KDE autostart (the desktop can't reach the user manager, and :2 must exist first). Each switch restarts it if outdated, so switch from a desktop terminal.