Fish, Foot and beyond: a terminal setup that finally smells right šš£

Table of Contents
Picture this: there I was, happily using Tilix for my terminal needs on Fedora. Split panes, dropdown terminal, the whole shebang. Life was good⦠until it wasnāt. Recent Fedora updates started making Tilix throw tantrums, and suddenly my trusty terminal setup felt like that friend who keeps flaking on plans.
After some soul-searching (and a lot of Reddit threads), I realized I needed to break down my terminal needs: a rock-solid Wayland-native terminal emulator, a shell that wouldnāt make me hate scripting, and a multiplexer that could keep up with modern workflows.
Enter the new trio: Foot, Fish, and Zellij. Yes, I know - between Fish and Foot, this setup sounds like it came from a very weird pet shop. But stick with me here!
Sometimes less is more #
For terminal emulation I wanted something simple, stable, and Wayland-native. Foot checked all these boxes and then:
- is blazing fast thanks to being written in C
- is hardware accelerated rendering (hello, smooth scrolling!)
- has minimal dependencies (goodbye, random breakages!)
- has simple configuration in a single file
- has Sixel support for those fancy terminal graphics
Now, Iāll be honest - when people talked about āfast terminals,ā I used to roll my eyes. How fast does a terminal need to be to show some text? Well, turns out I was wonderfully wrong - you donāt realize how much terminal lag affects your workflow until you try a faster one.
Lifeās too short for boring shells! #
Remember the first time you saw someoneās terminal autocomplete something magical? Thatās Fish, all day, every day; no hacky setups required. Hereās what made me fall hook, line, and sinker for it:
- Fish remembers your commands and suggests them as you type. Itās like having a very eager assistant who actually knows what theyāre doing. Autosuggestions feel like mind-reading!
- Colors! So many colors! And they actually mean something (unlike my old prompt that I made pretty but couldnāt remember what anything meant)
- No more
if [ -f something ]
syntax that looks like it came from the 80s. Fish makes scripting feel like actual programming
Sure, thereās the occasional āthis shell script isnāt compatible with Fishā moment, but letās be real - when was the last time you looked at a bash script and thought āwow, this is so intuitiveā? Fish makes the trade-off simple: give up some backwards compatibility, get a shell that feels like it was actually designed in this century. And for those rare occasions when you really need to run a bash just prefix it with bash
and move on with your life.
Getting on the right Foot #
First things first - letās get our Foot in the door (sorry, not sorry). On Fedora, itās as simple as this:
sudo dnf install foot fish zellij
Easy, isnāt it?
And of course, CTRL-ALT-T
still spawns my terminal - some habits are worth keeping.

Foot configuration #
My Foot configuration is straightforward but purposeful. Letās break it down:
[main]
font=JetBrains Mono:size=16
initial-window-mode=fullscreen
shell=/usr/bin/fish
The main section is minimal:
- JetBrains Mono because itās a fantastic monospace font with great readability
- terminals starts fullscreen because thatās what I ended up doing as first action every time I opened a Tilix in my old setup
- last but not least, of course, Fish is set as the default shell because thatās the whole point of this setup.
[colors]
# A wild variety of Catppuccin Mocha colors...
While Iām unsure about the theme interaction with zellij, itās working fine, and so Iāll briefly give an overview of it. Iām using Catppuccin Mocha - a soothing dark theme thatās easy on the eyes. It provides:
- A dark background (
1e1e2e
) with light text (cdd6f4
) for good contrast - Carefully chosen colors for different terminal elements
- Nice selection colors that donāt make you squint (I am colorblind myself)
- Special colors for search and jump labels that actually stand out
The URLs are highlighted in a gentle blue (89b4fa
) - because clickable links should be obvious but not screaming for attention.
Nothing fancy, no transparency effects or padding tweaks - just a clean, functional setup that gets out of your way while being pleasant to look at.
Fish configuration #
My Fish config is minimalist but gets the job done. Letās see whatās happening here:
set -x ZELLIJ_AUTO_EXIT true
if status is-interactive
# Commands to run in interactive sessions can go here
eval (zellij setup --generate-auto-start fish | string collect)
end
- The first line sets up Zellij to automatically exit when the last pane closes (as easy as pressing
CTRL-D
). Itās a quality-of-life setting - when youāre done with your last terminal window, Zellij closes cleanly instead of hanging around with an empty session. - Then, we check if weāre in an interactive shell (as opposed to running a script)
- Lastly, we auto-start Zellij using its built-in Fish integration. The string collect bit ensures all the output from the setup command is handled properly
The result? Every time I open Foot, it automatically launches Fish, which automatically starts Zellij. No manual steps, no āoops I forgot to start my multiplexerā moments - everything just flows. You know those tiny tasks that seem insignificant? āOh, itās just two keypresses to start Zellijā¦ā But when you do them 20 times a day, those micro-interruptions add up and break your flow. Now my terminal setup just works, and I can focus on what I actually opened the terminal for in the first place.
Zellij configuration #
Nothing, it works out of the box! No question asked.

