-
-
Notifications
You must be signed in to change notification settings - Fork 30
Installing on Steam Deck
These instructions require making your filesystem read-write. Efforts have been made to use distrobox but so far have not succeeded. Please contribute if you have success with that!
Make sure you're running on at least 3.6, which might require switching to the beta or alpha channel
I was getting errors:
Unrecognized option: -byteswappedclients
(with lots of other text).
Seems related to this bug: https://bugs-devel.debian.org/cgi-bin/bugreport.cgi?bug=1050642 and SteamOS 3.5 has mutter 44.2
sudo steamos-readonly disable
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman-key --populate holo
if not, add :/usr/share to it
sudo pacman -S --needed base-devel git
# existing packages are reloaded here in order to install their header files
sudo pacman -S glibc linux-api-headers systemd-libs openssl libevdev libusb json-c curl hidapi python python-pydbus 'gnome-shell>=45.0' python-yaml
work=$(mktemp -d)
cd $work
mkdir xr-driver
cd xr-driver
curl 'https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=xr-driver-git' > PKGBUILD
curl 'https://aur.archlinux.org/cgit/aur.git/plain/hooks.install?h=xr-driver-git' > hooks.install
makepkg -si
cd $work
mkdir breezy
cd breezy
curl 'https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=breezy-desktop-gnome-git' > PKGBUILD
makepkg -si
Sometimes the mouse is constrained to a 1920-pixel region in the middle of the screen. If this occurs, you can try the following steps:
- Quit Breezy,
- Put glasses into side-by-side mode -- a long press on the darkening button will do this on the Viture Pro,
- Launch Breezy with double-width,
MUTTER_DEBUG_DUMMY_MODE_SPECS='3840x1080@60' exec dbus-run-session -- gnome-shell --nested
- Make sure you have "wide screen" checked in Breezy settings.
https://www.reddit.com/r/SteamDeck/comments/t92ozw/for_compiling_c_code
My Steam Deck dock does not support displayport alt mode on any of its ports (except the one that goes into the deck of course). There are a few docks out there that do, but not many. If you need to use a third party dock with your glasses, make sure it has a port with the displayport alt mode symbol
like | or |
---|
For reference, I'm using the Inateck 10-in-1 USB-C hub (Amazon link)
This starts the breezy desktop in a nested gnome-shell and, after you activate the window (like by clicking on it) and, provided you have the window rule below, this will full-screen the window, remove the title bar, and make it ignore KDE desktop keyboard shortcuts so that the desktop can fully function as a gnome desktop.
This expects the classify-gnome-shell
script to be in your path.
Note the last line of the script is if you need a double size window for wide screen mode. Wheany suggested trying this and it worked for me.
#!/bin/sh
clssify-gnome-shell&
MUTTER_DEBUG_DUMMY_MODE_SPECS='1920x1080@60' exec dbus-run-session -- gnome-shell --nested
#MUTTER_DEBUG_DUMMY_MODE_SPECS='3840x1080@60' exec dbus-run-session -- gnome-shell --nested
This script waits for you to make the nested gnome shell active (like by clicking on it) and then puts a "gnome-shell" class onto the window (which has no class for some reason). I have a KDE window rule that needs the window to have the "gnome-shell" class.
#!/bin/sh
while true; do
id=$(xdotool getactivewindow)
if xprop -id $id | grep -q "WM_NAME.*gnome-shell"; then
xdotool getactivewindow set_window --class gnome-shell --classname gnome-shell
echo -e "\n\nGNOME-SHELL: $id\n\n"
break
fi
sleep 0.25
done
This rule full-screens the window, removes the title bar, and makes it ignore KEY desktop shortcuts (so you can use the super key in your nested gnome session).
[gnome-shell nested]
Description=gnome-shell nested
above=true
disableglobalshortcuts=true
disableglobalshortcutsrule=2
fullscreen=true
fullscreenrule=2
noborder=true
noborderrule=2
skiptaskbar=true
title=Steam Keyboard
type=16
wmclass=gnome-shell gnome-shell
wmclasscomplete=true
wmclassmatch=1
To install the rule
- copy the above text into a file
- go to KDE settings and click on Window Management
- click on Window Rules and then click the Import button to import the rules
I currently use Emacs remotely for my work (because the emacs lsp glue code doesn't currently support tramp) and
I've found that, even though this is not an ideal setup, running X inside of gnome-shell -nested
inside of the
X on the desktop actually does work. So, until we can run Wayland on the Steam Deck desktop and that language
server code works within tramp, this is what I'll be using for my work. Aaaand, it's a full-screen window for
now, until I can get rootless working.
This runs the awesome
window manager which, just to make things even more indirect, I have installed inside an
Ubuntu distrobox so I can avoid dirtying the Steam Deck's root any more than I need to. So I run xwayland in
distrobox. When you quit awesome
, it kills xwayland for you.
So feel free to use this but you have been warned...
#!/bin/sh
Xwayland :3 -fullscreen -geometry 1920x1080&
#Xwayland :3 -fullscreen -geometry 3840x1080&
pid=$!
sleep 2
echo PID=$pid
export DISPLAY=:3
awesome
kill -2 $pid