Skip to content

Instantly share code, notes, and snippets.

@plembo
Last active May 11, 2026 20:15
Show Gist options
  • Select an option

  • Save plembo/bc6e40fd0166381310635491c6616f74 to your computer and use it in GitHub Desktop.

Select an option

Save plembo/bc6e40fd0166381310635491c6616f74 to your computer and use it in GitHub Desktop.
List of useful software

List of useful software

This is the software I like to have on various platforms, and is a work in progress (and so may morph wildly over time according to my personal whims) that I've started mostly for my own use. Recently I used this list in rebuilding my personal workstation after an awful day. Documentation saves (as do backups)!

Linux desktop

My personal workstation and laptop are currently running Linux Mint 22.3 (Zena, based on Ubuntu 24.04), moderately tailored for my own use. Previously, I was on Ubuntu 22.04 LTS Desktop. For me, Mint requires considerably less customization to be tolerable, and that made switching to it a lot less painful than it otherwise could have been.

Installation Sources and Methods

I prefer distro packages where available and not too far out of date, then the latest vendor official packages or binaries when I can can find them (except where it would be too disruptive: like when they overwrite critical dependencies). I will turn to vendor AppImages where packages or binaries aren't available. If I can't find it anywhere else, I'll use a vendor's Flatpak or PPA. I do not use snaps.

Accessibility