A small note about SSH #
Hereās a little gotcha I discovered when working with remote servers. By default, Foot uses its own terminal type (foot
or foot-direct
), which is great for local use but can confuse some remote hosts. Adding this tiny bit to my ~/.ssh/config
:
Host *
SetEnv TERM=xterm-256color
This tells SSH to identify as the widely-supported xterm-256color
when connecting to remote machines.
Itās a simple fix that prevents those annoying āunknown terminal typeā errors and weird formatting issues when SSHing into servers.
Sure, you lose some of Footās fancy features on remote connections, but itās a fair trade for having everything just work⢠without
having to install terminal definitions on every server you access.
Future experiments: down the Zellij rabbit hole #
While this setup is already solid, Iāve got my eyes on some interesting Zellij possibilities. First up is the SSH client multiplexing - being able to manage multiple SSH connections in a single Zellij session, with each remote server neatly organized in its own space. Gone would be the days of juggling terminal windows trying to find that one production session.
Zellijās plugin system caught my attention too. Since plugins can be written in any language that compiles to WebAssembly, I might try my hand at building something that scratches my own itches - maybe something to streamline my SSH session management or Git workflow. The project is still quite active, so thereās room to play around.
I also want to dig into Footās session management. The idea is to have a single main Foot window that all new terminal instances connect to when I hit my terminal shortcut. Should be doable with Footās --server
mode and some window manager tweaks. That way I could keep my workflow exactly the same but avoid the window clutter.
These might be solutions looking for problems, but hey - isnāt that half the fun of terminal customization? Plus, unlike my Tilix tweaking days, if something breaks, my base setup remains rock-solid. Stay tuned for potential updates if any of these experiments turn out particularly useful!
Final considerations #
After a few months with this setup, I canāt imagine going back. The combination of Footās speed, Fishās smarts, and Zellijās flexibility has genuinely improved my daily workflow. Sure, it took a bit of tweaking to get everything just right, but thatās the beauty of it - each piece is simple enough that customizing doesnāt feel like solving a puzzle.
Looking back at my Tilix days, I realize sometimes ājust worksā beats āworks with all the features.ā This setup is faster, more stable, and honestly, just more enjoyable to use. Plus, thereās something satisfying about having a terminal setup thatās both modern and respectful of system defaults. If youāre on the fence about modernizing your terminal setup, consider this your sign to take the plunge - your future self will thank you.
Oh, and hereās a neat thing about this setup: it doesnāt touch your systemās default shell at all. Bash remains as the system shell, handling all its traditional duties, while Fish only kicks in when youāre actually using the terminal interactively. Itās like having your cake and eating it too: the system keeps humming along with bash while you get all the nice Fish goodies.
P.S. No Fish were harmed in the making of this terminal setup, though some bad shell scripts were rightfully abandoned.1
I realized I havenāt left any foot notes in a post about Foot. Had to fix that! ā©ļø