Recommended Software: Personal computer
This is a curated list of software that I use on personal computers (as opposed
to servers). The items are categorized. A short description of each piece of
software is given, as well as further comments.
1. OS and system
Here we list system-level software.
1.1. Base system
- GNU/Linux (Operating system)
- Void Linux (Linux distribution): Distributions do not matter much,
but I stuck with this one. The base system is stable, lightweight and lets
the user choose his "environment" to a large extent. It is a rolling release
distribution. I switched from Debian a long time ago.
- xbps (Package manager): I found the packages I used were well
maintained and up to date.
- runit (Init system and service supervisor)
1.2. Utilities
- fcron (Job scheduler): Like cron but for computers that sometimes
miss parts of the intended schedule.
- rkhunter (Rootkit detector)
- clamav (File-scanning antivirus)
- autofs (Mount manager): Automatically mount drives from anywhere
(usb, disks, remote shared drives etc.)
- smartmontools (HDD SMART data viewer): Can run some health-checks on
disks.
- iperf3 (Data transfer speed assessment): Can be used between a
server and a client to measure the rate of data transfer.
1.3. Environment and ricing
- awesomewm (Window manager): Tiling (though allows floating) window
manager. Configured through lua scripts. Requires a bit of time to configure
it, but resources are available.
- cava (MPD FIFO visualizer): I use it to display a spectrograph
visualization on my desktop of the audio being played.
2. General purpose user-interactive programs
We list here software fulfilling general personal computing needs.
Terminal and utilities
- urxvt (Terminal emulator)
- Rlang (used as a calculator)
- vim (Text editor): Fast and easy to use on configuration files,
scripts, text data of almost any kind. I recommend using vim bindings
whenever possible in other programs.
Documents
- calibre (Ebooks management): I only use the CLI utilities to convert
between formats.
- djview (DJVU files viewer)
- mupdf (PDF viewer)
- mutools (PDF editor): CLI utilities for most common tasks, such as
merging pages together, splitting etc.
- xournalpp (Document editor for pen tablets): Used in conjunction
with a pen tablet to create handwritten documents. I use it for taking notes
while watching video lectures.
- simple-scan (Interface for scanners): Simple GUI for scanning
documents.
- texlive (LaTeX distribution)
- libreoffice (Office suite): I use it mostly for spreadsheets. I
never use it for text documents but I occasionally have to visualize
them.
Image
- exiftool (Image EXIF editor): CLI.
- feh (Image viewer): Lightweight.
- flameshot (Screenshots): The user can select the part of the screen
to save as an image.
- gimp (GUI Image editor)
- ImageMagick (CLI Image editor)
- inkscape (SVG editor)
Plotting
- graphviz (Graph visualizer): Produces image output from text
descriptions of graphs.
- gnuplot (Plot visualizer): Produce image output from either data
or formulae. Scriptable and customizable.
Video
- fswebcam (Webcam management): CLI for testing webcams and scripting
videos etc.
- yt-dlp (Video downloader): CLI program to download video media from
web pages.
- mpv (Video player): The video playback quality can be
customized.
- obs (Streaming): Save or stream video and audio, including desktop
and webcams. Easy to use.
- ffmpeg (Video processor): Featureful, can cut and merge videos, manage
audio, subtitles, encoders and much more.
Music
- mpd (Music player daemon)
- ncmpcpp (MPD client): Allows editing metadata of music files. The
interface is in the terminal and customizable.
Files
- rsync (File transfer): Useful for making backups of data regularly
and copying only the changes. Also works for remote transfers.
- Thunar (File manager): GUI, responsive and has plugins for common
functions.
- tumbler (Thumbnails for Thunar)
- Veracrypt (Encrypted containers): Create and open encrypted
containers of arbitrary size. Not sure if this is still super maintained
though.
Communication
- evolution (Mail client): GUI.
- element (Matrix (chat) client): Not so great with resource usage on
desktop since it is an electron app.
Browsers
- firefox (Internet browser): Not ideal, but at least it will still be
maintained in the foreseeable future.
- chromium (Internet browser): For when firefox doesn't work.
- torbrowser (Internet browser): For visiting Tor onions.
Remote graphical sessions
- remmina (RDP client): Connect to Windows computers using RDP.
Other
- gnucash (Accounting): I track personal income/expenses with this. It
can display diagram reports.
3. Domain-specific
These pieces of software are only useful for specific trades or hobbies.
3.1. Engineering
- freecad (CAD suite): My usage is strictly for viewing CAD files at
present.
3.2. Research
- JabRef (Reference manager): I use it to store lists of research
papers by category, track which ones I have read, and store notes about
each paper.
3.3. Development
- Emacs (IDE): I find it hard to use out of the box, but it can be
configured to a larger extent than other IDEs. Documentation and packages
are plentiful.
- cloc (Count Lines of Code): CLI utility producing reports on the
number of lines of code in projects.
- shellcheck (Shell script static analyser): CLI.
- git (Version control): Who doesn't use it? Vanilla CLI is perfectly
usable.