My Dotfiles
The repo with my actual dotfiles can be found here, this is just an article to serve as motivation for that repo. In fact, the contents of this article might become outdated, and I don't guarantee I'll be keeping it up-to-date till the end of time.
These are the usual reasons people mention as motivation to migrating to the Linux ecosystem:
- Privacy
- Security
- Open Source (mostly) — or Free and Open Source Software (FOSS)
- Customization
- Learning more about tech, or investing in your IT career
- Less resources/hardware needed
Those are all good reasons, but they were not what cut it for me actually. Quite frankly, I think the usual lists and blog posts on the topic are missing one giant ingredient that could change everyone's view of the operating system wars: Linux is at its core a text-based OS.
Before I get hatemail from hardcore users saying I'm wrong
As a result, most Linux power users end up being able to centralize
their files into the typically known as dotfiles repos
Having a text-based OS is also very important due to its efficiency: you can go through your day using basically only the keyboard. Granted that you know how to touch-type, there will also be way less stress on your hands and arms.
My current distro is Artix, a
subdistro
stemming
from Arch Linux, without
Systemd. You can also check out my
hardware in the
README
of my dotfiles repo, which I previously mentioned above.
The most important components of my setup are:
The whole setup took me almost a semester — and 300+ commits; and a whole lot of other people's tutorials and videos — to solidify, as I discovered new tools created in the last years. Hopefully, this article and the above-mentioned repo will help you cut through the time I've invested.
- Neovim: a better version of Vim, with its awesome shortcuts and modal editing. It's a community-based version fork, focused on bringing more IDE-like features to the editor and better support for programming languages. It has everything Vim does, so you won't lose anything when switching to it.
- Kitty: a very minimal and performant — in fact, the most performant, as far as I know — terminal emulator. It's way less bloated than others, like Konsole, and as fast as some more established, minimal ones, like Alacritty. Its author is the same as Calibre's, so you can be sure it's gonna have a strong open source, and performance core. Another important feature, at least to me, is its support for font ligatures — I use Fira Code —, which seems to be a rarity when it comes to minimal terminal emulators.
-
XMonad: despite dwm claiming the
suckless crown, XMonad is still king, in my opinion. You will not
find anything more customizable, and it's written in Haskell, the
cool,
functional
language of the moment. Instead of having all of the bazillion
features most desktop managers throw at you, I chose to use a very
minimal setup of XMonad, one which would surprise most XMonad users
— I don't even use
XMobar, not even
dmenu, I chose
XMonad.Prompt
instead. - qutebrowser: I, like almost everybody else, used Chromium-based browsers — e.g. Chrome, Vivaldi, etc. and then later Brave — for a very long time, but, after really learning Vim, I got very frustrated with the lack of keyboard support and care on those browsers. I even ended up creating a browser extension for navigating YouTube through the keyboard. Extensions, such as cVim or Vimium, did help to enhance the experience, but they sometimes collide with the browser's main, GUI interface. That's when I finally heard about qutebrowser, a command/text-based browser. If you're not a Vim user, you're gonna struggle with the shortcuts, but you can also use the mouse, so it isn't that big a deal — invest in yourself and learn Vim (!). From my experience, some of the shortcuts in qutebrowser are not very usable or friendly out of the box, so I highly suggest you copy or examine my configuration.
- Ferdi: this piece of software might not be for everyone. It's a messaging browser, where you can centralize your chats — actually, it can access other web pages, but its design wasn't meant for those types of pages. If your job demands you communicate with a lot of people in multiple different apps, you're surely going to appreciate and benefit from this. In terms of security, I think your worries can be minimized, since your credentials seem to stay local; and the project is open source, so anyone can check if they are cheating their users.
Some other important elements that serve as a complement to some of the holes you're still gonna need to fill in order to be a productive member of society are:
-
Some special, extra folders to help you
organize things better:
-
~/Code/
: where I centralize all of my code/software projects. Please, don't go out spreading/cloning software projects all over your system. I'm not saying that putting code elsewhere isn't allowed, but I am saying it should be more rare than what you think at first. And, by the way, this is a common practice for most software engineers I know, even on Windows and MacOS. -
~/Notes/
: my digitized notebook. I currently have more than 3,200 Markdown notes, which I was previously tracking with Notion. Remember what I said about the beauty of having a text-based OS? This is where it can shine the most: imagine all of your hard-earned study sessions being centralized in one place, all searchable; not to mention formattable, taggable and many other "-able"s. I typically usefzf
to make this easier to work with in the terminal and in Vim. -
~/Library/
: I choose to use Git locally for managing my digital library of books, instead of Calibre — I still use Google Drive as a cloud back up as well. It's a much more viable option than you might think. If you want to properly deal with binary files through Git, however, you'll have to take a look at Git-LFS.
-
-
Neovim Extensions: Vim is actually quite simple to
learn if you have the
right teacher. Most of your research time is actually going to go into
customizing it, which will eventually make it morph into an IDE.
Your setup will depend on the languages you use, and your
objectives, so I guess you're gonna have to do it for yourself. If
you wish for a starting point, 2 of the most valuable contributors
in this space are
Tim Pope and
Junegunn Choi.
Nonetheless, a lot of what I have will coincide with yours, as it is
more or less general purpose
. -
FZF
: this is a tool that was sorely missing from the Linux terminal for so many years. It makesgrep
looks like a silly toy project: it's much more friendly to use, features better terminal UI, and is even much faster, a must for modern users. Junegunn Choi has also created Vim integration, if you want to use it there as well. -
Emacs
(with Evil Mode):
my love for Vim has already been declared multiple times throughout
this article, however, Vim is unfortunately no a silver bullet.
Especially when it comes to software development. Dealing with
larger projects and trying to leverage language-specific features is
still a huge pain, despite Neovim's recent efforts — it has
taken more than, what, only 35 years
to get this going? That's where Emacs can find its place. It's a GUI editor that isn't limited by the capabilities of your terminal emulator, customizable through a much better language (LISP) than the horrendous abomination called VimScript . The learning curve for Emacs is very steep, so I do recommend you read and watch a lot of tutorials before commiting to it. One YouTube channel that might help you a lot is System Crafters. - Okular or Zathura: I wish Zathura would be enough, because it's a much more minimal and keyboard-driven piece of software when compared to Okular. However, they seem to have no interest in implementing some core features, such as highlighting and proper text-copying. So, in the end, I use Zathura for quick lookups and comics; and Okular for deeper study sessions. Both support changing text and background colors, so you can create a dark mode for any digital document, a feature for which my eyes are very thankful.
Most of what helped me get to this point in the setup comes either from direct documentation from the tools and repos I mentioned, or some few selected YouTube channels, with tutorials. Here are the most valuable YouTube channels — most of them are also available on Odysee — so far: