My Ideal Linux System Setup Cover Image

My Ideal Linux System Setup

6 Minute read

I've tried nearly every Linux distribution, in this post I detail my ideal setup and my reasoning for each choice.


As most programmers and tech enthusiasts a few years ago I found myself enamoured with the customisability and openness of Linux. I loved that nothing was abstracted away from me if I didn't want it to be, I could very easily see exactly what was going on with my system with a few simple terminal commands.

Obviously the biggest selling point, and also the biggest problem with Linux is that there are so many options. You can pick a distribution, desktop environment or window manager, terminal emulator, text editor and more. Which is why distro hopping is something that many Linux users succumb too.

After trying nearly every distribution, desktop environment and a variety of terminal emulators and text editors I have finally decided what my ideal setup of a Linux system is as follows in this post.

The Distribution

Some honourable mentions to start with, Arch is wonderfully freeing and though it is daunting, I would highly recommend it to people new to Linux for two reasons:

  1. It is incredibly customisable and allows you to discover a lot of how Linux as an operating system works just by setting it up. For this reason, I would recommend avoiding the installer scripts and following the guide.

  2. The wiki is incredibly detailed for a large variety of tools, I find myself using it for configuration and debugging even when I'm not using Arch.

Fedora, the reason I suggest this is because it is stable, has a lot of different flavours including immutable versions, which I find makes it great for learning Linux as it gives you a collection of things that work well together. It's also pretty simple to use while being great at what it does.

Mint is my main recommendation for anyone that wants the benefits of using Linux without the hassle of learning everything about Linux. It's simple, effective, and stays out of the user's way. In all honesty, this is what Windows should be, it doesn't pester you about updates non-stop, but it does let you know when you need to update. A simple walkthrough setup helps configure the system to your exact needs, from simple things like Wi-Fi and keyboard layout to more advanced features such as snapshot backups.

Elementary is another good recommendation for beginners and people who don't want to fuss around with their system too much. It's simple, Ubuntu based, easy to use and comes with pretty much everything you need right out of the box. Even the default Code Editor, Code, is a great experience for programming. The main reason to choose Elementary over Mint is that it follows a design pattern closer to macOS rather than Windows, like Mint.

The Choice: Void Linux

Void is a Linux distribution focused on being minimal and secure, two things I value a lot, especially when it comes to computing. It uses the runit system as opposed to systemd, which at first I was worried about because most Linux flavours utilise systemd. I quickly realised that runit is so much simpler and never breaks, at least I haven't noticed it break yet.

I prefer to use the musl variant of Void, musl is a version of the c library (like glibc) that aims to be lightweight, fast, simple and correct. Which makes it a perfect pairing for Void in my opinion.

Caution

Some applications and tools might not work with the musl variation, I haven't had any issues except with Deno which isn't a major problem because I usually run this in a development container anyway.

Desktop Environment or Window Manager

I will recommend one of each, solely because I know that some people prefer one or the other, and with a session manager such as lightdm you don't have to worry because you can switch between the two if you like.

SwayFX

I like Sway a lot, it's inspired by i3, it's fast and it's minimal. I can jump around my system without even really thinking about it. Adding the FX version gives you a little more customisation, such as rounded corners and client shadows, which is really nice to have. Moving around using custom keybindings is a lovely experience and it's low on resource usage. If this is the right kind of window manager for you, you'll know within five minutes of usage.

Cinnamon

For the more traditional Desktop Environment route, I would highly recommend Cinnamon of Linux Mint. It's minimal, highly customisable and works incredibly well. As with Mint as a distribution, its desktop environment is perfect for beginners or anyone that just wants their system to work without much fussing around.

Text Editor

The old holy war of Vi and Emacs should be enough to tell you that programmers take their text editor maybe a little too seriously. That being said, I can understand why, it makes sense to want your workspace to work exactly the way you want it.

I have tried Emacs a few times and maybe will again in the future, it's powerful and interesting. Vim on the other hand is ubiquitous and installed on pretty much every UNIX-Like machine ranging from MacBook's, to every single Linux distribution either having it installed or easily added to via the default package repository, also most servers have some form of Vi or Vim installed. So it's no surprise that I picked up Vim much quicker than I did Emacs.

I've spent time over-customising and adding far too many plugins and in the end decided to keep the setup as minimal as possible with just some minor changes to the default settings and the only plugin being installed is an LSP, this is because there are a lot of benefits to using a Language Server Protocol including import sorting and auto imports, code actions, refactoring, linting and more.

Note

You can read about why i setup vim the way I chose to on this post.

With all that said, almost any text editor you use is going to be good as long as it works for you, Sublime Text, the JetBrains line-up and Visual Studio Code are all excellent choices as well.

Terminal Emulator

I use Alacritty it's fast, it's customisable and it's lightweight. Are there more customisable options, with better features? Probably, I've tried some of the alternatives, I haven't found anything I need to do that Alacritty can't so I stick with it.

Conclusion

Use what works well for you, I'm a fan of the setup I have detailed above. I also enjoy macOS. I haven't used Windows, other than for downloading a Linux ISO and setting up a bootable storage device to install Linux, for about 5 years.