Help getting Steam big picture mode on Gnome
Help getting Steam big picture mode on Gnome - Lemmy.World
I have installed CachyOS in my main gaming machine and i want it to work like the steam deck: Boot into big picture mode and then you can exit to desktop mode. I went with the desktop image instead of the handheld one because i wanted to use GNOME. I’ve looked at the cachyos-handheld package but it seems its only for KDE systems. I tried to make my own scripts to start the compositor using a one-shot system which i believe is what bazzite does, unfortunately i cant get the steam part to work, as the gnome part does work. If someone can take a look at it and give me a hand i would be extremely grateful. Here is the script you run to switch the next boot: #!/usr/bin/env bash set -euo pipefail usage() { cat <<'EOF' Usage: os-session-select <gamescope|gnome-wayland|gnome-xorg|plasma-wayland|plasma-xorg> Writes ~/.config/steamos-session-select and logs you out so the one-shot wrapper can launch the requested session exactly once on next login. EOF } target="${1:-}" case "$target" in gamescope|gnome) ;; -h|--help|"") usage; exit 1 ;; *) echo "Unknown target: $target"; usage; exit 1 ;; esac cfg="$HOME/.config" sentinel="$cfg/steamos-session-select" mkdir -p "$cfg" printf '%s\n' "$target" > "$sentinel" if command -v steam >/dev/null 2>&1; then steam -shutdown || true fi # End the current session (GDM should be set to autologin) if [[ -n "${XDG_SESSION_ID:-}" ]]; then loginctl terminate-session "$XDG_SESSION_ID" || true else systemctl --user exit || true fi It creates a file in the home directory to indicate to the boot script what to launch, then it kills the current session to restart the gdm manager. And here is the script of the actual launcher: #!/usr/bin/env bash set -euo pipefail sentinel="${HOME}/.config/steamos-session-select" xexec() { local cmd="$1"; shift if command -v "$cmd" >/dev/null 2>&1; then exec "$cmd" "$@" else echo "Error: required command '$cmd' not found." >&2 exit 1 fi } choice="" if [[ -f "$sentinel" ]]; then choice="$(tr -d '\n\r' < "$sentinel")" rm -f "$sentinel" || true fi choice="${choice:-"gamescope"}" case "$choice" in gamescope) if command -v gamescope-session-plus >/dev/null 2>&1; then unset WAYLAND_DISPLAY unset WAYLAND_SOCKET unset DISPLAY export XDG_SESSION_TYPE=tty export WLR_BACKENDS=drm export ENABLE_GAMESCOPE_WSI=0 exec gamescope-session-plus steam else echo "gamescope-session(-steam) not found in PATH." >&2 exit 1 fi ;; gnome) exec gnome-session ;; *) echo "Unknown session choice '$choice' – falling back to GNOME Wayland." >&2 exec gnome-session ;; esac When i look at the journalctl output for the error i see what causes the issue is: xdg_backend: Failed to initialize input thread Failed to load plugin 'libdecor-gtk.so': failed to init SDL_Vulkan_CreateSurface failed: VK_KHR_wayland_surface extension is not enabled in the Vulkan instance And then a core dump. Again, any help would be much appreciated, thanks!!