The PowerShell logo, licensed under the MIT license

TUI programs for Windows

Notes published the
5 - 6 minutes to read, 1127 words

On Linux-based systems, contrary to Windows, there is a huge amount of command line applications, and command line applications with an Text-base user interface (TUI).

On Windows systems, command-line applications are not used as much, and TUI programs are generally rare to encounter.

The main examples of TUI programs are file managers (like mc) and editors like vim, nano, and many others.

As a daily Windows user, I use cygwin a lot. It gives me a Unix-like environment (and Unix-like programs) that works in a Windows environment (contrary to WSL2 and a virtual machine).

Nevertheless, the integration is not perfect (although most limitations can circumvented) and one might prefer a non-cygwin solution that works out-of-the-box.

The biggest inconvenience of cygwin and similar solutions are handling paths (cygpath helps to convert between POSIX and Windows paths), some interaction between cygwin and non-cygwin applications, access to network drives, some specific resources like sound system, having different programs in PATH, and so on.

I got curious about "native" TUI programs there are for Windows, but was not able to find much.

By "native" I mean programs for which I do not need to install an environment like cygwin, even if internally such a program might ship its own Cygwin-like environment.

File (and archive) manager

There is mc, although support for Windows is suboptimal.

Otherwise, another open-source alternative is far, for which Windows is the first-class citizen.

far manager screenshot
Figure 1. far-manager, image licensed under BSD

Both file managers also have their internal command-line editor.

Editor

There are vi-based editors like neovim and vim, otherwise, there are ports of nano, micro and many other editors.

File viewer/Pagers

For viewing textual files, a text editor, a program like cat, bat or less are more than enough.

But for other file formats? Sometimes it is possible to convert them to text, and view the converted document, but for some formats specialized viewers can do a better job.

Resource manager

There is NTop, and btop.

btop seems to support more features, and for my use-cases to be more efficient, especially when the machine is under heavy workload.

btop screenshot
Figure 2. btop

source code management

There is tig, which is already bundled with git for Windows.

Yes, git comes with a Cygwin-like environment, but there are executables (git.exe and tig.exe) that can be used from cmd and powershell directly.

Disk usage analyzer

There is dua ( disk usage analyzer), which has the advantage of being available on multiple platforms, although it is not available in the official repositories of most Linux distributions.

dua screenshot
Figure 3. dua

Music player

musikcube is a command-line interactive music player that also works on Windows systems.

musikcube screenshot
Figure 4. musikcube

Mail client

Alpine seems to offer a native windows binary, while mutt and neomutt support Windows "only" through cygwin.

However, if you were looking for a mail client that supports the exchange protocoll…​ I’m afraid that there is only Outlook, or maybe this plugin for Thunderbird, but no TUI solutions.

Browser

The lynx browser also offers a Windows installer, but it does not seem to support https out of the box.

A possible alternative would be browsh, even if it requires Firefox.

Wishlist

I do not strictly need those programs, as I’ve never worked in a command-line-only Windows environment, like Windows Nano Server, and as I have always been able to install cygwin, but nevertheless, there are still many programs missing.

Even in a graphical environment, TUI programs have multiple advantages.

First, there is less context switching.

Second, TUI programs are generally programmed to be used with a keyboard. This means that complex action can be achieved by pressing a sequence of keys, which is generally much faster than moving the mouse on the screen (after gathering some experience).

Third, TUI programs are generally less bloated and consume fewer resources.

Terminal multiplexer

Something like tmux or screen 🗄️, especially when connecting to the Windows machine via ssh

Registry viewer and editor

It seems that far has a plugin for that, but I wish there would be something "standalone".

autoruns, taskschd.msc, and services.msc

autoruns 🗄️ has a command-line version (autorunsc), but it does not have a TUI.

Since there are myriads of ways of starting a program automatically, (and a myriad of programs are started automatically) autoruns is a must-have program for maintaining your system.

Similarly, I wish there would be something for the task scheduler, I would be more than happy to use an editor; for example with crontab, crontabe -e opens the editor for configuring it.

And there should be also something for managing services.

Windows firewall and Network manager

Something for managing the Windows Firewall (adding, inspecting, and removing firewall rules) and the network settings.

System-wide package manager

One can only dream.

Every half-decent Linux system has a package manager.

It is not only there for installing programs, but also for managing the system itself, updating, and removing components.

Imagine being able to write pkg update defender for upgrading Windows Defender, pkg install firefox for installing the latest packaged version of Firefox, and pkg remove lang-de for uninstalling the German language package, and all those operations are done consistently.

And not only that; if a program depends on another program or external library, the package manager would ensure that one version is installed, and track the dependency also during updates and removals.

No more wondering if you can remove some "Microsoft Visual C++ Redistributions".

There are some package managers, like winget 🗄️ and chocolatey but in my experience, they have a lot of inconsistencies, and they do not handle the operating system itself.

This is not science fiction; it can be done.

In fact all Linux and BSD systems I am aware of have a package manager that can do the described operations, and much more.

appget (not apt-get!) did a better job in providing some features, but it has been abandoned since winget from Microsoft appeared.

Last but not least, since this is a list of TUI programs, none of the mentioned programs has a TUI like, for example, aptitude.

Documentation

Something like man pages.

If there were something like a system-wide package manager, then having the documentation from the command line would be even more practical.

One central place where to find the documentation for Windows, cmd, PowerShell, and installed applications. The package manager for updating the available documentation too, just like on all Linux and BSD-based systems.

But even without a package manager, man pages can be organized manually, and thus would still be useful.


Do you want to share your opinion? Or is there an error, some parts that are not clear enough?

You can contact me anytime.