Skip to content

Instantly share code, notes, and snippets.

@plembo
Last active July 20, 2024 00:17
Show Gist options
  • Save plembo/bc6e40fd0166381310635491c6616f74 to your computer and use it in GitHub Desktop.
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 that I've started mostly for my own use. Recemtly 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 Ubuntu Desktop 22.04 LTS, moderately tailored for my own use.

Installation Sources and Methods

I prefer vendor official binaries or package(s) when I can can them: except where it would be too disruptive (overwriting critical dependencies and such). Otherwise, I'll try to find an AppImage or vendor flatpak. Third-party PPAs and source installs are my last resort. I do not use snaps. NOTE: You can removed snapd, although doing so may impact the operation of Ubuntu Pro.

A word on docker containers

For nearly all server software other than email (postfix) and web proxy (nginx), I try to use containers under docker, rather than packages or binaries directly on my machine. Here are a few:

System

  • Minimum install of the default Ubuntu Desktop (Gnome Shell).

Unattended upgrades

Disable if you don't need them. If already enabled, you can disable by doing a sudo dpkg-reconfigure unattended-upgrades.

Gnome extensions

Gnome on Ubuntu already ships with some of these:

  • Desktop Icons NG (rastersoft)
  • Lock Keys (kazimieras.vaina)
  • OpenWeather (skrewball)

An alternative to the Ubuntu dock:

  • Dash to Dock (michele_g)

