A few months ago, I put my configuration files in a GitHub repo, something I should have done as soon as I learnt how Git works, but alas. Today, I’m going to tell you why things are the way they’re there and also I hope to give some opinions on some things related to configuration. Let’s begin!

Before I go into them, I want to get out some basic things out of the way. I use Arch Linux. I know, first thing I say in this blog post related to my setup is my OS, Arch. I get it, but why do I use Arch? Because my computer is sort of my center of activity. Let me explain: my uses for a computer are both to entertain myself, but also to work. I use my computer for practically everything I do on a day to day basis. I play games, I study here, I do quite a lot of things. You might think that Windows might be better at this job, because it has a wider support. The problem is that I dislike Windows and how things are done, so I’d rather deal with Linux than go through the nightmare that is Windows for me. I do have a Windows 10 install, but I barely use it and I use it mainly to play games hassle free.

Now I’ve used a lot of different distributions of Linux over time, but the ones I’ve most experience with is Linux Mint and Manjaro. Mint was great back when I used Linux primarly for work. For a long time, my computer was very shit. It still isn’t the best, but it is certainly much better than before. Back then, I didn’t play games on Linux and if I did, it was Minecraft or emulated games, basically, really simple to run games on Linux, without much hassle. I didn’t knew a lot about Linux back then and I didn’t exactly care about the gaming side either. It’s why I had Windows installed, but with my new computer, I made the switch from Windows to Linux primarly. For the first few months, Mint was also great for gaming, but the problem was that some things with gaming on Linux require more special solutions. In my case, to run osu! without lots of crashes and without audio latency, I had to use special compiled Wine version.

For those who don’t know, Wine is a Windows translation layer for Linux. The easiest way explanation I’ve is that Wine simulates Windows in Linux. It translates what the program needs from Windows and points them to Linux appropiate things. It helps us run Windows apps in Linux. It’s great, only one problem: it’s kinda of a pain to use normally and installing Windows software to run on Linux isn’t always straight forward. There are solutions to this, from watching tutorials from people who did it manually, to automated installers and applications to help out people install and run their software, like Lutris, but even with these, things aren’t always straight forward and the installers are just scripts to run commands to the necessary things, managed and submitted by people like you and me, so if the maintainer of the installers disappears or doesn’t know any better way, well, you can probably see that things aren’t going to be well, which is what happened to me with osu!.

The solution to the problem at hand is using Lutris to install the game and then run the game using a special Wine version with the necessary patches, as well as changing your audio system, but that’s besides the point. All you need to know is that the Wine version required an esential package that was out of date on Mint and I couldn’t find the way to update the package to a newer version. The solution to that problem was to install Manjaro, by first ever distro.

I’ve a love hate relationship with Manjaro. It’s fine, I guess, for a beginner distro, but there are a lot of reasons why it’s not great, the biggest of which is that Manjaro holds back packages for 2 weeks before releasing them, which can cause a lot of issues with a system running rolling releases of packages.

After a bit of back and forth, I landed on Endeavour OS, which is actually the newbie friendly version of Arch. I like Endeavour and I recommended it over Manjaro for someone who wants to step it up a bit in terms of distros. After a few months, I decided to do the big step, mainly out of boredom, and just follow a guide for installing Arch and now, I’m running Arch. It’s great. I like it a lot, however, even if you use Mint or Ubuntu or something else, use it with bride, because it doesn’t really matter in my eyes. Use whatever works for you, because it’s fine.

Now, another basic thing that I need to get out of the way: I use XFCE as my desktop environment. Desktop environments are the big reason why I decided to stick with Linux through my first year or so of learning to use it. This freedom Linux opened up for me, a previous Windows only user, was mind-boggling to me. My enthusiasm for them died down over time as I realized my needs: I need a desktop environment that’s decent looking and consistent theming, resource efficient, that works great without a window compositor and is simple enough for things to not break randomly. After trying out GNOME, KDE Plasma, Cinnamon, XFCE and even went out of my way to get Openbox going, I decided that XFCE is the winner. It does everything I want it to do it: it’s decent looking, admittedly, not out of the box, but with a few simple changes, it can look pretty good, it’s resource efficent, especially compared to GNOME and Plasma, it works without a window compositor, unlike Cinnamon or GNOME, and it’s simple enough to cause me a headache like Plasma did. XFCE simply works for me. I love it. To make it look good, I use the Papirus Icon Theme with the Materia theme and the Ubuntu font as the system font. It looks great, in my opinion!

