Lists of useful tools, software, mods, websites and other resources
These are lists of some tools and software that are useful for Steam Deck and can enhance your experience with it, as well as all the websites and other such Steam Deck resources I know.
I made these lists for the wiki on Reddit's SteamDeck sub and I thought it was a pretty useful to keep around. I wanted to dump them here for everybody to preserve them and to maybe find a new home for this Steam Deck resource.
Let me know what you think.
List of tools and homebrew
Below is a list of tools and homebrew that can enhance your experience with the Steam Deck. Since the Steam Deck offers most things that a normal Linux desktop environment can, tools are included that can be found in the Discover store (including from non-default repositories) and have proven to be an especially good fit.
BCML (a modding tool voor Breath of the Wild for WiiU) can be difficult to get running on Steam Deck, because it uses an immutable filesystem and the version of Python installed by default is higher than what BCML supports. This script helps people install it.
A graphical and themeable emulator front-end that allows you to access all your favorite games in one place, which is installed by Emudeck and Retrodeck, but can also be used by itself.
This project aims to make modding and playing Bethesda games on Linux as easy as possible. It does that by providing installers which automatically setup a working experience for the user.
Steam ROM Manager is a super flexible tool for adding non-Steam games to steam in bulk and managing their artwork assets. It can be installed with Emudeck, but can also be used by itself.
Filelight is an application to visualize the disk usage on your computer by showing folders using an easy-to-understand view of concentric rings. Filelight makes it simple to free up space!
Syncthing is a file synchronization tool like Dropbox, except that it can work with your own machines and without a server. This
can be very useful for keeping non-Steam and emulator save games in sync or backed up.
Heroic is an Open Source Games Launcher. Right now it supports launching games from the Epic Games Store using Legendary and GOG Games using our custom implementation with gogdl.
Installs the latest GE-Proton and several non-Steam launchers under one Proton prefix folder and adds them to your Steam library. Reddit release post for v2.7
Steam Tinker Launch is a versatile Linux wrapper tool for use with the Steam client which allows for easy graphical configuration of game tools, such as GameScope, MangoHud, modding tools and a bunch more. It supports both games
using Proton and native Linux games, and works on both X11 and Wayland.
[This application does not seem to be maintained any longer.] Crankshaft is a Steam client plugin manager and framework that lets you install and create plugins to add more functionality
to your Steam client.
Chiaki4deck is a fork of Chiaki, adding features for the Steam Deck. It is a free and Open Source Client for PlayStation 4 and
PlayStation 5 Remote Play. It can be used to play in real time on a PlayStation as long as there is a network connection.
Like AnyDesk, allows remote desktop connections to your Steam Deck. Disabling read-only on the filesystem is required to install, but otherwise works very well.
Use your phone as a keyboard and mouse, and copy/paste between devices (apps for iOS and
for Android available.) Gained improved support for
Linux and Steam Deck in December 2022.
An open source TeamViewer alternative, remote desktop software. Works out of the box, no configuration required. Use the AppImage from the nightly build.
Replace the Deck startup video file with a file of the user's choice. Randomizer provides two features: individual random set and on-boot randomization. Reddit release post
CoreKeyboard is an X11-based virtual keyboard. It has the advantage over Valve's built-in keyboard to offer access to special keys such as Ctrl, Alt and function keys.
Great on Deck browser extension for Chrome or Firefox
See what games are verified for the Steam Deck and which medal they have on ProtonDB in the Steam store.
Qbert generates a root overlay where you can install whatever software you need without messing your filesystem.
NOTICE: something is broken atm, Qbert is not creating a correct overlay so basically the software is not working as intended.
An application to help you keep track of the different games you have on your SD Cards. If you ever found yourself wondering if you already have a game installed on a different SD Card then this is for you. Reddit post by u/ddotthomas.
On this Steam page, you can find a list of Valve hardware and their serial numbers. You can click on the Steam Deck in the list to view a list of its
hardware components.
Boiling Steam is dedicated to covering the world of PC Linux Gaming since 2014. The site often reports on the Steam Deck, as the search results the link points to show.
overkill.wtf primarily focuses on the Steam Deck, with a hint of Switch, PC gaming and whatever else we find interesting at that moment--but mostly Steam Deck.
Unofficial Steam Deck compatibility website. Verification, performance reviews and tweaks for Steam Deck.
Emulation guides, Epic Games Store, Ubisoft Connect games and more.
A website where you can upload and share community-made Steam Deck boot videos (plus in the future, other things like themes and an app to automatically apply them to the Steam Deck)!
It might be a good idea to remove r/steamdeck_linux from the list. I restricted that subreddit a while ago, and this community serves as it's replacement.
This little snippet covers how to get Syncthing to run in background on boot regardless of Desktop environment (so that you've got full synchronisation even in default game code), might be worth adding it under the link to Syncthing. :)
I don't know, I felt that such things move into the realm of guides, and many of these things are either general Linux skills, as well. Also, it costs a lot of time and effort to do this for a large number of software.
Basically, lists such as these help you to find what is available, but the specific documentation for those tools can help you further when needed.
Of course, I know my way around Linux, so those kinds of guides would be more aimed at low to medium technical users, which again, take a lot of time to write.
I've been looking for a way to replace my Steam Link with the Steam Deck as a PC Desktop Streaming Target. And the Steam Link Linux app should be the solution.
SyncThing is great. I have it on all my computers and a VPS. At least two clients need to be online for them to be able to transfer data, of course, so that VPS comes in handy. Something like a Raspberry Pi would work.
I sync all my emulator save games with it, for instance.
On the SteamDeck, in Desktop mode, I installed the SyncThingy app via the package manager and followed the instructions to set it up as a service that starts at boot time, so it will even work in Gaming mode.
Once that was running, I went through the process in SyncThing to synchronize my PC and the Steam Deck, which does take a few clicks and confirmations on both the PC and the Steam Deck, but after that it just started copying the game folders automatically.
After a game had sync'd to the Steam Deck, I added it to Steam, switched back to Gaming mode and played it for a bit. After saving my game, I checked on the PC to see that the save files that added to the game folder on my Steam Deck also now showed up on my PC.
SyncThing is hands down my favorite software ever.
People often recommend shit like Nextcloud for personal file hosting where you need to set up a server and have everything connect to that. There is no central server in SyncThing (unless you manually set up the syncing rules to create something like that).
Not only is setting up SyncThing stupidly easy because you don’t have to setup a server (it is so easy it has a damn QR code reader button, if your device has a camera you can have one device show a QR code and the other scan it and boom they are connected that’s it), it also means you don’t have to maintain a server as a central nexus point indefinitely. You can add and remove devices from sharing a folder in any way you want. The original device that shared the folder can be long gone and it is no problem. I don’t know if people intuitively grasp how much easier that makes retaining important file folders longterm, especially if you are disorganized, chaotic and prone to losing, destroying or not properly maintaining things like I am lol.
A raspberry pi works great as a SyncThing device that you can leave always on to catch your other devices when they connect to the internet briefly and sync their folders, but if the folder is small enough and your phone has the space, your phone works even better. SyncThing works on both Android and iOS (with the paid app mobiussync).
Honestly SyncThing is a stunning piece of software, the kind that actually legitimately changes your life when you get used to using it, and thank god it isn’t locked into some corporations silo to only work with that companies products.
As a pro tip, this kind of file sharing between devices that may not both happen to be online at the same time for long periods can create issues where both devices have an updated version of a file from when they last connected (which is one of the reasons that having an always on device like a raspberry pi or phone is nice). This is a potentially a hard problem, but SyncThing handles this great with a sync conflict resolving utility where you are prompted what to do for each sync conflict.
Something I recommend to further mitigate potential issues is for folders with a relatively small amount of files, go into the folder options and set it so SyncThing keeps the last 10 or so versions of a file (if it’s all small files go crazy and do 20 who cares). That way if you do make a huge mistake and lose a critical updated file you can just grab it from the backups. The amount of previous versions of files SyncThing keeps is set per folder on each device separately, so when sharing a folder, your device with a huge amount of storage can be set to retain many older versions of files and your smartphone with little available storage can be set not to retain any or very few.
Since the Steam Deck is just Linux, I simply use Linux tools for that. I like the command-line, so I mostly use gdu there. It helps to learn the structure of the file system. Of course, there are GUI tools available and on the list, as well.
But some people don't like going to the desktop, so I guess some sort of tool within game mode would be nice for them.
For Chiaki, could we add a link specifically to Chiaki4Deck? Last I checked Chiaki was in maintenance mode and wasn't accepting edits to fix issues with trackpad swipes and some other deck specific improvements. Someone from the community forked Chiaki and made chiaki4deck, available on the discover store to remedy these issues.
An Easy Way To Copy A Controller Layout Configuration From One Game To Another
I have unfortunately not been able to figure out how to load controller configurations that I have shared to steam into games that weren't the original game I made that controller config in. I click on the controller layout and it fails to load and reverting back to the layout I already had selected.
My recommendation for getting around this is adding the file manager Dolphin as a non-steam game to steam as well as "Corehunt" (which you have to download from Discover, it is made by the same people that made CoreKeyboard). Or you can just use Dolphin and Corehunt in desktop mode.
Go to the game you want to copy a controller layout into. Edit one of the default controller layouts, just make a random change to it, rename the controller layout to a unique name like TARGET_game then export the file as a personal save (or a personal shareable save I can't remember which).
In Corehunt, search for the file, Corehunt should find the file fairly quickly (it is muchhhh faster and more thorough than the other file search programs I have used on the Steam Deck so far). Note the file path.
If needed, also search the name of the controller layout you want to copy into the game (name that layout something you can search for easily too).
Navigate to the file path for your controller layout you want to copy, click split view in dolphin and then open up the controller layout for the game you want to copy the controller layout into (that contains your "Target_game" file) and.... drag and drop copy!
Done!
Note... you can also look up your steam deck's file path to controller layouts in a guide or documentation but the filepath is really annoying and one of the folder steps is your steam user-id.... so I actually think this explanation is much more concise and easy to do. Just let Corehunt find the folder location for you and then pin it to Dolphin's sidebar so you can quickly jump to it again.
Steam games should name themselves according to the name you have in Steam, but sometimes the folder name is just a number (the steam game's id number or something).
There's a link to the app page which then has the download. The first is incredibly hidden, and the second is quite bloated too.
The Steam Link app page may be useful for the other download links too - for Steam Deck to other device steaming. But I think the direct Flatpak link is fitting by itself too for other Steam device to Steam Deck streaming.
Got my Steam Deck recently and just wanted to add image resources to non steam game icons for Plex and Firefox and such. Remembered seeing this post here a while back and now I’m deep in the rabbit hole. Thanks for this super useful post!
No problem! For adding art for non-Steam games, I’d really recommend the SteamGridDB plugin for Decky Loader! And of course Steam ROM Manager for things like emulators and ScummVM, etc.
I am going to probably make a post/video about using the setup Swetha lays out in this article after I have fiddled around with this setup to have enough good advice to collect into a post, but it is worth linking to this awesome guide here as well on how to run a LLM/AI locally on your steam deck (meaning an internet connection is not needed and no data leaves your device period). There are a million ways to do this but what is so clever about Swetha's is that because the whole setup is contained within a distrobox ubuntu instance that lives in your home directory, updates to your Steam Deck won't break everything (Steam-os is an immutable operating system which can cause headaches with having to re-setup things after every update).
Also because this method relies on using a llama.cpp through a terminal, there is no reason this workflow couldn't be done with a terminal program open in Gaming Mode on the Steam Deck (or through Decky Terminal, but I can't figure out how to easily paste text in and out of it ughh).
Edit you can also just install jan from here as an app image https://jan.ai/ and load in .gguf files you download from huggingface.co
Swetha recommends getting a model that is less than 4 gigabytes and loading it into the GPU, but I haven't found a >4 gig model that actually gives that useful information yet. I have had success with running these models on the CPU
In particular I found the sweet spot to be these specific models:
mistral-7b-instruct-v0.1.Q5_K_S.gguf Q5_K_S
mistral-7b-instruct-v0.1.Q5_K_M.gguf Q5_K_M
This one runs too slow on the CPU to be useful at least with the settings I am currently using:
mistral-7b-instruct-v0.1.Q6_K.gguf Q6_K
I like the handy chart that comes along with this release of mistral models as it gives you a good starting point from which to figure out generally what size model is practical and optimal for your computer.
This reddit thread had some good general information on how to download AI models from hugginface.co and run them
Specifically this quote from that reddit thread is useful
Steps:
Install llama.cpp, the steps are detailed in the repo.
Download an LLM from huggingface.
For those not familiar with this step, look for anything that has GGUFin its name. You will probably find that on TheBloke's page. If you are not sure which one to choose, start with one that has lots of likes or downloads, or browse this community for impressions and feedback. Once you find the model you like, go to its page, click on Files and versions` and then choose a file that ends with .gguf and download it. If you are not familiar with the sizes, go for Q4_K_M and make sure the size of the file seems to be something that can fit in your GPU or CPU memory.
Here is a guide to installing and using distrobox on the Steam Deck. The usefulness of using distrobox is that distrobox sets up little mini environment you can install programs too that is outside the context of the immutable SteamOS operating system. Thus, after updates, software or setups you install in a distrobox environment will remain the same. Distrobox is more than just a simple bifurcation between the main SteamOS and a virtual environment, it provides tools to set up the ability to connect programs between the two for advanced setups (though you can ignore this stuff and just use the defaults).
What Distrobox does (quote)
Simply put it's a fancy wrapper around podman, docker or lilipod to create and start containers highly integrated with the hosts.
The distrobox environment is based on an OCI image. This image is used to create a container that seamlessly integrates with the rest of the operating system by providing access to the user's home directory, the Wayland and X11 sockets, networking, removable devices (like USB sticks), systemd journal, SSH agent, D-Bus, ulimits, /dev and the udev database, etc...
It implements the same concepts introduced by https://github.com/containers/toolbox but in a simplified way using POSIX sh and aiming at broader compatibility.
All the props go to them as they had the great idea to implement this stuff.
It is divided into 12 commands:
distrobox-assemble - creates and destroy containers based on a config file
distrobox-create - creates the container
distrobox-enter - to enter the container
distrobox-ephemeral - create a temporal container, destroy it when exiting the shell
distrobox-list - to list containers created with distrobox
distrobox-rm - to delete a container created with distrobox
distrobox-stop - to stop a running container created with distrobox
distrobox-upgrade - to upgrade one or more running containers created with distrobox at once
distrobox-generate-entry - to create an entry of a created container in the applications list
distrobox-init - the entrypoint of the container (not meant to be used manually)
distrobox-export - it is meant to be used inside the container, useful to export apps and services from the container to the host
distrobox-host-exec - to run commands/programs from the host, while inside of the container
note because distrobox is a process that can be run by command line, you could presumably launch distrobox in a terminal window in Gaming Mode and keep everything for that session within that steam Big Picture window no problem. I am gonna have to keep experimenting with this, I will update with progress.