Follow-ups from setting up the Console host, plus three desktop-side fixes
that apply to every Sway machine.
Console
Standalone PCSX2 and Dolphin. The LRPS2 core was not good enough in
practice, so pkgs.pcsx2 was already installed; pkgs.dolphin-emu joins it
for GameCube and Wii. The libretro cores stay for the sake of a single
frontend and a shared save/state layout.
A failed Steam session is now diagnosable. Autologin into the gamescope
session does not take on the real hardware — the television lands on ReGreet.
The config side is correct: initial_session is present in the generated greetd.toml and services.greetd.restart evaluates to false. The likely
cause is the session starting and then dying, which greetd answers by falling
through to default_session. greetd hands a session the VT for its standard
streams, so whatever it printed on its way down was erased as soon as the
greeter repainted. The launcher now runs under systemd-cat, so the reason
survives in journalctl -b -t steam-session.
steamtinkerlaunch. Steam's Add a Non-Steam Game dialog never appears
on this host. That dialog browses through the XDG portal FileChooser
interface (ValveSoftware/steam-for-linux#9447, not fixed). steamtinkerlaunch writes shortcuts.vdf without the dialog.
The Steam library folder is a separate fault, documented but not fixed here.
The picker opens and Steam creates the directory structure at /srv/games/steam; the library then never appears in the Storage UI. That rules
out the portal and points at the write-and-execute probe Steam runs before
recording the folder in libraryfolders.vdf
(ValveSoftware/steam-for-linux#8450). The docs give a way to reproduce that
probe inside Steam's FHS sandbox with steam-run, and keep library_folder_add
in Steam's console as the route that reports a reason where the UI says nothing.
Sway (all graphical hosts)
wlr-randr is installed. It prints the make/model/serial criteria kanshi
profiles are keyed on, and nothing else in the Sway package set covers output
query or adjustment.
4K outputs run at scale 2. Sway cannot key an output rule on resolution,
so a user service applies it at session start and again on every output
event, which is what makes it survive a display being switched off and on.
kanshi still owns mode and position; no profile here sets a scale.
natural_scroll on type:pointer, matching the touchpads.
Emulators inhibit idle while focused. PCSX2 and Dolphin default to
borderless-windowed rather than compositor fullscreen, so the existing inhibit_idle fullscreen rules never matched and swaylock engaged mid-game.
The Steam session is unaffected either way: swayidle is wanted by graphical-session.target and conditional on WAYLAND_DISPLAY, and the
gamescope session provides neither.
Docs
docs/hosts/console.md catches up with the host's actual state — the hardware
scan is real now, the emulator set changed, and "untested claims" becomes a list
of open problems. Adds triage sections for autologin and for each of the two
Steam faults. docs/keybindings.md gains Console in its host list.
Validation
nix fmt clean and nix flake check passes, including per-host evaluation.
Nothing here has been booted on the Console yet; the autologin change is
instrumentation rather than a fix, and the Sway window criteria are regexes that
still need confirming against a running PCSX2.
Follow-ups from setting up the Console host, plus three desktop-side fixes
that apply to every Sway machine.
## Console
- **Standalone PCSX2 and Dolphin.** The LRPS2 core was not good enough in
practice, so `pkgs.pcsx2` was already installed; `pkgs.dolphin-emu` joins it
for GameCube and Wii. The libretro cores stay for the sake of a single
frontend and a shared save/state layout.
- **A failed Steam session is now diagnosable.** Autologin into the gamescope
session does not take on the real hardware — the television lands on ReGreet.
The config side is correct: `initial_session` is present in the generated
`greetd.toml` and `services.greetd.restart` evaluates to `false`. The likely
cause is the session starting and then dying, which greetd answers by falling
through to `default_session`. greetd hands a session the VT for its standard
streams, so whatever it printed on its way down was erased as soon as the
greeter repainted. The launcher now runs under `systemd-cat`, so the reason
survives in `journalctl -b -t steam-session`.
- **`steamtinkerlaunch`.** Steam's **Add a Non-Steam Game** dialog never appears
on this host. That dialog browses through the XDG portal `FileChooser`
interface (ValveSoftware/steam-for-linux#9447, not fixed).
`steamtinkerlaunch` writes `shortcuts.vdf` without the dialog.
The Steam **library folder** is a separate fault, documented but not fixed here.
The picker opens and Steam creates the directory structure at
`/srv/games/steam`; the library then never appears in the Storage UI. That rules
out the portal and points at the write-and-execute probe Steam runs before
recording the folder in `libraryfolders.vdf`
(ValveSoftware/steam-for-linux#8450). The docs give a way to reproduce that
probe inside Steam's FHS sandbox with `steam-run`, and keep `library_folder_add`
in Steam's console as the route that reports a reason where the UI says nothing.
## Sway (all graphical hosts)
- **`wlr-randr`** is installed. It prints the make/model/serial criteria kanshi
profiles are keyed on, and nothing else in the Sway package set covers output
query or adjustment.
- **4K outputs run at scale 2.** Sway cannot key an output rule on resolution,
so a user service applies it at session start and again on every output
event, which is what makes it survive a display being switched off and on.
kanshi still owns mode and position; no profile here sets a scale.
- **`natural_scroll` on `type:pointer`**, matching the touchpads.
- **Emulators inhibit idle while focused.** PCSX2 and Dolphin default to
borderless-windowed rather than compositor fullscreen, so the existing
`inhibit_idle fullscreen` rules never matched and swaylock engaged mid-game.
The Steam session is unaffected either way: `swayidle` is wanted by
`graphical-session.target` and conditional on `WAYLAND_DISPLAY`, and the
gamescope session provides neither.
## Docs
`docs/hosts/console.md` catches up with the host's actual state — the hardware
scan is real now, the emulator set changed, and "untested claims" becomes a list
of open problems. Adds triage sections for autologin and for each of the two
Steam faults. `docs/keybindings.md` gains Console in its host list.
## Validation
`nix fmt` clean and `nix flake check` passes, including per-host evaluation.
Nothing here has been booted on the Console yet; the autologin change is
instrumentation rather than a fix, and the Sway window criteria are regexes that
still need confirming against a running PCSX2.
wlr-randr prints the make/model/serial criteria kanshi profiles are keyed
on and lets a mode be tried before it is committed to config. Nothing
else in the Sway package set covers output query or adjustment.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Autologin into the gamescope Steam session does not take on the real
hardware; the television lands on ReGreet instead. The config side is
correct -- initial_session is present in the generated greetd.toml and
services.greetd.restart evaluates to false -- so the likely cause is the
session starting and then dying, which greetd answers by falling through
to default_session.
greetd hands a session the VT for its standard streams, so whatever the
session prints on its way down is erased as soon as the greeter repaints.
Run the launcher under systemd-cat so the reason survives in the journal
under the steam-session identifier.
Steam's non-Steam-game Browse dialog and its library-folder picker both
go through the XDG portal FileChooser interface and do not open here
(ValveSoftware/steam-for-linux#9447, #10415). Add steamtinkerlaunch,
which writes shortcuts.vdf without the dialog, and document
library_folder_add as the equivalent route for the library folder.
Docs also catch up with the host's actual state: hardware-configuration
.nix is a real scan now, standalone pcsx2 is installed, and the untested
claims become the list of open problems.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The libretro dolphin core lags upstream on compatibility in the same way
LRPS2 does, so install pkgs.dolphin-emu next to pkgs.pcsx2 and run
GameCube and Wii titles through it. The cores stay for the sake of a
single frontend and a shared save/state layout.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Three unrelated desktop-side fixes, all in home/sway.nix.
Sway cannot key an output rule on resolution, so scale 2 on 4K displays
is applied by a user service that runs once at session start and again on
every output event, which is what makes it survive a display being
switched off and on. The scale guard in the jq filter stops the
subscription feeding itself. kanshi still owns mode and position; no
profile here sets a scale, so the two do not fight.
natural_scroll on type:pointer gives mice the same scroll direction as
the touchpads already had.
PCSX2 and Dolphin default to borderless-windowed rather than compositor
fullscreen, so the existing inhibit_idle fullscreen rules never matched
and swaylock engaged mid-game. Inhibit on focus for the emulators
instead. The Steam session is unaffected either way: swayidle is wanted
by graphical-session.target and conditional on WAYLAND_DISPLAY, and the
gamescope session provides neither.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The library-folder picker does open and Steam does create the directory
structure; the library simply never appears in the Storage UI. That rules
out the portal FileChooser for this symptom and points at the
write-and-execute probe Steam runs before recording the folder in
libraryfolders.vdf (ValveSoftware/steam-for-linux#8450). Document how to
reproduce that probe inside Steam's FHS sandbox with steam-run, and keep
library_folder_add as the route that reports a reason.
The Add a Non-Steam Game dialog is a separate symptom and keeps the
portal explanation.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Follow-ups from setting up the Console host, plus three desktop-side fixes
that apply to every Sway machine.
Console
practice, so
pkgs.pcsx2was already installed;pkgs.dolphin-emujoins itfor GameCube and Wii. The libretro cores stay for the sake of a single
frontend and a shared save/state layout.
session does not take on the real hardware — the television lands on ReGreet.
The config side is correct:
initial_sessionis present in the generatedgreetd.tomlandservices.greetd.restartevaluates tofalse. The likelycause is the session starting and then dying, which greetd answers by falling
through to
default_session. greetd hands a session the VT for its standardstreams, so whatever it printed on its way down was erased as soon as the
greeter repainted. The launcher now runs under
systemd-cat, so the reasonsurvives in
journalctl -b -t steam-session.steamtinkerlaunch. Steam's Add a Non-Steam Game dialog never appearson this host. That dialog browses through the XDG portal
FileChooserinterface (ValveSoftware/steam-for-linux#9447, not fixed).
steamtinkerlaunchwritesshortcuts.vdfwithout the dialog.The Steam library folder is a separate fault, documented but not fixed here.
The picker opens and Steam creates the directory structure at
/srv/games/steam; the library then never appears in the Storage UI. That rulesout the portal and points at the write-and-execute probe Steam runs before
recording the folder in
libraryfolders.vdf(ValveSoftware/steam-for-linux#8450). The docs give a way to reproduce that
probe inside Steam's FHS sandbox with
steam-run, and keeplibrary_folder_addin Steam's console as the route that reports a reason where the UI says nothing.
Sway (all graphical hosts)
wlr-randris installed. It prints the make/model/serial criteria kanshiprofiles are keyed on, and nothing else in the Sway package set covers output
query or adjustment.
so a user service applies it at session start and again on every output
event, which is what makes it survive a display being switched off and on.
kanshi still owns mode and position; no profile here sets a scale.
natural_scrollontype:pointer, matching the touchpads.borderless-windowed rather than compositor fullscreen, so the existing
inhibit_idle fullscreenrules never matched and swaylock engaged mid-game.The Steam session is unaffected either way:
swayidleis wanted bygraphical-session.targetand conditional onWAYLAND_DISPLAY, and thegamescope session provides neither.
Docs
docs/hosts/console.mdcatches up with the host's actual state — the hardwarescan is real now, the emulator set changed, and "untested claims" becomes a list
of open problems. Adds triage sections for autologin and for each of the two
Steam faults.
docs/keybindings.mdgains Console in its host list.Validation
nix fmtclean andnix flake checkpasses, including per-host evaluation.Nothing here has been booted on the Console yet; the autologin change is
instrumentation rather than a fix, and the Sway window criteria are regexes that
still need confirming against a running PCSX2.
b0607d23cdtob586f98037