Spidery dark type on bright white backgrounds may be "Modern", but they're hard for me to read. Apparently, I'm not alone [1]. As a result, I use dark themes wherever possible. I (and apparently 5 million others) also use the Dark Reader (https://darkreader.org/) extension in LibreWolf (also available for Brave) to force a dark theme on web content (when it doesn't make things worse).

A word on containers

For nearly all server software other than email (postfix) and web proxy (nginx), I try to use containers with Docker, rather than bare-metal services. Here are a few:

System

  • Standard install of the default Linux Mint Desktop (Cinnamon).

Linux Mint packages

(some are already installed by default - and yes, I intend to update the footnotes and reorder this list more logically)

Basics
  • vim [2]
  • ufw (enable with at least ssh allowed)
  • rsync
  • rclone
  • p7zip-full file compression
  • btop
  • flatpak
  • fonts-firacode [3]
  • extrepo
  • secure-delete
  • ratbagd
  • piper
Developer
  • git-all
  • nginx (every developer desktop needs a real web server)
  • nginx-extras (trust me, you'll want this)
  • postfix [4]
  • postgresql
  • ttf-mscorefonts-installer
  • fonts-roboto
  • fonts-powerline
  • meld
  • python3 [5]
  • pipx
  • nodejs
  • openjdk-21-jre-headless
  • lua5.4
  • golang
  • rustc
  • cargo
System Administrator
  • openssh-server
  • bridge-utils
  • qemu-system-x86 [6]
  • libvirt-daemon-system
  • libvirt-clients
  • virt-manager
  • libguestfs-tools
  • iperf3 (test network speed)
  • btop
  • wireshark
Other
  • ffmpeg
  • audacity
  • easytag (mp3 tag editor)
  • simple-scan
  • imagemagick
  • pandoc
  • adb (Android Debug Bridge)
  • zbar-tools, zbarcam-gtk [7]
  • zint, zint-qt [8]
  • avrdude (flash AVR microcontrollers)

Cinnamon Applets

  • Weather
  • Lock keys indicator

On laptops:

  • tlp [9]
  • wavemon (curses-based wifi network browser)

Applications

Vendor binaries

These don't use the native packaging system at all, and in some cases don't come with an uninstall function. Many also don't alert you when updates are available. You'll need to take care to check periodically for updates.

Vendor packages

Using native packaging, most of these can easily be uninstalled. If integrated with the package system they usually get regular updates.

AppImages

Flatpaks (from flathub)

  • Flatseal (com.github.tchx84.Flatseal)
  • Foliate ebook reader (com.github.johnfactotum.Foliate)
  • Discord (com.discordapp.Discord)

Flatpaks also get regular updates.

PPA (Personal Package Archives)

  • OpenRGB (laptop keyboard lighting, add-apt-repository ppa:thopiekar/openrgb)]
  • Variety (wallpaper changer, add-apt-repository ppa:variety/stable)

Like snaps and flatpaks, most PPAs are community created. That's why I usually only install those created by the upstream project or vendor. They can be handy because they use the native (deb) packaging system, and are generally easy to uninstall if they fail.

Additional python modules

(in a virtual environmement python -m venv .venv) [16]

  • pip (pip install --upgrade pip)
  • jupyter notebook
  • numpy
  • matplotlib
  • pandas
  • gmsh (view STL files)
  • yt-dlp

If running Linux Mint, use pipx to install modules as a user when not using a virtual environment.

Additional node modules

  • yarn (npm install yarn)

Web Browser plugins/extensions

Hopefully, as we grow older, we become wiser. Browser extensions are a useful feature, but can impact performance and privacy (how do you pay for an extension without transmitting identity information to the vendor?). This is why I'm totally on board with the trend towards incorporating built-in ad blocking and other features (e.g. Brave's "Shields". or LibreWolf's integration of its own uBlock Origin build).

Web Apps

Chromium-derived browsers like Brave can setup desktop shortcuts to progressive web apps or web pages. See this gist for more.

Android mobile

Not rooted for safety. I'm currently running a Motorola smartphone and Samsung tablet, both budget models. While I try to avoid depending on Google software and services, that isn't possible in areas where the big G dominates: like navigation [17]. Thanks to a serious open source alternative web browser communities (e.g. IronFox, Brave) we do have solid choices beyond the Big Three (Google, Microsoft, Mozilla).

Applications

From the Google Play Store

  • File Manager Plus [18]
  • Brave
  • Proton Mail
  • Proton Calendar
  • Bitwarden
  • Acode code editor (paid version)
  • Scientific calculator plus 991 (Tools for Student) [19]
  • Discord messenger
  • Signal
  • Stellarium
  • Moon+ Reader Pro
  • AntennaPod
  • Mastodon
  • Obsidian
  • PDF Viewer lite (AVR-Apps)
  • Caffeine [20]
  • Syncthing-Fork
  • Collabra Office [21]
  • OsmAnd (maps and navigation)
  • Tor browser
  • Health Connect

From F-Droid (https://f-droid.org/)

  • IronFox [22]
  • Termux [23]
  • Aegis Authenticator
  • Fossify Voice Recorder
  • Fossify Gallery

Web Browser plugins/extensions

Windows desktop

My employer provides me with a Windows laptop for work, and enforces an approved list of standard software. As my first job at the company included locking down our then-new Windows desktops with group policies, the irony of now having to live under those restrictions as a "power user" isn't lost on me.

Notes

[1] Raluca Budiu. "Dark Mode vs. Light Mode: Which Is Better?". Neilsen Norman Group. 2 February 2020, https://www.nngroup.com/articles/dark-mode/.

[2] Everything else fails eventually. Vim continues. I use the shipping full vim package (not vim-tiny), which in Ubuntu 22.04 is version 8. See my vimrc for hints on customization.

[3] My favorite font for code editing.

[4] Postfix is my go to when I need to send mail over the Internet or my local network, or receive mail from services like cron (in the last case the server would be configured as Local only). Hanif Jetha and Mark Drake, "How to Install and Configure Postfix on Ubuntu 20.04" is a good place to start, https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-on-ubuntu-20-04.

[5] See Managing python (for most of us), for a standard python setup and how to maintain it. If you need the latest python version, then pyenv is your best option.

[6] Tried VMware Player and Oracle VirtualBox for a while, but finally returned to KVM because it really has improved over time (e.g., support for 3D acceleration in Linux guests using VirGL). Packages to install on Ubuntu are: qemu-system-x86, libvirt-daemon-system, libvirt-clients, bridge-utils, virt-manager. The kernel modules previously loaded with qemu-kvm are not included with qemu-system-86. If you want to experiment with non-x86(64) architectures, load qemu-system.

[7] QR-Code readers (webcam and image) for Linux (https://zbar.sourceforge.net/index.html).

[8] Zint QR-Code Studio (QR-Code creation) for Linux (https://sourceforge.net/projects/zint/)

[9] The Ubuntu package installs with the default config, which worked just fine on most laptops. Enable with systemctl enable tlp.service and start with tlp start.

[10] LibreWolf, an open source fork of Firefox, has replaced the latter on all my Linux systems (there's no Android build for LibreWolf). Librewolf's default settings are reasonably privacy-protecting, making the job of customizing it much easier than Firefox.

[11] I have replaced Chrome with Brave on all my systems, including my smartphone, because the former is more privacy-respecting, and its reasonable defaults makes less work for me in customizing it.

[12] For the small number of files I actually need access to across devices, Syncthing works pretty well. Follow the documentation. Hint: I always grab the Syncthing Device IDs for each device and enter them manually in the Syncthing config on my primary device (e.g., my desktop machine). I then follow the prompts on each device to complete the sharing process. Syncthing lags a little during configuration, so give each node time to set up. For sync of photos on phones and tablets, I set up a separate sync folder (e.g. /storage/emulated/0/DCIM/Camera) that I then push to the Pictures folder on my desktop machine.

[13] Open source (MIT license) fork of Visual Studio Code, without the proprietary bits like telemetry and AI domination.

[14] Obsidian is a freemium note-taking application. Notes are stored in markdown format with associated attachments (images, documents, etc.) in a "vault" (folder, with or without sub-folders) of your choosing. I share a folder with my Linux and Android devices over Syncthing, and point my desktop and mobile versions of the app at it as my vault. Despite depending on Syncthing having a good day, this solution works well for me.

[15] go-appimage is a project providing tools for managing AppImages on the desktop from "the inventor of the AppImage format". This includes appimaged, a systemd user daemon that automatically creates desktop launchers for AppImages found in specific directories, like ~/Applications. To deploy grab the appimaged image, drop in your designated AppImage directory (for me this is ~/Applications), and execute (./appimaged*).

[16] How you manage python depends on a lot of factors, including whether you have a need to switch versions for different projects. In Managing python (for most of us) I outline how I've tried to do it.

[17] I struggle with moving off Google Maps and onto OsmAnd. The latter has a definite advantage for off-grid and near off-grid travel, but Google's interface is still much better and its results not as prone to misdirection. However, given the example of Google Search's decline in usefulness, I am concerned that relying too heavily on AI in the design, testing, and maintenance process will result in a quality crash for Maps.

[18] After using many file managers on Android over the years, I settled on this one from AlphaInventor (https://www.alphainventor.com). Files by Google wasn't bad, but it didn't support SFTP on my local network, File Manager Plus does.

[19] Best scientific calculator app on Android. Emulates the Casio 991 Plus and Graphing Calculator 84 Plus. Also works as a phone :-)

[20] Caffeine allows you to prevent Android from putting your device to sleep while something important is happening on it.

[21] A functional alternative to Microsoft Office for Android. On the desktop I use LibreOffice (which Linux Mint installs by default).

[22] IronFox is another fork of Firefox, compiled for Android. It has its own private F-Droid repository. Like LibreWolf, its defaults are reasonably privacy-protecting. Moving to IronFox as my default browser on Android has made web browsing on a smart phone tolerable again.

[23] Little used, but essential, Termux has been a mainstay of my Android experience for over a decade. It's basically tiny Linux-in-a-box.

Comments are disabled for this gist.