Skip to content

Instantly share code, notes, and snippets.

@red-dragon65
Last active February 21, 2024 16:26
Show Gist options
  • Save red-dragon65/c7771a9347840fbcf5528f1528769836 to your computer and use it in GitHub Desktop.
Save red-dragon65/c7771a9347840fbcf5528f1528769836 to your computer and use it in GitHub Desktop.
How to properly run Steam Decks UI on Manjaro

This guide is deprecated! Please take a look at the alternative solutions below.

This guide was created to run the steam deck ui on a linux desktop before valve officially updated big picture mode for the steam client. This guide no longer serves any purpose.

Big Picture Mode

  • The steam client now officially uses the steam deck ui (gamepad ui) for big picture mode.

HoloISO

  • A reversed engineered version of valves steam deck OS

ChimeraOS

  • A low maintenance arch based distro specializing in running valves big picture mode

GameScope

  • Run steam in a separate compositor session
  • My use case: Continue using your computer for productivity while a game is being streamed using steam in home streaming.

Running Steams Deck UI on Manjaro with Minimal Glitches

This is an unofficial short guide on running Steam Decks new UI on Manjaro. I am kind of a linux noob, so forgive me if I get a few things wrong in this guide. Also, I have not fully tested everything so there may be some weird issues that I have overlooked.

Link to reddit discussion post:

Specs tested on:

  • CPU: i5 4670k
  • RAM: 16gb Corsair
  • GPU: 5700xt Power Color Red Dragon
  • Monitor: Ultrawide 1440x3440

Note: This guide may or may not work with an Nvidia graphics card. Try at your own risk.


Install Manjaro

  • Download manjaro kde
  • Flash the image to a USB using 'BalenaEtcher'
  • Install to a free partition on your PC

Please note: this guide assumes you use the open source drivers for an AMD card.


Prepare Packages

Open konsole from the applications menu and run the following commands:

  • Update packages with pacman -Syu
  • Install gamescope using pacman -S gamescope

Note: This part may be un-necessary. I do not know if this guide will work with steam-manjaro. My assumption is that steam-native is more likely to guarantee that the deck ui has the libraries it needs to run, but I honestly do not know if that is the case. - Uninstall steam-manjaro using pacman -Rs steam-manjaro - Install steam-native using pacman -S steam-native

Update: The pre-installed steam-manjaro is the recommended package to use to prevent library compatibility issues. https://wiki.archlinux.org/title/Steam/Troubleshooting#Steam_native_runtime

Once all the packages are installed, reboot your computer for changes to take effect.


Prepare Steam

Run steam for the first time to allow it to update

  • Run steam in the command line
  • OR click on the steam launcher in the applications menu

Login into steam and go to settings -> Steam Play and click Enable Steam Play for all other titles

At this point, you should test that games are running properly with proton on steam. You can:

  • Download a game and just run it
  • Follow the guide below on loading games from an NTFS hard drive (note: it is highly recommended to use Ext4 to store your games)

Once steam is launching games without any issues, exit out of steam and move on to the next step


Running Deck ui

Initialize the deck ui:

  • Run steam -steamos3 -gamepadui -steamdeck -steampal in the command line
  • Follow through the deck ui's on screen first time setup
  • Near the end of the setup, the deck ui will complain that the setup cannot continue
  • Exit out of steam again
    • Hit alt+tab to gain access back to the desktop
    • Hit ctl+c in the terminal to stop steam from running

Run the working deck ui:

  • Run gamescope -e -- steam -steamos -gamepadui
  • Steam should start running with the new deckui
  • Note: You should specificy the gamescope resolution using the -w -h -W -H commands. Otherwise steam will default to a resolution that I am assuming is the decks resolution.

Additional Notes

  • Please check the gamescope github for all the flags! https://github.com/Plagman/gamescope
  • Without the gamescope compositor running, you will get weird graphical glitches in the deck ui (you can see the desktop when you open the left hand side menu, you cannot open the steam overlay in game)
  • You must run gamescope with the -e flag. This enables steam integration with gamescope. If you do not do this, then games will just show a black screen when attempting to run them. Source: ValveSoftware/gamescope#388
  • You can run gamescope with the -w -h -W -H flags to specify the resolution of steam and games.
  • You can use the -b command for borderless mode, and the -f command for full screen mode.
  • You can use the -U command to enable AMD FSR 1.0, and the -r command to set the frame limit. By default, the framerate limit is unlimited.

Optional tips

