Go back to the front page of wadny.com wadny.com by qid

— this is where I’d put my random quote… IF I HAD ONE!

Post archives for

Shell Setup

Prelude: I would love to write more on here, especially longer and more thought-out posts on complicated topics, but as is plainly evident, it’s not really possible for me to find the time. So instead, maybe I can manage to post some things that are just technical info dumps. Hence: a summary of my terminal and shell setup today. I recently made some changes and improvements, so now’s a good time to write it up, if nothing else for my own reference.

Operating System🔗

Which operating system you use heavily affects which tools and systems are available. Pretty much all of my personal systems have coalesced to Kubuntu, which is stable and well-supported, and I prefer KDE to Gnome. At work, I use Windows 11, which in Pro edition with nonsense turned off by group policy is tolerable, but has become unacceptable for personal use.

Configuration Management🔗

Since I have a few different personal systems (desktop, laptop, HTPC, server), I want a way to synchronize configuration between them. I use homeshick (a Bash port of homesick) to manage configuration files (“dotfiles”) stored in Git repositories. It’s pretty technical, but it has quite good documentation and means that all my configuration can be synchronized easily. Once a change has been pushed, all it takes is homeshick pull on another computer to get all the updates.

At work, I don’t use any configuration management, as I only have one workstation and never remote into any servers, although there are at least two PowerShell ports of homes(h)ick (posh-homesick and homepsick).

Terminal🔗

The first configuration is for the terminal program I run. I’ve just stuck with the default terminal, Konsole. I know there’s new hotness out there like Ghostty, but for the moment the default Konsole works well enough to not be worth the time dealing with more configuration setup.

In my Konsole configuration, I don’t change very much. The most important part is supplying and using a nerd font so that extra glyphs are available.

At work, I use Windows Terminal which is not bad and eons ahead of the old-school Windows command prompt.

Shell🔗

The second configuration is for my shell, which is Bash. Again, it’s a convenient default; not the best, but not bad. There are lots of alternatives (zsh, fish, elvish, nushell, powershell, xonsh), but it’s hard to overcome inertia enough to try to migrate across a slew of various computers.

My Bash configuration has a bunch of settings to make Bash more tolerable, especially with history and tab completion. It also uses Oh My Posh to display prompts, which is actually supported across every shell I listed above. My prompt is pretty basic, but I don’t want it to be too distracting. It looks like this:

A screenshot of my shell prompt
A screenshot of my shell prompt

At work, I use PowerShell, which is actually quite powerful and cross-platform. It also uses Oh My Posh with the same prompt configuration.

Editor🔗

Most of my editing work is actually done in VSCode or sometimes KDE Kate, but sometimes it’s easier to do a quick edit from the terminal, or I’m SSH’ed into a server and don’t have a choice, in which case I usually use Vim. Again (you may notice a pattern here), it’s convenient and available and good enough for basic work, even though there are definitely alternatives like Neovim, Micro, and Helix.

My Vim configuration uses some plugins from Tim Pope as well as airline so that I don’t have to try to install Powerline and Python everywhere. Mostly my configuration adds visual information to make it easier to see what’s going on; my vim editing tends to be limited to basic configuration files, rather than software projects.

At work, I basically never edit anything from a terminal, so it’s just VSCode.