Raspberry Pi
As a kid, Windows and macOS were the only consumer-ready operating systems that I knew existed. Our first (family) computer was a desktop, and it used Windows 95. I had no idea about the underlying differences in OS kernels, filesystems, and user interfaces that make a system unique.


Playing with the little Raspberry Pi single-board computer got me hooked on Unix-like systems— especially working in the shell. This led me down the rabbit hole of installing and customizing different Linux operating systems— distro hopping.
From Windows to Linux
On my first laptop— a Windows 10 machine, I started using the Git BASH program in order to have the familiar Unix commands that made software development comfortable for me on Linux. Later on, I discovered WSL— the Windows Subsystem for Linux .
WSL is a compatibility layer for running Linux binary executables natively on Windows. It allows you to run a Linux environment directly on Windows without the overhead of a virtual machine. Check out my blog post from 2020 on installing WSL2 and a graphical Linux interface.
When I was using WSL, it was in its infancy. There were some limitations— specifically accessing your computer's graphical hardware. The next logical step was to setup dual-booting — selecting either the full Windows 10 or Ubuntu systems to load during the boot sequence. This allowed me to use the full Ubuntu desktop environment and access my computer's hardware without the limitations of WSL.
In college, Windows had been a necessity for easy access to specific software that was (at the time) only developed for Windows— mainly CAD software for my architecture degree. Eventually, though, I dropped Windows altogether for Ubuntu.
Around 5 years ago, at the start of the pandemic lockdown, I took the plunge and made a career change to become a full-time professional software engineer. I actually started my software career as a Web developer. Oftentimes, the only software I'd use (a browser and a terminal) were generally available with any Linux distribution.
What is a Distro?
A Linux distribution (or distro) is a complete operating system built on the Linux kernel. It includes the kernel, system libraries, utilities, and often a package manager to install additional software. There are many different distros, each with its own philosophy, package management system, and user interface.
Ubuntu was the first Linux distribution I used, and it soon became my daily driver. I used it for many years with the Regolith distro . Under the hood, Regolith is just a preconfigured Ubuntu distro— preinstalled with the i3 tiling window manager . The distro's built-in utilities— like a pop-up keyboard shortcut legend— made it super easy to get started with i3wm.

The ability to customize the window manager and navigate virtual desktops and windows with keyboard shortcuts was a game-changer. Using shortcuts to navigate the system certainly fed my interest in Linux and made me feel like a system power-user.
RICE-ing
As someone with a background in design, the ability to deeply customize my system was another thrilling part of discovering Linux. I quickly became a lurker on r/unixporn and learned about Linux RICE-ing (Race Inspired Cosmetic Enhancement).
RICEing is typically associated with the customization of cars. The term "RICE" is often used in a derogatory sense to describe cars that have been modified for looks rather than performance.

