I recently received a Steam Deck and I love it!
I also planning to use it for development. On my PC I get used to Fish shell and usually use it instead of Bash. I can install it on Steam Deck and set it to the default shell, but after a system update it will be wiped. I can create a script and run it after each update, will I be able to login if my user points to /usr/bin/fish
that doesn’t exist in the system?..
Ah, sorry, I realized that
fish
is already installed by default. Same aboutzsh
. So no additional steps needed, I just changed my default shell for my user and it works.Dont own a steam deck, but at a guess you might be able to add the terminal lines to change shells to you bashrc, should load it in on first start and then fish will be default from then on.
I think you can install fish from the discover store, which will persist between updates. You may need to also update its permissions through flatseal so that it has full file system access.
Some other options for packages are to install them through nix or distrobox. There’s also a set of commands for installing a package locally, but I would have to look it up. It involves setting a temporary cache directory, downloading the package there without installing it, and then installing the contents of cache to a folder in user-space.
It’s not on flathub, so it won’t show up in discover.
Generally, it doesn’t have command line programs, just gui ones
Ok, I knew I had fish installed on my LCD deck which is why I was thinking it was available through discover. I must have installed it through distrobox instead.
Simplest answer would be to launch Fish as the last step in your bash profile.
I imagine the SteamOS update process probably needs the default system shell to be bash, (if they’re changing it with each update) but that won’t stop you from getting the benefits of Fish during your login terminal sessions.
Source: I don’t like bash much, but have encountered other cases where changing the default shell was too invasive. It’s about an 80% solution, and the next 15% is covered well enough by invoking my preferred shell before invoking my script written for my preferred shell.
I don’t have an answer for your specific question (you can easily find out testing such a scenario on docker on your personal computer), but you should look into bazzite and use either brew or if you feel adventurous enough use package layering to add fish to the image.
There are only two system partitions, you might only have to make the change twice
you might have to do https://wiki.archlinux.org/title/Command-line_shell#Changing_your_default_shell after every update. Maybe put it in a shell script and make .bashrc execute it, so that it switches your default to fish, after it has been reset to bash. This script could also be used to reinstall fish after the update.