I think we’re done with the basic things. I should have probably called them “fundamental”, but whatever. Let’s go over what software I use on a day to day basis.

I use Firefox as my web browser. Why? I just like it more than any offering and it works better in my experience than Vivaldi or any other Chromium based browser. I know Firefox fell down big time recently, but I don’t exactly have any problems with it, personally.

I use either Neovim or Visual Studio Code to make the website posts. Yes, I use code editors for that purpose. A little behind the scenes: since I made this blog in June, I made every post in LibreOffice, exported it to HTML and then went and fixed every issue that I saw. It didn’t take long, but I wasn’t really happy doing that all the time and I wasn’t really happy with the theme I made. It’s based on Materia, but it looked wrong to me and phones didn’t play the website nicely either. A week or two ago, I was like “alright, let’s see what I can do” and I discovered Hugo. Hugo is a static web generator, exactly what I have, a static website. It promised a lot of easy abstraction compared to manually doing this, easy themes and, the best thing, is that I could write everything in Markdown file, which is fantastic. I could just use Neovim or VSCode, from beginning to end, with no issue, so I jumped in. I got things working, until I didn’t and I made a mess in the repo for this very website. I was lucky to back up the .git folder and the old website as well, otherwise, I would have been toasted. But now, I use VSCode now to write this. This is the first post I make after the transition, which I hope enjoy as much as I do.

I use kitty as my terminal. Kitty? Yes. Kitty, the GPU based terminal emulator. Why? Because of the kittens it has, more specifically, the icat kitten, which can display images in terminal. Now, I know you might ask “why do you want to display images in your terminal?”. The reason, for me, is that…

I use NNN or XFCE’s default file manager, Thunar, as my file manager. NNN, despite being the month with the funny challenge for the dudes out there, is a terminal, tiny, nearly 0-configuration file manager. It’s made in C, which makes it super fast as well, but it’s super powerful, especially with its plugin system. I’d like to make a more in-depth look into it and how I do my things, but for the moment, it’s my file manager of choice when in the terminal. I end up using Thunar much more, actually.

With that, I want to make a tangent and talk a bit about what I will call “the dark side of Linux”. There are people who really like having everything ready, at their fingertips with their system. I like that too, but I’m clumsy and try to act fast when I can’t really. I’m pretty sure in this massive document I wrote so far, I will make a lot of typos, expressions that only I understand and other such things. It’s because I take things fast, when I really shouldn’t and I should take things slowly. Due to this, the “dark side” of Linux is not only dark, it’s something that I actively disagree with. What I refer by “the dark side” is software primarly controlled by the keyboard, through a terminal emulator. They offen require a lot of configuration, which isn’t a bad thing, after all I did make my own Openbox configuration from scratch, but the way that it is used, through the keyboard, just makes it extremely inefficient for me. I’m clumsy and I need things presented to me in a easy to disgest manner sometimes. NNN is an odd case for me, because I can use it fine, but there are a few things that I like doing on Thunar more than on NNN. I use both, but Thunar gets used a lot more than NNN due to this very reason. I feel like that’s how it goes for most people, actually, but I do feel somewhat held back sometimes due to being so clumsy with the keyboard.

With that, I’ll go to the Neovim configuration stuff. Depsite what I said above, I like Neovim sometimes. The vim controls are awesome for text. If you can handle them, you’re like a wizard. I love it, even though I’m not really a wizard with it. Either way, I’ve a bit to talk about there as well.

Neovim is a fork, or another project based on something else, of Vim, which itself is a fork Vi. I don’t know the full details, but Vim and by extention Neovim are a bit lackluster when it comes to code editing out of the box. The solution are plugins that add functionality. I use vim-plug for making that easier to handle. When it comes to plugins, the ones I like or use the most are:

  • indentLine: adds a little indentation line for easier readability;
  • fzf.vim: nice little file finder for vim based on fzf;
  • vim-visual-multi: adds multicursor support;
  • nnn.vim: uses nnn as a file picker in vim;
  • coc.nvim: general purpose extension host and language server host, basically adding lanaguge specific support in vim, among other things;
  • vim-fugitive: adds Git support to vim;
  • split-term: adding more functionality to the terminal command in neovim.

With that, I went through what I wanted to talk about. Other software I use for making things together here is OBS, for capturing the gameplay footage in my osu! improvement posts, and Kdenlive, the video editor I use to make them seem nicer after I capture my footage.