In the Linux community, RICEing doesn't necessarily carry the same negative connotations. Linux RICEing refers to customizing and personalizing your desktop environment to make it visually appealing and functional. This can include changing themes, icons, fonts, and even the layout of your desktop.
Desktop Environments
By default, Ubuntu uses the GNOME desktop environment. However, there are many other desktop environments available for Linux, each with its own unique features and design philosophy:
Desktop Environment | Description |
---|---|
GNOME | The default desktop environment for Ubuntu, known for its simplicity and ease of use. |
MATE | A continuation of the classic GNOME 2 desktop, MATE is designed to be lightweight and easy to use. It is a good choice for users who prefer a traditional desktop experience. |
Plasma | Known for its flexibility and customization options, KDE Plasma offers a modern and visually appealing interface. |
Xfce | A lightweight desktop environment that is fast and efficient, making it ideal for older hardware. |
LXQt | Another lightweight option, LXQt is designed to be simple and easy to use. |
Cinnamon | A user-friendly desktop environment that provides a traditional desktop experience, similar to Windows. It's an adaptation of the GNOME DE maintained for the Linux Mint distro. |
Compositors and Window Managers
In addition to desktop environments, Linux users can also configure different compositors and window managers. Some of the functionality overlaps, but generally these tools each serve a specific role.
Window mangers (WMs) generally control how windows are displayed on the screen and how they interact with each other— think of how you would expand, minimize, or drag a window in macOS or Windows. WMs can also handle window decorations, virtual desktops, keyboard shortcuts, tiling, and more.
i3wm
My favorite window manager is i3
. I love its quick-snap alignment and recursive tiling mechanics. It allows you to quickly and easily arrange windows on your screen, making it perfect for multitasking and limited screen real estate.
Shortcuts make it super quick and help maintain flow when editing text. i3 is a tiling window manager, meaning it automatically arranges windows in a grid-like fashion without overlapping. Check out my dotfiles for my i3 config and other goodies.
Compositors
Compositors are responsible for rendering the graphical effects in a desktop environment. They can provide things like window transparency and blur, shadows, animations when opening or closing windows, and more. Some of the ones I've used include:
Compositor | Description |
---|---|
Compton | A lightweight compositor for X11 that provides basic effects like shadows, transparency, and background blur. |
Picom | A fork of Compton that adds additional features light animation. |
KWin | Both a compositor and window manager that uses the Wayland window system protocol and architecture at its core. It's the default in the KDE Plasma desktop environment. |
Mutter | This compositor is used in the GNOME desktop environment. |
Xfwm | The compositor used in the Xfce desktop environment. It is lightweight and provides basic effects like shadows and transparency. |
You'll notice that some compositors interface with X11 (the X Window System ) while others use Wayland . Wayland was intended as a replacement for the X11 window protocol and introduces some paradigm shifts in how the compositor is used.
Of the above, Picom was my favorite choice (paired with i3, of course) because I was able to get some Apple-level luxury looking blur and background transparency effects.

Launchers and Info Bars
Launchers are programs that allow you to quickly launch applications or perform actions using keyboard shortcuts. They can be used to search for files, run commands, or open applications without needing to navigate through menus.
Windows users will be familiar with the Windows-key start menu, and macOS users will be familiar with Spotlight. Linux has many launchers— some preinstalled with the desktop environment.
On macOS, the Alfred app was once a popular choice. I also really like Raycast for MacOS.
On Linux, there are many launchers available. Most desktop environments will install their own by default. The latest Regolith distro ships with the bespoke ilia launcher. I quite like the Rofi launcher because it's fast, lightweight, highly customizable, and has good community support.
There are also many status bars available for Linux. The i3 window manager comes with its own status bar (i3bar), but you can also use other options like Polybar or Waybar in Wayland.
On macOS, I use a combination of AeroSpace , sketchybar , and Spaceman to mimic i3 window tiling and shortcuts— with a status bar that shows the active desktop and other custom options.
Distro List
So which Linux distro is the best? It really depends on your needs and preferences. Some distros are more user-friendly— they have a lot of features and controls out of the box.
Other distros are more minimal and require more configuration to get started. Some are designed for specific use cases— like gaming versus hosting cloud applications. Others still are designed for specific hardware— like Raspberry Pi OS and the Raspberry Pi.
Understanding the key features and philosophies of each distro can help you make an informed decision about which one is right for you. Below is a list of some popular Linux distros that I've tried— along with my two cents.
NixOS

NixOS Foundation
https://nixos.org/
This is a distro unlike most others you'll come across. NixOS creates a special, immutable Nix store at /nix/store
. Immutability means that the store cannot be directly modified. It will identify each installed package (and its specific version) by a unique ID— in fact, it's a cryptographic hash of the package's build dependency graph.
Nix is a purely functional package manager. You can save the state of your system and should be able to load the entire thing from scratch on another machine. It's a brilliant design, but has a steep learning curve and requires you to adopt the Nix configuration language and philosophy.
NixOS also provides a suite of commands like nix-env
and nix-shell
to quickly swap between entirely different environments without needing to use yet another technology to configure virtual machines or virtual environments. You can install, upgrade, and remove system packages and language binaries in any number of isolated environments.
XDG Config
A lot of Linux users might be familiar with the FreeDesktop.org
project, formerly the X Desktop Group (XDG). The $XDG-CONFIG-HOME
pattern specifies a way of configuring dotfiles under the ~/.config/
directory.
Unlike XDG, NixOS is a unique Linux distribution that uses .nix
configuration files
to functionally define packages. It is designed to be declarative, meaning you can define your entire system configuration in a single file or set of files. This should make it easy to reproduce and share configurations across different machines.
To me, NixOS is wizard-tier Linux. The concepts of atomic updates and reproducible systems are super sexy, but in practice I often found it very difficult and tedious to manage my packages and configs. The initial translation to .nix
was a daunting task. You'll need to take some time to rewrite your XDG-style config to .nix
and gain a firm understanding of the Nix language.
I have a lot of respect and admiration for those Unix wizards who have the understanding and experience to use NixOS effectively, but I don't think it's the right choice for beginners.
EndeavourOS

Open Collective
https://endeavouros.com/
EndeavourOS is a user-friendly distro that provides a great balance between ease of use and customization. It gives beginners easy access to the Arch Linux distro— a lightweight and flexible Linux distro that gives Unix power users a lot of freedom to customize their system.
Like Arch Linux, EndeavourOS uses the pacman
package manager giving it access to a vast package ecosystem. Unlike Arch Linux, on first boot Endeavour provides a graphical installer to configure a desktop environment along with the base system. This lets you get started quickly without needing to manually configure everything from scratch like you might on bare Arch.
The design is sleek and modern, and it has a large community of users who provide support and resources. EndeavourOS is a great choice for anyone who wants to use Arch Linux without having to configure it from scratch.
Manjaro

Manjaro GmbH & Co. KG (developer)
https://manjaro.org/
Manjaro is another user-friendly Arch Linux-based distro. It doesn't offer quite the same freedom as EndeavourOS— you can't select the desktop environment from a dropdown. But it does a great job of providing a sleek preconfigured desktop environment.
It has a large community of users who provide support and resources. Similar to EndeavourOS Manjaro is a great choice for anyone who wants to use Arch Linux without having to configure it from scratch.
The KDE Plasma desktop environment is the default, but you can also choose from other desktop environments like Xfce and GNOME. Manjaro also uses the pacman
package manager, giving it access to a breadth of software in the Arch User Repository (AUR).
Ubuntu

Canonical (developer)
https://ubuntu.com/
Ubuntu is a great choice for beginners and experienced users alike. It has a large community, extensive documentation, and a wide range of software available. It's also one of the most popular distros, so you'll find plenty of support and resources online.
It's good for a desktop environment, but it can also be used headlessly for cloud servers. Hardcore Linux users might bash Ubuntu for being too bloated. It does install a lot of software by default, but it's still a great starting point for anyone new to Linux.
Because Ubuntu is based on Debian
, it has a large repository of software available. This makes it easy to install and update software using the apt
package manager.
Ubuntu is user-friendly, has a large community, and is easy to get started with. However, it can be a bit bloated for some users, and the default GNOME desktop environment may not be to everyone's liking. If you want to use KDE Plasma, you can install the Kubuntu flavor of Ubuntu.
Regolith

Ken Gilmer and others (developer)
https://regolith-desktop.com/
Regolith is an Ubuntu derivative that comes preconfigured with the i3 tiling window manager. It provides a great starting point for anyone who wants to use i3 without having to configure it from scratch.
The base theme is well designed and minimal— and you still get all the benefits of Ubuntu's package management and software availability! It includes a pop-up keyboard shortcut legend, a bespoke launcher, and a better compositor (picom).
I put Regolith in the A tier. It's great for power users while still providing the community support of an Ubuntu distro. One downside is that it doesn't have the backing of a large company like Canonical, so it may not be as well supported in the long run. However, the community is active and responsive, and the distro is regularly updated.
Alpine Linux

