Back to Home

The Arch Experience

Published on

Productivity Arch Linux

Finally! Finaly I feel like I am grasping a true Linux experience. A few weeks ago I had decided to once again try out Arch Linux. I recently upgraded my PC, so I thought whilst I have nothing to lose, I can play around as much as I want, and that's what I did.

In the Beginning | Stage 1

The start was incredibly rough. At first I desperately wanted to have a Virtual Linux environment within Windows. This is due to overall software support for windows applications, and from experience support of my peripheral devices, such as my microphone and wireless headphones. ( I have yet to try headphones, however my microphone sounds just as good with latest linux 'drivers')

So, I had been using WSL2 https://ubuntu.com/wsl for quite a few months now, and really enjoying it, however, there are some problems with it sometimes, and emulating a linux environment on Windows, it's just not as fast as a native boot. For example, when working in large projects, I use fuzzy finding to instantly navigate to desired files, however it seems like wsl2 performs a bit slow, even though, my computer specs should have no issues with performance.

I had purchased Windows 10 Pro, in hopes that this would offer better and faster virtualisation, and windows 10 Pro, offers Hyper-V https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/. This is a virtual machine that runs closer to the hardware than other alternatives such as VirtualBox, there are less layers of abstraction. However, this was incredibly dissapointing, it took me several hours just to install Arch Linux on the Hyper-V, then once this was 'complete' I had found so many hyper-V specific issues, and the experience was worse than using something like VirtualBox.

Why Arch Linux?

I desparatly wanted to use Windows as the host operating system, because in my head I thought. Because I have brand new hardware, this meant that developers of those hardware would support Windows first, and have better performance. I then read a bit more about Arch Linux, and a reason why it is so popular, it is because it is a rolling linux distribution. There are no major releases, and very simple commands allow you to regularly update the system. Also, by being vigilant and regularly reading RSS feeds for Arch Linux, you can read if others encounter issues with the latest update, and if there may be problems with specific hardware, before commiting to a new update.

Because of this, Arch Linux is fast! Much much faster, and absolutely minimal slowdowns in comparison to a bloated operating system like Windows. For the most part with Arch Linux, you have full control of the software you install. And removing software is just as easy, and does not leave dangling files in obscure places. This allows you to leave more RAM and CPU for the programs of your choice. And less mental clog, why do you need several text editors if you only use one? If you want to regularly change of some software you can do so freely, without software that cannot be uninstalled.

This also allows you to be efficient, when you have more knowledge of ALL the tools at your fingertips, you are able to know what tools are best for each task. The less programs you have, the more proficient you can be in each of them.

Minimilistic programs and operating systems often can be extended to the desires of the user. For example, I use Neovim, a text editor that has become completely personal, and an actual extension of a limb for me.

Stage 2

I spent an entire weekend trying to dualboot Windows and Arch Linux, I had reinstalled Arch Linux roughly nine times. Whilst incredibly frustrated, soon enough the commands I was entering, following the ArchLinux Wiki https://wiki.archlinux.org/title/Installation_guide, were starting to make sense to me, I thought, wait, I am actually understanding Arch Linux now! Each reinstall became far easier, and I was understanding what each of the components of installation were for. This is incredibly important for using Arch Linux, if you want to try debug problems. My main problem was due to the fact that I really wanted to use Rofi, as I have always opted to use Grub, which is considerably easier to setup. I just wanted to create my own Rofi themes in the future.

At one point, I accidentally deleted all the system files... oops, another I tried to mount the efi partition on the same directory as where linux boot images are found, overwriting them.

However, I was finally setup, and got a basic i3 and Arch Linux setup, that I was able to super quickly config to something very usable. https://i3wm.org/ Whilst I had experience with some fancy window managers in the past, with my current linux adventure, I just want something that works, easy to understand, and something that I can grow with slowly, whilst still being productive. So i3 was a good choice to use, my scriping skills have improved this past year, so I was able to setup custom scripts for general things quite quickly.

I setup conky, to show me various pc performance metrics, and scripts to show my current day's todo list. Conky was finally more than just for show, and provided some very useful utils. https://github.com/brndnmtthws/conky

I was very happy with i3, but as all things. I wanted to move on and learn something completely new. I had identified some weak points in my productivity, and thought that maybe a custom tiling layout would be great for me.

After some research I saw XMONAD.

Stage 3 | XMONAD

Here is where some real fun begins, I've heard of xmonad before, but I thought it was exclusively for the most elite of programmers and scripters.

https://xmonad.org/

It's not so hard to pick up and configure as most people make it out to be, I just started out following some existing setups, until I could figure out how to configure myself.

Sure, xmonad is configured with Haskel, but I studied Haskel, so I thought it would not be too difficult, and indeed, the config file, xmonad.hs, can be simply broken down, and acts just like any other config file.

I designed a productive layout, on a piece of paper, that identifies how I currently work. I.e. Browser, Code, Lazygit, and a terminal, are my main windows. It would be great to have them all on one screen, in quite a static layout, so I need not to have any mental thought when starting my workflow. I can also minimise the use of a mouse, but switching inbetween windows, and workspaces.

I was also not too happy with Conky, the conky daemon would freeze sometimes, and I did not really enjoy how it was configured, often I had to kill conky, and restart because it would overlap over programs such as Glava (for audio visualising)

Eww: This is the name of my new "conky", https://github.com/elkowar/eww , this is a widget system that is built using Rust (which I aim to learn soon), what had drawn me to Eww, was that you are able to design using GTK CSS. (Not quite full CSS, but close) Eww, also is configured using a programming language called Yuck, it used to be XML, but Yuck seems to make a lot more sense. I was able to quickly convert my Conky setup over to Eww, taking quite a bit of inspiration from other users. I created various widgets that provides just a bit of visual satisfaction when I look at the far side of my monitor, whilst also being reminded of my daily tasks at all times whilst also being reminded of my daily tasks at all times.

eww

I also went back to the drawing board, and actually, created my drawing board using GIMP, as my desktop wallpaper. I added some corner borders, so all my windows feel like they slot in perfectly. And also when I start out with an empty desktop, it gives me a very solid placeholder of my workflow.

Workflow-wall

I am in love with this setup, I am finding it so much fun to tweak it to how I like it, and I am really appreciating that these tools are growing with me. Each day I find extra productivity, and find solutions to past problems.

What's Next

I think I will try to stick to XMONAD, it seems quite endlessly configurable, and should not be too difficult to even extend the program. But one thing I know now, is that I could never go back to windows for development ever again. Maybe only for some games, but what I have found, is that I am having so much more fun programming than I am playing games. Either I am maturing, or I just value self improvement more than games, where I often feel a bit rough after if I waste a day away.

Because I am using very terminal based tools, even with nvim as my code editor, I am able to quite easily remote SSH / MOSH (https://mosh.org/elevator.txt ) into my desktop from anywhere, to have high performance anywhere. Again, I will say that your tools should work for you, not you work for your tools. I'm sure tools like vscode, or jetbrains are great, but I cannot grasp the full use of those tools. They do way too much, I much prefer identifying problems myself, and finding the solutions for them. This way I continuosly grow and learn, and my tools grow with me. I now know how autocomplete works within IDES, and other various things that IDEs provide, because I had to setup a lot myself. Also, I do not ever have to wait for an update for a tool for a feature I want, because I can just code it myself.

The same goes with Arch Linux, everything on my system aims to solve problems that I have, or just things that I like, but here is the difference to Windows: they all are used.

I dislike programs that do not serve a purpose.