docs(console): separate the two Steam picker faults
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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
46c03df06d
commit
3311f64c6a
+56
-19
@@ -150,13 +150,12 @@ Steam titles. Added as Steam shortcuts they appear in Big Picture and inherit
|
|||||||
Steam Input, so the controller works in them without further configuration.
|
Steam Input, so the controller works in them without further configuration.
|
||||||
|
|
||||||
Steam's own **Games → Add a Non-Steam Game** is the documented route and is also
|
Steam's own **Games → Add a Non-Steam Game** is the documented route and is also
|
||||||
the one that tends not to work. Both that dialog's **Browse** button and the
|
the one that does not work here: the dialog never appears at all. That dialog's
|
||||||
library-folder picker below go through the XDG desktop portal `FileChooser`
|
file browsing goes through the XDG desktop portal `FileChooser` interface, and
|
||||||
interface; when the portal is unreachable the client silently falls back to a
|
when the portal is unreachable the client falls back to a legacy chooser that is
|
||||||
legacy chooser that is blank or inert — Valve
|
blank or inert — Valve
|
||||||
[#9447](https://github.com/ValveSoftware/steam-for-linux/issues/9447) and
|
[#9447](https://github.com/ValveSoftware/steam-for-linux/issues/9447), not fixed.
|
||||||
[#10415](https://github.com/ValveSoftware/steam-for-linux/issues/10415), neither
|
Check the portal side before blaming the client:
|
||||||
fixed. Check the portal side before blaming the client:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
busctl --user introspect org.freedesktop.portal.Desktop \
|
busctl --user introspect org.freedesktop.portal.Desktop \
|
||||||
@@ -297,21 +296,55 @@ RetroArch is pointed at these paths declaratively. The other two have to be told
|
|||||||
once, in their own UIs:
|
once, in their own UIs:
|
||||||
|
|
||||||
- **Steam** — Settings → Storage → the `+` control → add `/srv/games/steam` as a
|
- **Steam** — Settings → Storage → the `+` control → add `/srv/games/steam` as a
|
||||||
library folder. Games installed there survive a reinstall of the OS. That
|
library folder. Games installed there survive a reinstall of the OS. See
|
||||||
picker is the broken one described under
|
[When Steam will not register the library folder](#when-steam-will-not-register-the-library-folder)
|
||||||
[Adding non-Steam titles to Big Picture](#adding-non-steam-titles-to-big-picture);
|
below; it does not currently take.
|
||||||
when it comes up blank, use Steam's own console instead — open Steam with
|
|
||||||
`steam -console`, pick the **CONSOLE** tab and run:
|
- **Clone Hero** — set the song library path to `/srv/games/clonehero/songs` from
|
||||||
|
its settings screen. Clone Hero keeps its own config in `~/.clonehero`.
|
||||||
|
|
||||||
|
### When Steam will not register the library folder
|
||||||
|
|
||||||
|
Current behaviour on this host: the file picker opens, Steam creates the
|
||||||
|
directory structure at `/srv/games/steam`, and the library then never appears in
|
||||||
|
the Storage UI. So this is not the portal problem the non-Steam-game dialog has
|
||||||
|
— the picker works and Steam can write. The failure is in the validation Steam
|
||||||
|
runs before it records the folder in `libraryfolders.vdf`.
|
||||||
|
|
||||||
|
That validation is a write-and-execute probe: Steam drops a
|
||||||
|
`.steam_exec_test.sh` in the candidate folder, marks it executable and runs it.
|
||||||
|
If either step fails the folder is silently dropped, which is
|
||||||
|
[#8450](https://github.com/ValveSoftware/steam-for-linux/issues/8450) and is
|
||||||
|
usually a `noexec` mount or an ownership problem — neither of which is obviously
|
||||||
|
true here, since `/srv` is on the ext4 root and the tree is
|
||||||
|
`lyrathorpe:users` 2775.
|
||||||
|
|
||||||
|
Reproduce the probe **inside Steam's FHS sandbox**, which is where the client
|
||||||
|
actually runs it — `steam-run` is installed by the steam module for exactly this
|
||||||
|
kind of thing:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
steam-run sh -c '
|
||||||
|
printf "#!/bin/sh\nexit 0\n" > /srv/games/steam/.steam_exec_test.sh &&
|
||||||
|
chmod +x /srv/games/steam/.steam_exec_test.sh &&
|
||||||
|
/srv/games/steam/.steam_exec_test.sh &&
|
||||||
|
echo "probe ok"
|
||||||
|
'
|
||||||
|
rm -f /srv/games/steam/.steam_exec_test.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Then ask the client directly. Steam's console reports a reason where the UI
|
||||||
|
says nothing — open Steam with `steam -console`, pick the **CONSOLE** tab and
|
||||||
|
run:
|
||||||
|
|
||||||
```
|
```
|
||||||
library_folder_add /srv/games/steam
|
library_folder_add /srv/games/steam
|
||||||
```
|
```
|
||||||
|
|
||||||
The directory must already exist and be writable by the user Steam runs as,
|
The directory must already exist and be writable by the user Steam runs as,
|
||||||
which `systemd.tmpfiles` guarantees. The command does not create it.
|
which `systemd.tmpfiles` guarantees; the command does not create it. Whatever it
|
||||||
|
prints, plus `~/.steam/steam/logs/content_log.txt`, is the evidence to work
|
||||||
- **Clone Hero** — set the song library path to `/srv/games/clonehero/songs` from
|
from.
|
||||||
its settings screen. Clone Hero keeps its own config in `~/.clonehero`.
|
|
||||||
|
|
||||||
## Steam and Proton
|
## Steam and Proton
|
||||||
|
|
||||||
@@ -407,9 +440,13 @@ The machine is installed and Sway works. Still outstanding:
|
|||||||
and `__GLX_VENDOR_LIBRARY_NAME=nvidia`, the standard fix, but the combination
|
and `__GLX_VENDOR_LIBRARY_NAME=nvidia`, the standard fix, but the combination
|
||||||
has a history of needing more. Read `journalctl -b -t steam-session` first —
|
has a history of needing more. Read `journalctl -b -t steam-session` first —
|
||||||
see [When the television lands on ReGreet instead of Steam](#when-the-television-lands-on-regreet-instead-of-steam).
|
see [When the television lands on ReGreet instead of Steam](#when-the-television-lands-on-regreet-instead-of-steam).
|
||||||
- **Steam's file pickers do not open** — both the non-Steam-game **Browse**
|
- **Steam will not register `/srv/games/steam` as a library folder.** The picker
|
||||||
dialog and the library-folder picker. Upstream client bugs with usable
|
opens and the directory structure gets created; the library never appears in
|
||||||
workarounds; see the two sections above.
|
the Storage UI. Not the portal — see
|
||||||
|
[When Steam will not register the library folder](#when-steam-will-not-register-the-library-folder).
|
||||||
|
- **Steam's Add a Non-Steam Game dialog never appears.** Separate symptom,
|
||||||
|
probably the portal `FileChooser`; `steamtinkerlaunch` writes the shortcuts
|
||||||
|
without it in the meantime.
|
||||||
- **Boot into Big Picture has not been exercised**, since autologin has not run.
|
- **Boot into Big Picture has not been exercised**, since autologin has not run.
|
||||||
- **Television resolution and refresh.** gamescope takes the output's native
|
- **Television resolution and refresh.** gamescope takes the output's native
|
||||||
mode by default. Add `gamescopeSession.args = [ "-W" "3840" "-H" "2160" "-r"
|
mode by default. Add `gamescopeSession.args = [ "-W" "3840" "-H" "2160" "-r"
|
||||||
|
|||||||
Reference in New Issue
Block a user