Alpine Linux Development Team (developer)
https://www.alpinelinux.org/
Alpine Linux is a security-oriented, lightweight Linux distro. It uses the apk
package manager (Alpine Package Keeper) and has a super small footprint, making it ideal for running on low-resource devices or in containers.
Alpine's design philosophy is to keep things simple and secure. It uses the musl libc library instead of the more common GNU C Library (glibc), which makes it smaller and faster. Alpine also uses the OpenRC init system instead of systemd, which is a more lightweight alternative.
The Alpine Linux community is active and responsive, and the distro is regularly updated. It's a great choice for anyone who wants a lightweight, secure, and fast Linux distro.
A lot of its security is inherent in its lack of bloat— by including fewer packages by default, Alpine reduces the attack surface of the system.
Using DockerHub as a reference, the latest Ubuntu release (25.04, Plucky Puffin) has 3 medium- and 5 low-severity CVEs at the time of writing. Alpine Linux (3.22.1) has 0. Ubuntu includes 122 packages in its SBOM while Alpine include 20.
I frequently reach for Alpine Linux when I need a lightweight container image for a Dockerized application. However, it may not be the best choice for beginners or those who want a more user-friendly desktop environment.
Void Linux

Void Linux Team (developer)
https://voidlinux.org/
Void Linux might be described as an indie distro— it's not based on another Linux distro. It's an independent distribution developed entirely by volunteers.
It's a unique distro that uses the xbps
package manager (X Binary Package System). xbps
is also bespoke software and features detection of incompatible shared libraries and dependencies while updating or removing packages.
It uses the runit init system instead of systemd, which is a more lightweight alternative. Like Alpine Linux, it also supports the musl libc— as well as the GNU libc implementation.
Void Linux is a great choice for anyone who wants a lightweight, fast, and simple Linux distro. It won't have the same support as Ubuntu or another big-name distro, but it still has a dedicated large community of users who provide support and resources.
Red Hat Enterprise Linux (RHEL)

Red Hat (developer)
https://redhat.com/
I've only used RHEL in a professional setting, but it's worth mentioning here. RHEL is a commercial Linux distribution developed by Red Hat. It's designed for enterprise use and provides a stable and secure platform for running applications.
Although, in my experience, I've found it to be more bloated than Alpine Linux or Void Linux and produces more vulnerabilities in a CVE scan. It uses the dnf
package manager (Dandified YUM) and has a large repository of software available.
Red Hat is the base for many other Linux distributions, including CentOS, Fedora, and Rocky Linux. It's a great choice for anyone who wants a stable and secure Linux distro for enterprise use.
Wrapping Up
This is just the tip of the iceberg. I know there are many other distro hoppers out there who have explored even further reaches of the Linux universe.
Distro hopping can be a fun and rewarding way to learn about Linux in all its glorious shapes and forms. Each distro has its own unique features, philosophies, and communities. By trying out different distros, you can find the one that best fits your needs and preferences.
I'm leaving out a lot. Debian is at the heart of Ubuntu— and many other distros. Fedora , Linux Mint , and Pop!_OS are all great distros that I haven't had the chance to try yet. I though I'd never see the day, but now I'm primarily using macOS for my daily driver.
Let me know your distro hopping stories in the comments. What distros have you tried? Which ones are your favorites? Do you have any tips for beginners who want to get started with Linux?
Bonus Distro List
TempleOS is a unique operating system that was created by Terry A. Davis. It is a lightweight, 16-bit operating system with a unique programming language called HolyC, which is used to write programs for the OS. It is religiously themed and has a unique user interface that is reminiscent of early computer systems.
TempleOS is not a practical choice for everyday use, but it is an interesting project that showcases the creativity and ingenuity of its creator.
Hannah Montana Linux is a parody operating system that was created by a group of developers as a joke. It is based on Kubuntu and includes a number of features and themes based on the popular TV show Hannah Montana.
While it may not be a serious choice for a daily driver, it can be a fun way to learn about Linux and its capabilities.