Loading existing games onto Steam:

  • If you are dualbooting, you can load your existing games into steam. However, if the drive containing your games is formatted as NTFS, steam cannot load the games unless you first fix some issues.
  • First: Make windows unlock the hard drives write access
    • Disable fast boot in the bios
    • Boot into windows, login, then shutdown
    • Now, you should be able to create folders on your hard drive in linux using dolphin wihtout any issues
  • Second: Update the UUID settings in linux for your hard drive
  • Third: Add the games folder to steam
    • Rename your steam folder on your hard drive to SteamPlay
    • Launch steam normally (no deck ui commands)
    • Go to settings -> download -> steam folder and select your hard drive
    • Steam should automatically find the SteamPlay folder and load your games
  • At this point, steam should automatically start a bunch of downloads. Steam needs to get additional files to allow games to work on linux. For now, I suggest pausing all downloads except for a couple games you want to test, and allow steam to download the SteamPlay compatibility tools (Steamworks Common, Steam Runtime Soldier, Proton).

Gamemode:

Running steam exclusively:

  • I believe that there is a way to disable plasma from running on login and instead run steam only. Doing this would offer a bit more performance as only the gamescope compositor would be running instead of kwin and plasma running in the background. One way to test that this is possible is by switching to a different console using ctl+alt+f1. Then run gamescope -e -- steam -steamos -gamepadui

Glorious Eggroll Proton:

  • You can use GE Proton if you want. The tool at https://github.com/AUNaseef/protonup can help you download the latest GE proton versions. (you can install protonup from the AUR using yay)

Other notable issues

Windows:

  • Steams menu overlay did not work for me in Windows 10 when a game was running
  • The steam controller did not work in games on Windows 10 with the deck ui running
  • The steam controller could not be configured on Windows 10 with the deck ui running

Linux:

  • Various settings in the deck ui menu do not work
    • Do not play with the deck ui's settings! They may possibly break you steam install. (I believe developer mode will break steam)
  • Clicking Switch to desktop button in the decks ui's power menu does not work. Instead, hit alt+tab to escape back to the desktop.
  • Clicking the sleep button in the deck ui's power menu sleeps the computer. However, my computer crashes when attempting to wake back up. This only seems to occur when using wayland.
  • Steams store can look a bit glitchy at weird resolutions like 3440x1440.
  • Opening up the left hand menu in the deck ui will make the background go black. The correct behavior should blur the background. You can instead run -steamos3 which will enable background blurring, but it may cause the left hand menu to not scale correctly making buttons hidden off the screen (the menu gets borked if you change the resolution parameters for gamescope).
  • The battery indicator does not show up on desktops, but may show on laptops. This means that on desktops you cannot access the right hand menu which would allow you to access your steam friends list. You can still access the battery indicator menu by pressing Home + A for Steam/Xbox controllers, or Home + X for Playstation controllers.

Other:

  • On my laptop, it seems to work with Nvidia cards if you run prime-run steam -steamos -gamepadui but it runs at a low framerate. This may because I ran without gamescope.
  • In the regular steam app, you can enable hardware acceleration settings -> Interface. However, I do not know if this affects the deck ui's performance.
@GDYendell
Copy link

Thanks for this. It works well for me on arch. I can run it on tty2 (ctrl+alt+2), as tty1 is in use.

One thing I would note is that installing gamescope, gamemode and lib32-gamemode seemed to break controller support in game even when launching from desktop as usual (it worked in the deck ui), but a reboot fixed it.

@red-dragon65
Copy link
Author

Interesting. I didn't realize that was an issue as I had to restart my computer to get Windows to unlock the hard drive before I could start testing games on Linux. Thank you for commenting. I've updated to the guide to let users know a reboot is required for some changes to take effect.

@eVen-gits
Copy link

Hey!

Do all the coontrols/buttons work normally? Mostly I mean the TDP configurations and mangohud etc?

What are the differences between running SteamOS and Manjaro in this case?

@red-dragon65
Copy link
Author

@eVen-gits
No. Last I checked, you cannot alter the TDP settings or even open mangohud. This is because of two reasons:

A) The right hand menu cannot be accessed because the battery indicator is not present. At least, that was the case on my desktop and laptop. This is unlike the steam deck which, in addition to the battery indicator, has a dedicated controller button to open the menu . I have seen ChimeraOS running the deck ui with the battery indicator, but I am unsure of what work around is possible to make that happen. Also, I don't know if it is possible to create a hotkey that can open the battery menu.

B) Even if the menu could open, most of the menu settings don't/won't work any ways (such as settings the fps limiter) as those settings only work for the steam deck and are not coded to work for PC's as of yet. I think MangoHUD may be the exception to this but I have not tested it. It may be possible to run MangoHUD on the desktop and then switch back to the Deck UI, but I am not sure if MangoHUD will show or work as 'gamescope' may block it.

