Downloading the latest Ubuntu release and installing it on your laptop or in a virtual machine is easy, but maybe it’s too easy. It’s too easy to blindly accept the choices that the distribution has made for us. Maybe it’s also too hard, there’s little room left for us to customize the environment or mold it to our own preferences and habits.
Table of Contents
It’s Too Easy
I understand that there are people who come from another environment, like Microsoft’s Windows or Apple’s OSX, who want something that doesn’t challenge them. They want to send an e-mail or write a paper or add some numbers and the rest is kind of like icing on the cake. I can see how a distribution like Ubuntu would appeal to them and I agree that it’s a good thing.
But what about those of us who spend most of our workday (and some of our non-workday) in front of a computer? For many of us an all-in-one distribution is too easy, we forget that we can make the environment our own.
Maybe We Don’t Need the Magic
Friends and family who use Apple products love them and enjoy talking about them, once of the things I hear about most often is “the magic.” How it knows how to do the right thing when they plug in their backup drive or dock their phone. How a new phone contact magically turns into a new e-mail contact. For sure this stuff is great, but what if you want to do it a little different? That’s when the magic stops being so magical and starts to become frustrating.
Over on the Linux side we don’t need to be so magical. It’s really nice when the computer does the thing you want all on it’s own, as if it can read your mind. But unlike Apple there’s no need to hide the mechanisms that make the magic happen. Most of the time these functions can be easily customized if we happen to know what does what when. Unfortunately many distributions are working hard to hide these mechanisms and make them hard to manipulate. I think Gnome Shell is a good example of this; people new to Linux love it while those of us who are more demanding are frustrated more and more with every release.
What Choices Didn’t We Make?
Installing a distribution like Ubuntu is super easy, you boot from the image and the graphical installer asks you where you live, what time it is, and you pick a name and password. It’s painless, for sure, but it’s also letting the (well intentioned) folks who assembled that distribution make a lot of decisions on our behalf. Decisions that we often didn’t even know where choices at all.
How Does This Thing Really Work?
I’ve been using Linux for a good long while now and there were some frustrating things that I simply took for granted because I didn’t understand how they really worked. For sure, most of that was laziness but the distribution was at least partly to blame for hiding all of the machinery. Hiding it, I suppose, so that I wouldn’t grow confused by all of the choices.
I have a docking station at work with two displays and another at home with just the one display. For many moons I would grumble when docking or un-docking and re-arranging the displays. It wasn’t until pretty recently that I figured out I could write a simple udev rule that triggers every time the laptop plugs into or out of a dock. Combine that with autorandr configurations for the displays and now I don’t have to fuss with these settings at all. It just works and most importantly: not by magic!
This is an example from my own experience and I have more. The same mechanism let’s you write a rule that, maybe, kicks off a backup when you plug in a particular USB drive. Distribution packagers aren’t trying to hide anything but it’s often the case that you just don’t know what you don’t know.
All That Fancy GUI Stuff
Probably the choices we most miss out on are the ones that involve our desktop environment. Many distributions have already chosen the entire desktop stack for us and it’s often difficult to move away to something else. There are several Ubuntu flavors that are bundled with different desktop environments but they work much the same way. Part of the problem is the way these components overlap and another is that it’s a big change and no one wants to “mess it up.” But making it difficult to switch from one desktop environment to another isn’t helping anyone.
I’m a strong believer in the tiling window manager and there are a lot of them out there, many of them are easy to customize for your own work environment. Ubunutu’s Unity environment is great (or tolerable), to be sure, but it’s not so easy to change the way it works. Instead of molding the environment to fit ourselves, more often than not we adjust the way we work instead.
I’ve been using the i3 window manager for over a year now and I really like it. The things that maybe didn’t work exactly right for me I went ahead and changed so that they did. I wanted to change the items in the status bar and it was so straightforward that I ended up writing my own.
And there are more options out there. Awesome let’s you customize the window manager with Lua, xmonad let’s you customize it’s behavior with Haskell. And so on, the point being that not every tool is buying into this idea that letting people customize their environment is somehow a bad idea.
I think we would all do better to challenge ourselves, to make things a little harder. Instead of choosing a Linux distribution on the basis of how easy it is to install, instead pick one that lets you make choices at every step. Choices like….
- Do you want to encrypt any of your disk partitions?
- Which bootloader would you like to use?
- Which display driver do you really want to use?
- Which display manager would you like to use?
- Would you like a desktop environment or just a window manager?
Yes, I’m recommending Archlinux. In my humble opinion, you’ll learn a much more about how everything works together just by spending a little time on these questions. They are all worth asking and many of them will impact you every time you sit down with your machine. Making these kinds of choices might seem like minutia at first they build on one another. At the end of the day, you might be surprised how good you can have it.
What Do I Use?
On the off change that you’re curious, this is what I use daily on my laptop. Sure, it’s a little ugly but it’s mine.
- ArchLinux is my distribution
- Gnome Display Manager, because pretty
- i3 Window Manager, I like keeping my hands on the keyboard
- i3 dmenu desktop for launching applications
- Compton for window compositing
- Dunst for notifications
- My Own Custom i3 Status Bar
- Autorandr to keep my displays sorted
- Guake and Termite for the command line
- fish, the friendly interactive shell
- dwb is my primary web browser
- Emacs and IntelliJ IDEA for editing code
- Notmuch for mail management with the Emacs client
- Ranger for managing my files