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.
Interesting to see you settled on arch linux - I've been playing around with arch linux for a year or so and really like it. Pacman is super great.
Do you source control your dotfiles repo? I've found keeping my dotfiles in git has been super helpful - I can keep a uniified set of commands, aliases, terminal configs, etc and sync them seamlessly across machines. And since a lot of unix also works on macos, my environment works on both macos and linux. Note you have to put the cross-platform logic in your dotfiles, ie check `if [ "$(uname)" = "Darwin" ]`, etc, but it's pretty cool that I can switch between various linux distros, bsd distros etc and have everything mostly just work.
[If you use bash, by the way, I found I got a ton of benefit out of switching to zsh, especially if you make your dotfiles track the grml-etc-core/.zshrc which has a lot of great sane defaults [I think of it as a way to get the benefits of oh-my-zsh without actually needing to install all that crap]
To break with my normal style of post, I thought this week I'd share some of my favorite software that helps me get work done on a daily basis. Because I use Linux it won't all be applicable to you, but maybe some of the ideas will be, and a lot of the software is cross-platform.
Ubuntu + Gnome
I love the Ubuntu operating system. In particular I like how everything just works super easily (including typically tricky things like printers), and that it's infinitely customizable. I spend a lot of time on my computer, so small customizations have a big effect on long term productivity.
Gnome is a "window manager" for linux. I switched on a whim and I LOVE it compared to Ubuntu's default window manager. I think it's way better than OSX, Windows, and Unity (Ubuntu's default).
Burn the heretic, he has cast doubt on the almighty..
There's no doubt about it, if you want to start a flame war in the tech community then there is no better place to start than the world of the Linux Distro. When it comes to waving the collective wand around, Linux fanboys are notoriously hardcore and put even the most ardent Mac vs Windows debate to shame.
When it comes to versions of Linux there are two big players here with Ubuntu in the one corner which without a doubt shook the Linux world by its coat tails and brought as promise Linux to a wider audience. It's changes are seen by many as potentially disrupting there is no doubt Shuttleworth the companies talismanic Jobseque leader has a grand plan, and that alone is making Ubuntu in many quarters mean Linux.
Then there is OpenSUSE the distro has been around since the dawn of time, ok it hasn't but it feels like it. The original desktop Linux OS lost a lot of ground to Ubuntu and has been occasional confusing, so how many built in package managers do you need?