It's no secret that I use Linux everyday since I've been screaming it from the rooftops the moment I deleted Windows from my laptop. I hope to shed a bit of light in this post on how I use Linux exclusively on my laptop as a computer science student. This post will just broadly cover what I use on my laptop and the applications that get me through university. This system has taken me some time to put together and has been a constant learning journey, so I don't expect this to stay the same over the next year. Anyway, lets begin.
Table of Contents
- My distribution
- My desktop environment
- My shell
- My custom scripts
- My applications
- My configuration files
My distribution
I have used almost every "beginner" and "top 10 best" Linux distributions over my 8 years of experience with Linux. I can safely say that what I am using now is by far my favourite and the most stable operating system that I have every daily driven. I am currently running EndeavourOS. Which is a flavour of Arch that comes with an easy GUI install process that allows you to chose your desktop environment right from the start. This has saved me the hassle of navigating the ArchWiki install page which is honestly really horrible for someone who just wants Arch to work without having to decide which bootloader to use (not GRUB by the way). Prior to EOS, I used Ubuntu MATE, partially because it was Ubuntu, but mostly because it wasn't Unity or GNOME. I personally don't think I will ever switch back to Ubuntu because of the countless issues and bloatware I encountered, but maybe there's hope. I would like to make it known that despite the reputation of Arch systems breaking, mine has only broken once, and that was because of a bug in the GRUB code. One feature of EOS that I like is that the install process is so much friendlier than Arch and I don't have to worry about accidentally breaking my install or forgetting to install critical software. To be fair however, I may switch to vanilla Arch in a few weeks, just for the kicks.
My desktop environment
Rather than using a desktop environment, I prefer just sticking to a window manager that allows me to control most of what I need by simply using the keyboard. This means that simple tasks like opening a browser or closing a window don't require me to take my hands off the keyboard. This fact alone has managed to increase my productivity as the muscle memory to open a web browser is faster than the task of clicking the mod key and typing 'firefox'. The window manager I use is called i3, and I chose it simply because it is one of the more popular ones. Please note that if you want to use a window manager, make sure you install the extra applications you may need for file browsing etc. Alternatively you can learn how to do those tasks from the terminal which could be optimised by writing scripts and binding them to keys. I typically install XFCE alongside i3 so that I have necessary applications ready to go. Some may call that bloat, to which I agree, but it has saved me time upfront when I needed it. Now that I have more time and I'm more familiar with the applications I need, I will probably skip the XFCE install next time around.
My shell
For the longest time, I was using the default Bash shell with starship installed to give a beautiful prompt. However as of a few weeks ago, I learned about ZSH and oh-my-zsh which has slightly increased my productivity by offering auto-complete based on history. I followed this easy tutorial and made sure to enable the auto-completion feature which helps in situations where you are working out of one directory for a prolonged period of time. I would recommend oh-my-zsh for anyone that is really interested in spicing up their workflow and making it personalised, but aside from that, it has only slightly helped save time.
My customs scripts
Over the last year and a half, I have created a few scripts and aliases in my .zshrc (.bashrc) file that help me out with my daily work, and I'll share them with you in hopes that you may find them helpful too. To start, the only aliases and functions I have in my .zshrc are: 'v' which is just a shortcut to neovim, 'cdterm' which allows me to open another terminal in the same directory, 'cdf' which allows me to switch to a directory with a particular file in it, 'graph' which allows me to print a decorated git commit graph for easy viewing, and lastly 'recordScreen' which does as you would expect, except without any audio input.
My custom scripts are currently very limited and I hope to add more in the future, but they are: 'screenshot' which does as expected, 'screenregion' which captures a selected area on the screen, 'mylock' which locks the screen with a blur effect, and 'backup-home' which is not as feature-rich as I'd want it to be. All of these will be available on my GitHub soon if I haven't already added them.
My applications
This section is fairly simple, I'm just going to list off the most common applications that I use and what they are for. Many of them simply just do one job and others are more feature-rich. These applications are:
- Web browser
- Firefox
- Note taking
- Obsidian
- PDF Viewer
- atril
- Microsoft Word replacement
- libreoffice
- Simple text editing
- gedit (simple)
- geany (feature-rich)
- neovim (very feature-rich)
- Image viewer
- gthumb (feature-rich)
- eom (simple)
- Creating diagrams
- drawio (simple)
- GIMP (feature-rich/photoshop replacement)
- Password manager
- keepassxc
- Virtual machine
- QEMU/KVM
Aside from these applications I also use a few others that are very task-specific which I will save for another post. I would also like to mention that I often use Python to complete repetitive tasks like text querying and manipulation so I would heavily advise learning Python for productivity reasons.
My configuration files
Most of the things I mentioned today are customised using configuration files that you can find in my GitHub repo. I plan to update it soon and add an installation script to make it easier to use but feel free to take a look and use whatever you like. After all, that's what I did to put it together.
Final thoughts
My system has been an accumulation of small changes over time and it still has a long way to go. I plan to invest more time over the next few weeks and I'm aiming to create a video that goes over my Linux set up and how I use it for university with more details in it. I am yet to update my contact page, but just know that I would love to hear your thoughts about the things I write. Just hold your thoughts for now, as I decide where I want you to contact me. Until next time, bye.