< Back

Linux on a Laptop: My Experience (pt.1)

Introduction

Recently, I got a ThinkPad T16 as a new laptop for school, and with such a large intersection between the ThinkPad and Linux communities, I had to install GNU/Linux on my new daily driver system. There are a couple reasons for this, mainly due to its simplicity (in my opinion). Many people post memes online that are captioned "Installing a web browser on Linux," and a video of a monitor with a waterfall of text flies down in a temrinal, mimmicing some supposedly very verbose package manager.

Although they might be right, there's a lot of text. This happens after the user does practically nothing to install this program, when compared to the process on Windows or a Mac. The elegance of halving almost all the programs you will ever need at your finger tips A simple "sudo xbps-install" or "sudo apt-install" makes switching back to the Windows way of installing programs impossible. Another reason for GNU/Linux is the customizability of things such as window managers, scripts, keybinds, and privacy (although privacy isn't often my first concern).

I want to go over my experience with most of these, and I intend to do this over a couple parts, even though the last time I made a part 1, the Minecraft Clone, I dropped the project immediately after, haha. For this post, I just intend to talk about why GNU/Linux and why Void Linux, then I'll touch on window managers, commonly used programs and keybinds, as well as some laptop-specific configurations.

GNU/Linux

I would really say only two reasons exist for me choosing GNU/Linux, and I really did go back and forth between planning to run Linux or not for some time. I had to balance what I wanted in a laptop, for example, with Windows, I would be given support in a lot of areas as Windows is a widely used and popular OS. Additionally, there is no configuration needed for the non-negotiable functions of the laptop: volume controls, screen brightness controls, wireless networking and Bluetooth connectivity, controlling the keyboard backlight, and many more. The thing is, this argument falls through for someone like me, where I actually find it fascinating that even after buying a device, I have to put it together. This feels almost like a Lego set, but on the software side and with no instructions in the box.

That being said, it's obvious that a desktop environment was not in the question, even though I do like the ideas behind and visuals of some desktop environments, such as Artix Linux, but if I was going to run GNU/Linux on the laptop, after using Void on my desktop and having a workflow I was familiar with, I wasn't going to drastically change things. So that comes to be the first reason I was attracted to Linux—the perk of having to essentially build my system to my needs and likings.

The second reason is just because of the tools Linux brings to my fingertips. Setting up programs like Neovim is a piece of cake with the ease of dotfiles and the simplicity of package managers. I also frequently use the GNU Project Debugger, who I just found out uses an archer fish as their mascot because it is known for shooting down bugs from low hanging leaves, very clever naming. Additionally, I frequently utilize Makefiles and find dependency management on Linux very straight-forward when it comes to c/c++ development. Furthermore, Linux has support for Bun, my Javscript runtime and package manager of choice, as well as being quite simple to setup a coding environment for other languages.

For example, previously, I was running Debian Bookworm on a virtual machine on my school ChromeBook. While I did mostly JS and C++ development on there, I was part of the Robotics Team (The Technological Terrors: Team 5438) and had to look over the robot's code. I had never done any Java development on Linux and thought that I would need a VSCode installation with the necessary WPI Robotics-related extensions, but I was wrong. Being able to write and build robot code was as simple as cloning the repo, installing a Java LSP through Mason in Neovim, and running a simple build script to check for errors. This really astounded me and made it really easy to jump into foreign projects with more confidence that I wasn't going to be bogged down by the complexity or hiccups that came with programming on Linux.

Void Linux

Void Linux was a pretty arbitrary choice, honestly. It was first because of a recommendation from a friend, squibid, as a pretty minimal and also, interestingly, not derived from any other more common distro, say Arch or Debian. This attracted me just because it was its own contender in the arena, and honestly, I just liked the name and logo. But I had also heard a lot of praise online, almost nothing bad about the distro itself, and certainly a lot of praise for it's package manager, or managers depending how you look at it xbps. My only gripe was that I found xbps-install a bit cumbersome to type out, but a simple alias to xi, or even better, a program called fuzzypkg makes finding and installing packages far easier (also shown to me by Squibid).

Then there is the obvious use of runit over systemd as an init system, but from my experience, I don't interact with the init system enough for it to make a severe impact on my opinion, this was kind of just more fuel to the fire because of all the system hate I found online. Finally, I had installed Void before on my desktop and the TUI installer from the live image were really easy for me to understand. Previously, I had installed Arch on a virtual machine and followed a tutorial online, not understanding ANY of the commands I entered, how to partition a disc, or how wpa_supplicant worked. It was installed, but I didn't feel like I knew what was happening and certainly didn't understand my system much better afterward. I have also installed Debian on bare metal, and that came with a GUI installer, which I really appreciated and wanted a similarly hand-held experience.

Beyond the install process and the package manager, most Linux distros seem the same to me, so again, I'm not very picky and was very open to suggestions, therefore, Void Linux it was!