A while back, around the time I switched to Linux, I had the realization that any amount of effort I spent customizing my computer would probably pay off. I use the thing just about every day and gains are cumulative so I may as well think about how to make my computer better for me. This, incidentally, makes it nearly impossible for a normal person to use.
It’s certain that not all of my customizations will be good for you, but maybe some will be, and if you use a computer a lot, the general idea of customizing it to your specifications is probably a good one.
To start, I use Linux. If you are reasonably technical, you should probably be using Linux of some sort. If you are a programmer, I can’t imagine how you use something else. The two biggest factors are 1) Linux has many different flavors, so you can always use whichever one is best for you and 2) Linux is by far the most customizable operating system.
I think a lot of people are afraid of Linux because they think it is hard to set up and use, but that’s really not true. I did a fresh install of both Ubuntu Linux and Windows 10 on my Lenovo (designed for Windows) laptop, and Ubuntu worked way better. Windows was a nightmare of drivers, but Linux just worked.
With Linux you have a distribution and a window manager. Think of the distribution as the underpinnings for drivers and updates and default apps installed, and the window manager as the part you interact with. Every distribution comes with a default window manager, but you can always change it.
I started with Ubuntu + Unity, switched to Ubuntu + Gnome, and now use Arch + i3-gaps.
What makes i3 very different from anything you’re likely to have used is that you cannot move the windows freely. If you open up an application it will fill the screen by default. If you open another one, it will split the screen. You can have multiple workspaces (desktops), which is pretty essential when apps never overlap on each other.
The idea of this sounded so constricting and annoying that I avoided trying it for a while and almost switched back within minutes of using it. Now I can’t imagine switching back. Normal window managers feel so cluttered and disorganized.
I use a program called polybar, which replaces the status bar on the top of your screen. Unlike the status bar in OSX or the taskbar in Windows, it is 100% customizable. On the top left of mine I have my workspaces, in the middle I have a world clock, weather, and crypto price ticker that I made myself, and on the right I have stuff like battery, volume, wifi etc. The clock and weather change based on where my phone is located.
Each of my main workspaces has an icon. Right now there’s an envelope (mail), chat bubble (chat), note (notes), firefox, and command prompt. The i3 window manager lets you do cool things like save and automatically restore layouts as well as force apps to open in certain spaces.
So, for example, if I launch Thunderbird, my mail app, the mail workspace is created and it is moved there. When I boot up the Firefox workspace gets created automatically and is populated with two firefox windows and a small command prompt.
You can also create new spaces on the fly. If I’m doing a project that requires a few different apps, I just hit command-1 and it makes a new workspace called 1.
I made some custom scripts to handle hotkeys. If I hit command-W it goes to the web browsing/firefox tab. If I hit command-shift-W, it moves my current window to that tab. The weird Japanese key under my thumb (katakana/hiragana/romaji) brings me to the command prompt space. If I hit it again it brings me back to my previous window. That lets me pop over really quickly to move a file or check something and then go back to where I was.
Learning all the keys took a while, but now it’s all automatic. I can move between spaces very quickly and rarely have to use my mouse.
I use Firefox for my browser, Thunderbird for mail, Standard Notes for notes/blog writing, Signal for chat, Terminix for my terminal, Sublime for coding, rofi for launching apps, and KeepassXC for password management. Rofi and Terminix aren’t anything special, but the other ones are all so good I can’t imagine not using them.
I make scripts for absolutely everything, usually in Bash or PHP. For example, if I type “blogphoto” the script will connect to my server and download the latest photo I’ve uploaded from my phone into the “Blog Photos” directory.
I use Resilio Sync to keep phone photos and downloads synced across devices. In my experience it’s much faster than any other method of syncing.
The only thing I missed from Windows was Photoshop, but I finally got it working on Linux. The process was difficult and annoying, but worth it.
I don’t have a strong allegiance to any given PC maker, but right now my favorite is the Lenovo X1 Carbon. I think it’s better than every other laptop by a huge margin right now. By using a highly customized linux installation you can always choose the best hardware, the best distribution, and the best window manager. Even replacing all of them, most of the scripts and customizations you make will still work.
Photo is my desk in Vegas. 43″ LG monitor, wireless keyboard/touchpoint that is identical to my laptop, soundbar, Teforia tea machine, and a wireless charger for my phone. On the right you can see my laptop hanging off the side of the desk. I use a docking station so that it can stay closed over there.