Text-based user interfaces (TUI) (alternately terminal user interfaces) describes a type of user interface common as an early form of human–computer interaction.
This article selects 100 TUI apps that largely reflects software our volunteers use as their daily drivers. We try to select as wide a mix as possible. Therefore you won’t find lots of repetition which helps to avoid perennial arguments such as Emacs vs Vim.
Here are a few reasons why we love TUI apps:
- Tend to be fast and lightweight which is very useful on low spec machines;
- Often oriented for keyboard use which can improve workflow;
- Much easier to write and maintain compared to GUI apps.
All of the TUI apps run on Linux. Many run under macOS. Some run natively on Windows. Note, we only indicate that macOS / Windows are supported if it’s clear the app runs on them natively. The vast majority of the apps will run under the Windows Subsystem for Linux (WSL).
Let’s kick off the 100 great apps chosen by our volunteers.
NeoMutt is a small but extremely powerful text based program for reading and sending electronic mail under Unix operating systems, including support for color terminals, MIME, OpenPGP, and a threaded sorting mode.
Neomutt is where all the good patches against Must end up.
We decided to skirt round the usual debate of Vim or Emacs by plumping for an entirely different text editor. Helix has Vim-like modal editing, supports multiple selections and offers built-in language server support. We think it’s the bees knees!
musikcube is a fully functional terminal-based music player, library, and streaming audio server.
It’s lean, looks beautiful, offers a good range of features including the essential gapless playback. We can’t extol its virtues enough.
lazydocker is a simple interface for both docker and docker-compose. lazydocker aims to let you keep track of your containers in one terminal window with every common command just one keypress away.
btop++ is an alternative to top. It’s a resource monitor that shows usage and stats for processor, memory, disks, network and processes. One of the strengths of the software is the huge array of customization options.
btop++ is a sublime utility. It’s fast, easy to use responsive, highly customizable, and presents the system resources in a logical and well-thought out way. The interface is a work of art.
lazygit is a simple terminal UI for git commands.
nnn (n³) is a full-featured terminal file manager. It’s tiny, nearly 0-config and incredibly fast.
It is designed to be unobtrusive with smart workflows to match the trains of thought. nnn can analyze disk usage, batch rename, launch apps and pick files. The plugin repository has tons of plugins to extend the capabilities further.
OpenBB provides a modern Python-based integrated environment for financial investment research. It aims to provide a comprehensive tool to help make better investment decisions. This terminal-based tool is free and open source software written in Python.
This is an excellent tool for making smart investment decisions. It pulls information from a wide range of sources and applies data science and machine learning technologies. Its charting functionality needs considerable refinement though in some areas.
Newsboat is a wonderful, open source RSS reader. It’s lean, compact, super fast, endowed with a good feature set, and a worthy continuation of the Newsbeuter project. The software is extremely configurable and offers a great feature set without any bloat.
Zellij is billed as “a workspace aimed at developers, ops-oriented people and anyone who loves the terminal”. While Zellij is a terminal multiplexer at heart, it offers a lot more.
It has tons of great UI features including intelligent layout adjustments. We love that the mode invocations are a sequence of keystrokes. There are many built-in features which make the software highly extensible too.
nb is a command line and local web note‑taking, powerful bookmarking, archiving, and knowledge base application.
nb creates notes in text-based formats like Markdown, Org, LaTeX, and AsciiDoc, can work with files in any format, can import and export notes to many document formats, and can create private, password-protected encrypted notes and bookmarks.
Website // GNU Affero General Public License v3.0 // Written in Shell
ctop provides a concise and condensed overview of real-time metrics for multiple containers. It’s like top but for container metrics.
There’s built-in support for Docker and runC.
gping is ping but with the output displayed in a graph. Graph the ping time for multiple hosts, and the execution time for commands via the –cmd flag.
delta is a superb language syntax-highlighting pager for git, diff, and grep output. It’s jam-packed with cool features such as within-line insertion/deletion detection based on a Levenshtein edit inference algorithm.
Make extensive changes to the layout and styling of diffs, as well as allowing you to stay arbitrarily close to the default git/diff output.
cointop is a fast and lightweight application for tracking and monitoring cryptocurrency coin stats in real-time.
Simple, fast, and a great tool to constantly monitor a cryptocurrency portfolio. It works on really low powered computers such as the Raspberry Pi Zero.
There’s fast pagination, 256-color support, and auto-refresh functionality with data polled once a minute (this can be changed in the config file, or from the command-line). There’s options to hide the chart view, top marketbar, and the bottom statusbar. You can also only show the table.
kmon is a tool to help you manage the Linux kernel modules and monitor the kernel activities. With this tool, you can load, unload, and blacklist modules, as well as show a module’s information.
kmon is a big time-saver if you frequently need to load/unload/blacklist kernel modules. All of the actions it performs can, of course, be executed outside of kmon. kmon relies on a variety of tools to display information and perform actions. For example, modprobe or insmod/rmmod is used for loading or unloading a kernel module. To print the message buffer of the kernel kmon relies on dmesg (diagnostic messages).
Clonezilla is an extremely useful suite of drive cloning, drive imaging and system deployment utilities used to simplify deployment and maintenance of a group of computers. It’s similar to True Image and Norton Ghost.
Website // GNU General Public License v2.0 // Written in Shell
Ncdu is a disk usage analyzer with an ncurses interface. It is designed to find space hogs on a remote server where you don’t have an entire graphical setup available, but it is a useful tool even on regular desktop systems.
We really like PyRadio. The developer has spent a lot of effort in fine-tuning the software. The implementation of Radio Browser is very impressive. Great work!
As you might guess from its name, slack-term is a Slack client for the terminal.
While Slack was developed for professional and organizational communications, it has also been adopted as a community platform.
K9s provides a terminal UI to interact with Kubernetes clusters. The aim of this project is to make it easier to navigate, observe and manage your applications in the wild. K9s continually watches Kubernetes for changes and offers subsequent commands to interact with your observed resources.
pspg is a pager (with very rich functionality) designed for work with tables. The tool is designed for PostgreSQL, but MySQL is supported too.
It supports searching, selecting rows, columns, or block and export selected area to clipboard.
Textual is a Rapid Application Development framework for Python inspured by modern web development.
Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and (coming soon) a web browser! It’s spawned so many useful projects, it’s definitely worthy of inclusion in this roundup.
WTF (also known as ‘wtfutil’) is billed as “the personal information dashboard for your terminal”. The idea is that you’ve got easy access to important but infrequently-needed stats and data.
so is a handy interface for StackOverflow, a Q&A platform that over 100 million people visit every month to ask questions, learn, and share technical knowledge.
Termshark is a terminal user-interface for tshark, inspired by Wireshark. It can read pcap files or sniff live interfaces
tmux is a “terminal multiplexer”. This application enables a number of terminals (or windows) to be created, accessed and controlled from a single screen.
up stands for Ultimate Plumber. It’s a tool for writing Linux pipes in a terminal-based UI interactively, with instant live preview of command results.
It makes it easier to quickly build complex pipelines, thanks to a fast feedback loop. This is achieved by boosting any typical Linux text-processing utils such as grep, sort, cut, paste, awk, wc, perl, etc., etc., by providing a quick, interactive, scrollable preview of their results.
Bubble Tea offers a fun, functional and stateful way to build terminal apps.
It includes a standard framerate-based renderer, a renderer for high-performance scrollable regions which works alongside the main renderer, and mouse support.
Ventoy is a utility used for writing image files such as .iso, .wim, .img, .vhd(x), and .efi files onto storage media to create bootable USB flash drives.
VisiData is an interactive multitool for tabular data. It combines the clarity of a spreadsheet, the efficiency of the terminal, and the power of Python, into a lightweight utility which can handle millions of rows with ease.
VisiData supports tsv, csv, sqlite, json, xlsx (Excel), hdf5, and many other formats.
WeeChat (Wee Enhanced Environment for Chat) is a fast and light IRC client for many operating systems. Everything can be done using a keyboard. The software is very light on system resources and brings innovative features.
Nvtop stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Intel and NVIDIA GPUs. It can handle multiple GPUs and print information about them in a htop familiar way.
wuzz is an interactive tool for HTTP inspection.
Think cat, think Markdown and you’re set. mdcat renders the basic CommonMark syntax and highlights code blocks.
If you’re looking for a console based music player and use MPD, ncmpcpp comes with our highest recommendation. It’s not as feature laden as some MPD clients, but there’s more than sufficient functionality for most music lovers.
lnav is a curses-based utility for viewing and analyzing log files. The software is designed to extract useful information from log files, making it easy to perform advanced queries. Think of lnav as an enhanced log file viewer.
Need slides in your terminal. Slides is the app for you.
procs is a replacement for ps offering colored and human-readable output, multi-column keyword search, and pager support.
patat (Presentations Atop The ANSI Terminal) is a small tool that allows you to show presentations using only an ANSI terminal.
It does not need ncurses.
MapSCII is a Node.js based Vector Tile to Braille and ASCII renderer for xterm-compatible terminals. It’s billed as the whole world in your console.
Vector Tiles are similar to raster tiles, but instead of raster images, the data returned is a vector representation of the features in the tile. MapSCII uses OpenStreetMap for its map data.
Matterhorn is a client for the Mattermost chat system. It offers the same basic feature set as the web client.
UnNetHack is a fork of NetHack, originally based on the hugely popular roguelike game NetHack. NetHack was first released in 1987, and is considered by many gamers to be one of the best gaming experiences the computing world offers.
Lip Gloss is designed to make assembling terminal user interface views as simple and fun as possible so that you can focus on building your application instead of concerning yourself with low-level layout details.
hledger is a lightweight, multi-currency, double-entry accounting software. It lets you track money, investments, cryptocurrencies, invoices, time, inventory and more, in a safe, future-proof plain text data format with full version control and privacy.
castero is a capable podcast player.
It supports importing and exporting an OPML file of your subscriptions in order to easily transfer them between other podcast clients.
gpg-tui is a Terminal User Interface for GnuPG.
It aims to ease the key management operations such as listing/exporting/signing by providing an interface along with the command-line fallback for more complex operations. It is not trying to be a full-fledged interface for all the features that gpg provides but it tries to bring a more interactive approach to key management.
gobang is a database management tool.
dive is a handy tool for exploring a docker image, layer contents, and discovering ways to shrink the size of your Docker/OCI image.
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal on *nix systems or through your browser. It provides fast and valuable HTTP statistics for system administrators that require a visual server report on the fly.
GitUI provides you with the comfort of a git GUI but right in your terminal.
dua-cli is a tool to conveniently learn about the usage of disk space of a given directory. It’s parallel by default and will max out your SSD, providing relevant information as fast as possible. Optionally delete superfluous data, and do so more quickly than rm.
calcurse is a text-based calendar and scheduling application. The software keeps track of events, appointments and everyday tasks.
The software is lightweight, fast and reliable. It’s designed for the console or terminal, locally or on a remote machine.
feh is a mode-based image viewer and cataloger. It is especially aimed at command line users who need a fast image viewer without huge graphical user interface dependencies
GDB dashboard is a standalone .gdbinit file written using the Python API that enables a modular interface showing relevant information about the program being debugged. Its main goal is to reduce the number of GDB commands needed to inspect the status of current program thus allowing the developer to primarily focus on the control flow.
Are you looking for a simple tool that lets you search for fonts and preview them with no fuss and bother? fontpreview might just be the ticket.
fontpreview is a useful utility to quickly search and preview fonts installed on your system. Don’t think of shell scripts as mundane and boring. This one combines power, flexibility, and isn’t tied to any specific desktop environment. Using fuzzy searches is a real blessing as it lets you find desired fonts even if they have odd names.
Euporie is a terminal based interactive computing environment for Jupyter.
Euporie’s apps allow you to interact with Jupyter kernels, and run Jupyter notebooks – entirely from the terminal.
bandwhich displays current network utilization by process, connection and remote IP/hostname. It sniffs a given network interface and records IP packet size, cross referencing it with the /proc filesystem on linux, lsof on macOS, or using WinApi on windows.
epr is a rather splendid Epub reader. There’s also a fork of epr called epy which adds some extra features.
Dockly is an immersive terminal interface for managing docker containers, services and images.
Surfing the web over a text terminal is ideally performed with a GUI. But there are still circumstances where this is not possible. Browsh is a fully-modern text-based browser. It renders anything that a modern browser can; HTML5, CSS3, JS, video and even WebGL.
ali is a load testing tool capable of performing real-time analysis. It comes with an embedded terminal-based UI where you can plot the metrics in real-time. Perform real-time analysis on the terminal.
Mind maps are perfectly suited for planning projects at a low level. They help you structure your thoughts and ideas with clarity.
If you’re looking for a terminal-based mind mapping tool, h-m-m is the best open source tool we’ve found.
PathPicker is a simple tool that solves the perpetual problem of selecting files out of bash output.
PuDB is a visual debugger for Python offering all the niceties of modern GUI-based debuggers in a more lightweight and keyboard-friendly package. yntax-highlighted source, the stack, breakpoints and variables are all visible at once and continuously updated.
viddy is a modern watch command, which executes a program periodically.
ticker is simple software that lets you track stocks, currencies, cryptocurrencies, commodities and indexes. If you’re looking for a TUI application to monitor your stock portfolio, ticker must just be the ticket.
Gomuks is a terminal Matrix client.
Matrix is an open standard for interoperable, decentralised, real-time communication over IP. It can be used to power Instant Messaging, VoIP/WebRTC signalling, Internet of Things communication – or anywhere you need a standard HTTP API for publishing and subscribing to data whilst tracking the conversation history.
Redo is a tool to easily create reusable functions in your own shell. Think of redo like an interactive way to combine multiple commands from your shell history in a single command.
YouPlot is a tool that draws plots on the terminal.
We’re lightweight in games in this roundup. Let’s rectify that.
GNU Chess is a chess-playing program. It can be used to play chess against the computer on a terminal or, more commonly, as a chess engine for graphical chess frontends.
One way of keeping alert regarding your financial position is to use a stock ticker. This is software that provides live updates of stock prices and enables you to easily monitor your investments.
tickrs is a stock ticker which is well written, extremely frugal with resources, and offers a good range of features.
Profanity is a console based XMPP client written in C using ncurses and libstrophe, inspired by Irssi.
wego displays the weather in a variety of visually attractive ways. It’s a lightweight way to keep an eye on the weather without requiring a web browser. The information is SSL-encrypted for transmission to the local computer.
Toot is a command-line interface and terminal user interface tool for interacting with Mastodon instances.
The software has the following dependencies: requests, beautifulsoup, wcwidth, and urwid.
PTerm is a modern module to easily beautify console output. It features charts, progressbars, tables, trees, text input, select menus and much more. It’s completely configurable.
termdbms lets you view and edit databases. It’s built with modernc.org/sqlite, charmbracelet/bubbletea, and charmbracelet/lipgloss.
If you want to listen to Spotify at the command-line, Spotify TUI gets our recommendation even though it’s lacking a few features we’d like. The client is very frugal with system resources, it offers most of the essential features you get from the semi-official Spotify client without all the fluff.
Surfing the next with a text-based web browser is not going to be useful for the vast majority. But if you need one, w3m is our pick. It’s also a pager like ‘more’ or ‘less’. w3m is an abbreviation of “WWW-wo-Miru”, which is Japanese for “See the WWW”.
tg is a Telegram client with a good range of features.
pulsemixer is a simple but useful mixer for PulseAudio, a network-capable sound server.
hwatch is an alternative watch command. The tool records the result of command execution and can display it history and diffs.
IPTraf-ng is a console-based network monitoring program that displays information about IP traffic.
Termtyper is a typing application to level up your fingers! You’ll like the mechanical sounds.
hackernews_tui is a fast and customizable application for browsing Hacker News on the terminal.
grep is a useful command to search for matching patterns in a file. If you are a system admin who needs to scrape through log files or a developer trying to find matches in a code file, grep is a powerful command to use.
ugrep builds on the awesomeness of grep. It won a Google OSPB 2022 award. Enough said!
GEF is a set of commands for x86/64, ARM, MIPS, PowerPC and SPARC to assist exploit developers and reverse-engineers when using old school GDB.
NoteSH is a sticky notes app built with Textual. It supports layers, lets you resize notes, and even resize the background.
clipmenu is a simple clipboard manager using dmenu (or rofi) and xsel.
This is a tiny tool (under 300 lines of code for clipmenud and under 100 for clipmenu) but has a few useful features.
httm is an interactive, file-level Time Machine-like tool for ZFS/BTRFS/NILFS2.
The tool can be used interactively to select and restore files, as well as snapshot mounts by file.
DHEX is a hex editor. Its distinguishing feature is the diff mode: With this mode, the user has a visual tool for file comparison. This mode is invoked when DHEX is called with two instead of one file as parameters.
neoss is a replacement for the ss command, a utility to investigate sockets.
It provides a list of in-use TCP and UDP sockets with their respective statistics. Its main advantage over ss raw output is a clear and simple Terminal User Interface which allows you to sort, refresh and navigate through results.
twitch-tui is a Terminal User Interface for reading and interacting with Twitch chat users. It’s best used in conjunction with streamlink (a CLI tool which pipes video streams from various services into a video player).
kabmat is software for managing kanban boards with vim-like keybindings. A kanban board is an agile project management tool designed to help visualize work, limit work-in-progress, and maximize efficiency (or flow).
reader is for your command line what the “readability” view is for modern browsers: A lightweight tool offering better readability of web pages on the CLI.
Devzat is a custom SSH server that takes you to a chat instead of a shell prompt.
ugm is a useful tool for system administration. It lets you view information about users and groups.
systeroid is an improved sysctl, a utility on Unix-like operating systems that is used to read and modify the attributes of the kernel such as its version number, maximum limits, and security settings*
Nomad Network offers encrypted messaging over packet-radio, LoRa, WiFi, and more.