Ubuntu packages

  • vim (the full package, not vim-tiny)
  • ufw (enable with at least ssh allowed)
  • rsync
  • build-essential
  • curl
  • wget
  • p7zip-full file compression
  • simple-scan
  • python3 [15]
  • meld
  • qemu-system-86 [20]
  • nginx (every developer desktop needs a real web server)
  • nginx-extras (trust me, you'll want this)
  • fonts-firacode [13]
  • ttf-mscorefonts-installer
  • fonts-roboto
  • ffmpeg
  • mpv
  • smartmontools
  • postfix [9]
  • easytag (mp3 tag editor)
  • graphicsmagick (replacement for imagemagick)
  • pandoc
  • adb (Android Debug Bridge)
  • iperf3 (test network speed)
  • smbclient
  • inxi (this will also install lm_sensors)
  • htop
  • flatpak
  • wireshark
  • libreoffice [5]
  • gimp
  • lua4.5
  • golang

On laptops:

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

For NVIDIA GPUs:

See this guide [21]

For AMD GPUs:

xserver-xorg-video-amdgpu [19]

Applications

Vendor binaries

These don't use the native packaging system at all (apt, in the case of Ubuntu) and in some cases don't come with an uninstall function. Many also don't alert you when updates are available. Take care to document how you set them up on your system and check periodically for updates. Install to /opt for use by everyone on the machine, $HOME/.local for a single user.

Vendor packages

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

Ubuntu PPA (Personal Package Archives)

  • Firefox (add-apt-repository ppa:mozillateam/ppa) [1]
  • appimagelauncher (add-apt-repository ppa:appimagelauncher-team/stable) [4]
  • OpenRGB (laptop keyboard lighting, add-apt-repository ppa:thopiekar/openrgb) [23]

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

Additional python modules (in a virtual environmement python -m venv .venv) [15]

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

Additional node modules

  • yarn (npm install yarn)

AppImages

  • Audacity
  • Joplin
  • Inkscape
  • FreeCAD
  • MyPaint
  • Siril
  • Stellarium
  • Bitwarden

Flatpaks

  • Gnome Podcasts (org.gnome.Podcasts) [22]
  • Extension Manager (com.mattjakeman.ExtensionManager) [27]

Web Browser plugins/extensions

Web Apps (PWAs)

  • Google Calendar [25]
  • Microsoft OneDrive [3]
  • Google Messages for the web

Android mobile

Not rooted for safety.

From the Google Play Store:

  • Google Chrome for Android [28]
  • Firefox for Android [1]
  • Proton Mail [17]
  • Microsoft OneDrive [3]
  • Microsoft Office apps (Word, Excel, PowerPoint) [26]
  • Google Calendar [25]
  • Google Lens
  • Bitwarden
  • Acode code editor (paid version)
  • Scientific calculator plus 991 (Tools for Student) [7]
  • Discord messenger
  • Signal messenger
  • Zoom Workplace
  • Net Analyzer
  • OpenWeather
  • Stellarium planetarium
  • XMind
  • ReadEra Book Reader
  • mpv-android
  • AntennaPod
  • Simple Voice Recorder
  • Mastodon
  • Joplin
  • Proton VPN
  • Twilio Authy Authenticator [29]

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

  • Hacker's Keyboard
  • Termux Terminal emulator
  • Material Files [2]
  • AdAway (https://adaway.org/) [31]

Notable apps to disable:

  • YouTube
  • YouTube Music
  • Microsoft Outlook (once installed, it refuses to uninstall)

Windows desktop

Yes, even I usually have at least one Windows virtual machine hanging around to do various things. These are the applications I like to have when working on Windows. Windows 10 and up come with Microsoft Edge as the default browser.

Web Browser plugins/extensions

Notable apps to remove:

  • OneDrive sync (stop sync first, then uninstall and cleanup files) [14]

[1] Firefox is a good browser flawed by bad management. It was my default browser for a very long time, but I'm currently back to Google Chrome as my default. I use the custom user.js from BetterFox with Firefox to quickly privacy-harden my installations.

[2] I preferred the AOSP Files app that used to come with plain vanilla Android, but starting with Android 11 Google has replaced it with "Files by Google". The latest open source Material Files file manager from F-Droid does the job for me.

[3] I'm not a big fan of file sync from anyone, including Google and Microsoft. One of the first things I do after installing Office on my Windows machines is to remove the old OneDrive sync app, and replace it with the new app "web view" from the Microsoft Store. OneDrive does make sense for cloud storage because paid individual and family M365 plans come with 1 TB storage per user. On Linux I use rclone to mount and unmount OneDrive to a folder in my home directory.

[4] The stable build of appimagelauncher is pretty reliable, although YMMV (mine has over time). I put my appimages in ~/Applications and make them executable. It often takes a while for it to notice a new appimage has been added, and sometimes requires double-clicking in Files before popping up the "integrate & run" prompt.

[5] The shipping version of LibreOffice seems "good enough" for now.

[6] On Windows I still use the standard installers from python.org because I haven't found anything else that's as stable and reliable (tried python-env but it didn't work as expected, so I ditched it). I recently returned to using my Linux distro's shipping packages as well. If I really needed to run multiple versions of python, I'd probably install pyenv to a developer account.

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

[8] Visual Studio Code is my usual editor for big projects or those where its plugins make life easier, but vim is my system and git default editor.

[9] 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.

[10] Because with Ubuntu 22.04, Canonical dropped their native package. See additional notes here: https://www.omgubuntu.co.uk/2022/04/how-to-install-firefox-deb-apt-ubuntu-22-04.

[11] Configure mice and other input devices. From the libratbag project, https://github.com/libratbag. This is how I configure the Logitech G203 for my personal Linux workstation.

[12] This is the PPA maintained by git project contributors.

[13] My favorite font for code editing.

[14] Microsoft continues to insist on automatically installing end enabling OneDrive sync during user setup. I always stop and then uninstall it as soon as possible: but tread carefully if you have stuff on OneDrive you want to preserve.

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

[16] Blender has seen some significant feature improvements since 3.0, resulting in my installing the latest vendor binaries rather than the convenient Ubuntu package. Currently installed to /opt/blender so everyone on the machine can use it. Main binary is linked to /usr/local/bin/blender, icons go to /usr/local/share/icons and .desktop file to /usr/local/share/applications.

[17] Proton Mail has clients for Android, Windows, and now, Linux. While the Linux desktop client is still in beta, I've replaced my previous PWA install with it.

[18] After many years of manually installing NVIDIA drivers on my Linux systems, I'm now using Canonical's packages for Ubuntu. There's still some configuration to do, but I've finally managed to restrict the contents of my /install/nvidia to the Windows versions only. On Ubuntu I login to "Ubuntu on Xorg" because NVIDIA's drivers still don't support Wayland as Wayland.

[19] The automatically installed open source amdgpu driver is fine for most, and is what I use.

[20] 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 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.

[21] On my systems sudo ubuntu-drivers install defaults to the precompiled proprietary binaries (no dkms), which works for me. Software Updater shows my current driver (on the Additional Drivers tab) as "NVIDIA driver metapackage from nvidia-driver-535 (proprietary, tested)". For gpu compute workloads (e.g. python data science) you'll probably also need Ubuntu's nvidia-cuda-toolkit package.

[22] There used to be a multitude of dedicated podcast players, but Podcasts is one of the last standing. It has a spare but acceptable interface, but at least the OPML import works.

[23] I use OpenRGB on my ASUS F15 laptop to control its keyboard lighting. After trying (as recommended by the project) the Debian packages, flatpaks, AppImages and source install, I settled on Karl's PPA. Of course as a reverse-engineered effort I'm well aware (if not totally prepared) for OpenRGB to fail on the next change in my environment (whether that be a kernel update, firmware upload or simply the fact that it will be a Tuesday during a full moon).

[24] The Ubuntu package installs with the default config, which worked just fine on my old Thinkpad X250 and now on my Asus F15. Just enable with systemctl enable tlp.service and start with tlp start.

[25] Google Calendar is what the people I care about use. Besides, Microsoft's Calendar UI is awful (not as awful as OneNote, but still), and can't really operate outside the walled garden. Proton's Calendar looks nicer, but also limited when it comes to integration.

[26] At home, I have a "family" subscription to M365, mostly for the 1 TB OneDrive storage. While I love LibreOffice on both Linux and Windows, Microsoft's desktop apps are more widely supported.

[27] Search and install Gnome Shell extensions from the app, which the stock gnome-shell-extension-prefs can't do. Eliminates the need to get Gnome's buggy browser integration working.

[28] Google Chrome is my primary browser. I have a checklist to partially mitigate privacy issues. With Raindrop.io I don't need Google Sync for bookmarks. On Android I run AdAway (installed from F-Droid) to block annoying content.

[29] Authy remains the best authenticator app on Android (despite its assimilation by Twilio), and so I continue to use it: mainly as a backup 2FA method for Bitwarden.

[30] I use rclone on Linux to mount and unmount my OneDrive to a folder in my home directory. In the past I've used it to sync folders and files with S3 and other cloud storage.

[31] AdAway (https://adaway.org) is an effective content blocker. Not quite as clean and thorough as uBlock Origin, but it gets the job done on Android where many apps (including most Chromium-based browsers) can't load uBlock Origin. It works on both rooted and non-rooted devices. See documentation for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment