For my operating system I use Alpine Linux. When it comes to operating systems, you really can’t go wrong with Linux. I use Alpine Linux because it is highly customizable and uses very little system resources. The init system of Alpine Linux, openrc, is also very simple to understand, easy to use, and is extremely fast. The package manager of Alpine, apk, is probably the easiest to use and fastest package manager that I have ever seen.
My web browser of choice is Firefox.
I make sure to configure Firefox to disable all telemetry, minimize the browser
footprint, reduce tracking, and more. This is usually changed in the
about:config
page for Firefox. Although I used to use Qutebrowser
as my main web browser, it’s downsides proved too great for me to use (you can
read more here).
I also have a few extensions that I make sure to use for Firefox to make it
even better but also to block trackers and advertisements. These include:
My window manager of choice is dwm (dynamic window manager). I was pretty hesitant when I first switched over to a window manager because it seemed pretty tough to use. However, I eventually got the hang of it and now I think that a window manager is way better for productivity. I use dwm in particular because it takes up very little system resources and it is very customizable. Although it takes some knowledge and skill to learn and customize dwm, it is well worth the trouble.
I use st (suckless/simple terminal) for my terminal. st is very small and uses barely any system resources, it is also pretty customizable and extensible. Although it lacks many features that other terminal emulators have, these features can be patched into the software by the user without much hassle. It goes along pretty well with dwm.
For my shell, I use yash which is minimal shell that aims to be maximally POSIX compliant. For the longest time I have used zsh as my main shell, however I have decided to switch to yash since it is simpler, faster, and more portable than zsh. Despite this, yash still remains user-friendly and has things like command suggestions and advanced command completion. I found that zsh is a bit too bloated for me and has caused a few problems in the past that yash solves.
For text and code editing I use Neovim. Neovim is a community driven fork of the popular Vim editor with a cleaner code base and other features like first class Lua support, sensible defaults, and is fully compatible with Vim. I really like being able to use Lua to write scripts for Neovim rather than Vimscript, as I think that programming in Vimscript can be an absolute nightmare sometimes.
Normally for browsing files I just use the terminal. I am considering (and playing around with) file managers like lf, nnn, ranger, and more, however I still have not found one that I like.
For creating documents I have a few systems that I like to use. For short notes and quick write ups with plain text files or markdown files I use Pandoc to convert my quick notes to documents or to any other formats.
For somewhat longer and more precise (but still somewhat short) documents I use groff/troff for creating documents in the terminal.
For professional work and long papers/essays I use LaTeX/XeLaTeX for creating documents as it makes the process for creating title pages, formatting, citations, bibliographies, and etc. easier than using groff/troff. It definitely beats using Microshaft Word.
For spreadsheets I use sc-im. It’s a simple terminal spreadsheet editor that has Vim keybindings by default. It has lots of builtin features like wide character support, key mappings, GNUPlot support, and the list goes on and on. It truly is the Vim of spreadsheet programs.
For video I use mpv, almost everyone is using it nowadays and it’s very versatile. There isn’t much more I can say about mpv other than it’s my favorite video player.
For playing music I also use mpv. In fact I have a very simple script for playing the music with thumbnails from my music folder.
For editing video and audio I use FFmpeg as my main video editor. FFmpeg is perhaps the gold standard for all video/audio editors, not just terminal editors. It can manipulate video and audio streams in almost any format and it’s amazingly fast.
For image viewing I use nsxiv because it’s very simple and follows closely with the Suckless philosophy.
For document viewing I use zathura with different add-ons for PDF and document viewing.
These include zathura-djvu
for DjVu
support, zathura-pdf-mupdf
for PDF support, and zathura-ps
for Postscript
support.
And finally, for presentations, I use sent for its simplicity as it can effortlessly turn plain text files into simple presentations. For more professional and complex presentations I use the LaTeX beamer class.
I use aerc for email. aerc is a terminal email client written in Go that has a lot of features that I find particularly useful like Vim keybindings, HTML email rendering, a tmux like embedded terminal system, and more. It’s very easy to setup and works well with large services like ProtonMail and Google (not that I would recommend using these email services).
For making small or simple changes to images I use ImageMagick. For creating images or making larger edits I use GIMP.