Favourite Windows Software

This page serves as a living, in-progress dumping ground for direct links to the download pages of my favourite Windows software so I don't need to waste time finding them when I perform a new installation. You may find it useful too. If you have any suggestions please let me know.


This is a set of software I like to install on any new Windows installation, Virtual Machine or desktop.

On a Virtual Machine

Nothing here yet...

On a Server

Nothing here yet...

On a Workstation

Nothing here yet...

On an End User Terminal

Nothing here yet...

In a UNIX-like Environment

  • Cygwin NOTE: Cygwin can consume huge amounts of space. From Stack Overflow: What is the current full install size of Cygwin? by user Warren Young:

    A full Cygwin installation can range from 23 to 112 GiB, depending on how you define "full."


    I've come up with a simple set of package exclusion rules that results in a much smaller installation:

    1. Skip all of the -debuginfo packages. Few people need these, and they take up a lot of space. Savings: about 53 GiB in the installation tree alone; more in the download tree.

      It's easy to apply this rule. After selecting all packages for installation with the sneaky trick above but before you move on to the next screen, click the "Install" text next to the "Debug" category header until it switches back to "Default."

      If you've already installed the debug packages, click that text until it says "Uninstall" instead.

    2. Do not explicitly install any of the lib* packages. Let Cygwin's setup-*.exe automatically install libraries to satisfy package dependencies. Savings: about 5 GiB ⁵

      To apply this rule, switch the "Libs" category to "Default" or "Uninstall" as you did with the "Debug" category. The installer will figure out which libraries you actually need in a later step.

    3. Skip the cross-compilers and associated packages. Again, few people need these.⁶ Savings: About 4 GiB

      There are two major sets of cross-development tools in Cygwin: the set for creating Cygwin executables of the other word size (i.e. 64-bit tools and libraries for 32-bit Cygwin, or vice versa) and the set for building MinGW executables of the same word size as your Cygwin installation.

      To apply this rule for a 64-bit Cygwin installation, while still on the "Select Packages" screen, type cygwin32- in the package name search box at the top of that screen, then click the Default text next to each top-level category until it cycles to Default or Uninstall, as above.

      Repeat that for mingw64-.

      The idea is the same for 32-bit Cygwin, except that you search for and exclude packages with cygwin64- and mingw32- in their names instead.

    By following this rule set, I was able to install nearly everything, taking only about 23 GiB.


    We can get the installation to be even smaller by excluding several other notorious disk hogs:

    • X11, the desktop environments, and the GUI apps together require about 11 GiB.⁷
    • A Cygwin Base + Devel installation comes to about 10 GiB.
    • A Cygwin Base + TeX category installation takes about 5 GiB. If you install only your native language's support package, it comes to about 3.7 GiB instead.
    • All of the -doc packages combined chew up about 5 GiB of disk space.

    You really should read the original post if you intend to install Cygwin, it's extraordinarily detailed. Hats off to Mr. Young for the hands-down best answer I have ever seen posted to Stack Overflow.

Additional Links

Untested Software Recommended by Others

How to Install screen on RHEL/CentOS 8

screen was included in the default repositories distributed with RHEL/CentOS 7 and earlier. Since RHEL/CentOS 8 it is now necessary to configure the Extra Packages for Enterprise Linux (EPEL) repos, which you're probably going to need eventually anyway.

dnf install epel-release

Now you can install screen as usual:

dnf install screen

Basic NFS Server and Client on RHEL/CentOS, Debian/Ubuntu and Derivatives


Install the NFS utilities, start and configure the service to run automatically on boot:

dnf install nfs-utils nfs4-acl-tools systemctl enable nfs-server.service systemctl start nfs-server.service

To configure firewalld to permit network access to the NFS services run:
firewall-cmd --permanent --add-service=nfs firewall-cmd --permanent --add-service=rpc-bind firewall-cmd --permanent --add-service=mountd firewall-cmd --reload

apt install nfs-kernel-server rpcbind systemctl enable nfs-kernel-server systemctl start nfs-kernel-server

To configure ufw to permit network access to the NFS services run:
ufw allow from to any port nfs ufw enable

Configuration files are located at /etc/nfs.conf and /etc/nfsmount.conf.

Create or edit /etc/exports:
/mnt/share1 /mnt/share2,async) /mnt/share3,sync) /mnt/share4,sync,no_all_squash,root_squash)

Specify the single IP address or range in CIDR notation that a share should be accessible to followed by its options in (brackets).

See man exports for detailed information about per-share configuration options.

To reload the exports configuration live, run:
exportfs -ar

To configure disk quotas please see Mass Virtual Hosting Part Three: Disk Quotas (including NFS).


dnf install nfs-utils nfs4-acl-tools

apt install nfs-common

To view the exported shares on the remote server:
showmount -e

To mount a remote share:
mount -t nfs /mnt/shared

To add a remote share to fstab (automatically mount at boot, simplified mount /mountpoint): /mnt/shared nfs defaults 0 0

Basic Network Interface Confguration with NetworkManager via nmcli


I have always favoured directly editing network configuration flat files (e.g: /etc/sysconfig/network-scripts/ifcfg-ifname on RedHat flavours). However it has for some time been more ideologically correct to manage the network configuration on many distributions via the NetworkManager daemon. More importantly, it is intrusive and obnoxious and annoying to disable such that it does not interfere with manual configurations (lookin' at you, Ubuntu). So this is my attempt to find religion.

Unless there is good reason I don't do GUIs on servers. nmcli is provided to interface with NetworkManager from the command line. It can be used in CLI (direct) or shell (interactive) mode, as root/via sudo:


nmcli connection modify eth0 IPv4.address nmcli connection modify eth0 IPv4.gateway nmcli connection modify eth0 IPv4.dns,, nmcli connection modify eth0 IPv4.method manual

To effect the changes you must raise or reload the interface, using nmcli:
nmcli connection up eth0
or on RedHat flavours simply:
ifup eth0

Note the following:

  • The interface's address is specified in CIDR notation (i.e. including the netmask)
  • Arrays of multiple addresses are defined as comma-delimited lists (e.g: IP1,IP2,IP3). Take care to not include spaces.

The IPv4.method property can be set to any one of: disabled, auto (dhcp), manual or link-local. For a complete list of IPv4 configuration options please see https://developer.gnome.org/NetworkManager/stable/settings-ipv4.html.

IPv6 is configured in the same way; see https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html for IPv6 configuration options and modify your syntax accordingly.


As root/via sudo:
nmcli connection edit eth0 ===| nmcli interactive connection editor |=== Editing existing '802-3-ethernet' connection: 'eth0' Type 'help' or '?' for available commands. Type 'print' to show all the connection properties. Type 'describe [.]' for detailed property descrIPtion. You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, IPv4, IPv6, tc, proxy nmcli> set IPv4.address nmcli> set IPv4.gateway nmcli> set IPv4.dns,, nmcli> set IPv4.method manual nmcli> save Connection 'eth0' successfully updated. nmcli> quit

Again the connection must either be reloaded or raised to take effect:
nmcli connection up eth0 or ifup eth0