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.
If you want best-of-breed GUI (Graphical User Interface) software, these are covered separately. And CLI tools are explored here.
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
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.
Website // GNU General Public License v2.0 // Written in C
Helix
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!
Website // Mozilla Public License 2.0 // Written in Rust
musikcube
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.
Website // BSD License // Written in C++
lazydocker
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.
Website // MIT License // Written in Go
btop++
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.
Website // Apache License 2.0 // Written in C++
lazygit
lazygit is a simple terminal UI for git commands.
Website // MIT License // Written in Go
nnn
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.
Website // BSD 2-Clause “Simplified” License // Written in C
OpenBB
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.
Website // MIT License // Written in Python
Newsboat
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.
Website // MIT License // Written in C++
Zellij
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.
Website // MIT License // Written in Rust
nb
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
fx
fx is a sublime JavaScript Object Notation (JSON) viewer. There’s support for streaming and for the mouse.
JSON is a standard text-based format for representing structured data based on JavaScript object syntax. It is commonly used for transmitting data in web applications (e.g., sending some data from the server to the client, so it can be displayed on a web page, or vice versa).
Website // MIT License // Written in Go
cTop
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.
Website // MIT License // Written in Go
gping
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.
Website // MIT License // Written in Rust
delta
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.
Website // MIT License // Written in Rust
cointop
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.
Website // Apache License 2.0 // Written in Go
kmon
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).
Website // GNU General Public License v3.0 // Written in Rust
Clonezilla
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
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.
Website // MIT License // Written in C
PyRadio
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!
Website // MIT License // Written in Python
slack-term
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.
Website // MIT License // Written in Go
K9s
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.
Website // Apache License 2.0 // Written in Go
pspg
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.
Website // BSD 2-Clause “Simplified” License // Written in C
Textual
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.
Website // MIT License // Written in Python
WTF
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.
Website // Mozilla Public License 2.0 // Written in Go
so
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.
Website // MIT License // Written in Rust
Termshark
Termshark is a terminal user-interface for tshark, inspired by Wireshark. It can read pcap files or sniff live interfaces
Website // MIT License // Written in Go
tmux
tmux is a “terminal multiplexer”. This application enables a number of terminals (or windows) to be created, accessed and controlled from a single screen.
Website // ISC License // Written in C
up
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.
Website // Apache License 2.0 // Written in Go
Bubble Tea
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.
Website // MIT License // Written in Go
Ventoy
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.
Website // GNU General Public License v3.0 // Written in C
VisiData
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.
Website // GNU General Public License v3.0 // Written in Python
WeeChat
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.
Website // GNU General Public License v3.0 // Written in C
NVTOP
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.
Website // GNU General Public License v3.0 // Written in C
wuzz
wuzz is an interactive tool for HTTP inspection.
Website // GNU Affero General Public License v3.0 // Written in Go
mdcat
Think cat, think Markdown and you’re set. mdcat renders the basic CommonMark syntax and highlights code blocks.
Website // Mozilla Public License 2.0 // Written in Rust
ncmpcpp
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.
Website // GNU General Public License v2.0 // Written in C++
lnav
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.
Website // BSD 2-Clause “Simplified” License // Written in C++
Slides
Need slides in your terminal. Slides is the app for you.
Website // MIT License // Written in Go
procs
procs is a replacement for ps offering colored and human-readable output, multi-column keyword search, and pager support.
Website // MIT License // Written in Rust
patat
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.
Website // GNU General Public License v2.0 // Written in Haskell
MapSCII
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.
Website // MIT License // Written in JavaScript
Matterhorn
Matterhorn is a client for the Mattermost chat system. It offers the same basic feature set as the web client.
Website // BSD 3-Clause “New” or “Revised” License // Written in Haskell
UnNetHack
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.
Website // Nethack GPL // Written in C
Lip Gloss
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.
Website // MIT License // Written in Go
hledger
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.
Website // GNU General Public License v3.0 // Written in Haskell
castero
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.
Website // MIT License // Written in Python
gpg-tui
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.
Website // MIT License // Written in Rust
gobang
gobang is a database management tool.
Website // MIT License // Written in Rust
dive
dive is a handy tool for exploring a docker image, layer contents, and discovering ways to shrink the size of your Docker/OCI image.
Website // MIT License // Written in Go
GoAccess
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.
Website // MIT License // Written in C
GitUI
GitUI provides you with the comfort of a git GUI but right in your terminal.
Website // MIT License // Written in Rust
dua-cli
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.
Website // MIT License // Written in Rust
calcurse
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.
Website // BSD License // Written in C
feh
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
Website // MIT License (variant) // Written in C
GDB dashboard
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.
Website // MIT License // Written in Python
fontpreview
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.
Website // MIT License // Written in Bash
Euporie
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.
Website // MIT License // Written in Python
bandwhich
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.
Website // MIT License // Written in Rust
epr
epr is a rather splendid Epub reader. There’s also a fork of epr called epy which adds some extra features.
Website // MIT License // Written in Python
Dockly
Dockly is an immersive terminal interface for managing docker containers, services and images.
Website // MIT License // Written in JavaScript
Browsh
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.
Website // GNU Lesser General Public License v2.1 // Written in JavaScript and Go
ali
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.
Website // MIT License // Written in Go
h-m-m
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.
Website // GNU General Public License v3.0 // Written in PHP
PathPicker
PathPicker is a simple tool that solves the perpetual problem of selecting files out of bash output.
Website // MIT License // Written in Python
PuDB
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.
Website // MIT/X Consortium License // Written in Python
viddy
viddy is a modern watch command, which executes a program periodically.
Website // MIT License // Written in Go
Ticker
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.
Website // GNU General Public License v3.0 // Written in Go
gomuks
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.
Website // GNU Affero General Public License v3.0 // Written in Go
Redo
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.
Website // MIT License // Written in Go
YouPlot
YouPlot is a tool that draws plots on the terminal.
Website // MIT License // Written in Ruby
GNU Chess
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.
Website // GNU General Public License v3.0 // Written in C++
tickrs
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.
Website // MIT License // Written in Rust
Profanity
Profanity is a console based XMPP client written in C using ncurses and libstrophe, inspired by Irssi.
Website // GNU General Public License v3.0 // Written in C
wego
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.
Website // ISC License // Written in Go
Toot
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.
Website // GNU General Public License v3.0 // Written in Python
PTerm
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.
Website // MIT License // Written in Go
termdbms
termdbms lets you view and edit databases. It’s built with modernc.org/sqlite, charmbracelet/bubbletea, and charmbracelet/lipgloss.
Website // MIT License // Written in Go
Spotify TUI
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.
Website // MIT License // Written in Rust
w3m
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”.
Website // MIT License// Written in C
tg
tg is a Telegram client with a good range of features.
Website // Public Domain // Written in Python
pulsemixer
pulsemixer is a simple but useful mixer for PulseAudio, a network-capable sound server.
Website // MIT License // Written in Python
hwatch
hwatch is an alternative watch command. The tool records the result of command execution and can display it history and diffs.
Website // MIT License // Written in Rust
IPTraf-ng
IPTraf-ng is a console-based network monitoring program that displays information about IP traffic.
Website // GNU General Public License v2.0 // Written in C
Termtyper
Termtyper is a typing application to level up your fingers! You’ll like the mechanical sounds.
Website // MIT License // Written in Python
hackernews-TUI
hackernews_tui is a fast and customizable application for browsing Hacker News on the terminal.
Website // MIT License // Written in Rust
ugrep
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!
Website // BSD 3-Clause “New” or “Revised” License // Written in C++
GEF
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.
Website // MIT License // Written in Python
NoteSH
NoteSH is a sticky notes app built with Textual. It supports layers, lets you resize notes, and even resize the background.
Website // MIT License // Written in Python
clipmenu
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.
Website // Public Domain // Written in Bash
httm
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.
Website // Mozilla Public License 2.0 // Written in Rust
DHEX
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.
Website // GNU General Public License v2.0 // Written in C
neoss
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.
Website // BSD 3-Clause “New” or “Revised” License // Written in TypeScript and JavaScript
twitch-tui
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).
Website // Apache License 2.0 // Written in Rust
kabmat
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).
Website // GNU General Public License v3.0 // Written in C++
reader
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.
Website // GNU General Public License v3.0 // Written in Go
Devzat
Devzat is a custom SSH server that takes you to a chat instead of a shell prompt.
Website // MIT License // Written in Go
ugm
ugm is a useful tool for system administration. It lets you view information about users and groups.
Website // MIT License // Written in Go
systeroid
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*
Website // Apache 2.0 License or MIT License // Written in Rust
Nomad Network
Nomad Network offers encrypted messaging over packet-radio, LoRa, WiFi, and more.
Website // GNU General Public License v3.0 // Written in Python
Wow, this will keep me busy over Easter
This article is fabulous, thank you very much. The micro editor is probably worthy to be mentioned
micro is my editor of choice, it’s marvellous.
Really amazing list! thanks so much!
best list forever
wow!
No mention of htop?
As the article explains, we try to select as wide a mix as possible. Therefore you won’t find lots of repetition.
We include btop++ in this article.
htop is featured in our roundup on alternatives to top. It’s just pipped by btop++
Hi Steve. That’s fair enough. Thanks for the clarification. 🙂
In your opinion
Of course Lilly.
Excellent list. I will recommend midnight commander (mc) as a file manager.