@red-dragon65
Copy link
Author

@eVen-gits
As for your SteamOS vs Manjaro question, correct me if I am wrong, I am going to assume you mean 'the version of SteamOS running on the Steam Deck' vs 'this guide on running SteamOS on Manjaro hack'.

They are basically the same except SteamOS on the Steam Deck is less buggy and more polished. With my guide, the battery indicator menu cannot be accessed, you cannot switch to the desktop using the deck ui menu, and there may be various graphical issues that popup depending on your specific install. Also, there is always a chance things will break as dependencies get updated.

@red-dragon65
Copy link
Author

@eVen-gits
Honestly, this guide has become deprecated since holoiso came out. With holoiso, the only thing that doesn't seem to work is the TDP settings and GPU clock settings. Everything else works just like the Steam Deck.

If you are looking to install SteamOS, definitely take a look at holoiso. It is a much more polished and bug free experience as well as being more straightforward to get setup. I will update the gist to reflect this statement.

@red-dragon65
Copy link
Author

@eVen-gits
Actually, it seems like holoiso also has issues with the battery indicator not appearing. However, I did find info online on how to access the battery indicator menu. Apparently, you can press the Steam/Xbox home button + A to make it appear. For a playstation controller, you can hit the home button + X.

@eVen-gits
Copy link

Thank you a lot for your detailed replies, @red-dragon65 .

I wanted to switch to Manjaro on Steam Deck, because that is what I use for my PC and I like their verion of software control center (AUR, snap and flatpack support). Seems like it's a good decision that I waited.

@blurymind
Copy link

Does HoloIso get updates and fixes from valve's release cycles?

Using manjaro has the advantage of not having to deal with the immutable fs, but i fear that updates may bork it

@red-dragon65
Copy link
Author

@blurymind
I'm not entirely sure how holoISO works as I've not used it myself and haven't really looked into it with any depth. My understanding is that holoISO is setup from the start to get upstream packages from valve so that the system stays up to date with the latest releases. You really should ask the holoISO sub reddit for more clarification.

There is also this older post I found that kinda explains how to update holoISO:
https://www.reddit.com/r/holoiso/comments/110uqtv/question_about_updating_holoiso/

@red-dragon65
Copy link
Author

@blurymind
As for not wanting to bork your system, don't use holoISO. Honestly, I would expect holoISO to be more unstable compared to other options as it is setup in a non-standard way from other OS's. I mean, it is a reversed engineered version of the steam deck iso and is experimental in nature.

Here's the thing, holoISO and manjaro are both non-immutable.

The issue is, holoISO is built on top of manjaro, but uses a different repository for some of its packages over the standard manjaro repositories. So there is a greater risk of breaking a holoISO install if you install the wrong packages. Or, you could install a package that prevents the next update from working properly.

However, if you just use manjaro by itself, you are less likely to break something since it uses the standard manjaro repositories. There is less of a chance of package conflicts to occur since everything is running on a default baseline.

If you want immutability, then get ChimeraOS. It now uses the new big picture ui, and offers the same features as the steam deck/holoISO (ie. framerate settings, mangohud, etc.). It is also more reputable due to how long it has been out, and the fact that it is still clearly being actively worked on unlike holoISO. Although, it probably lags behind the latest steam deck updates due to stability reasons.

It also depends on what setup you are going for.
For a desktop, I just use plain old manjaro. Even when installing packages from the aur, I've never had an issue with package conflicts occurring when updating my system.

For a console like experience for something like an HTPC, I would recommend ChimeraOS. I would probably never install additional apps/packages, and the immutability gives some peace of mind that updates will roll along with a very low chance of any issues occurring.

@blurymind
Copy link

Chimera does not allow dual booting with windows.
Is there a way to set this up as a desktop session in manjaro - one that doesnt run ontop of kde/gnome?

I believe manjaro has a mutable file system, its not like steamos in that regard.

@blurymind
Copy link

blurymind commented Feb 16, 2024

I wonder if we can get gamescope and the new steamui to work as a login session and use wayland instead of x11.

probably worth mentioning
https://github.com/thor27/steam-login/tree/master

@red-dragon65
Copy link
Author

@blurymind
Hmmm, this is not something I have experience with at all, but I did some poking around online.
It seems like it should be possible to add gamescope as a session that can be selected from the login screen, though I haven't actually tried these methods my self.

The easy way:

  • According to this reddit post, you can install the gamescope-session package from the aur. Then, gamescope/steam should be a select-able session on the login screen.

The manual way:

  • The OP in this post seems to have followed the steam and display manager arch wiki guides. It seems to be as straight forward as creating a config file for a session and have it point the app you want to launch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment