The Best TUI Apps for Linux Developers (2026)

If you spend any real time in a terminal, TUI apps are worth knowing. Not raw CLI commands – you know those. Something in between: apps that stay open, respond to keypresses, have panels and navigation, and often do the job better than a GUI would on the same task. No Electron overhead, no browser tab to switch to.

The ecosystem is much bigger than most people realise. The usual recommendations – btop, lazygit, k9s – are genuinely good. But there’s a whole layer of lesser-known tools that are equally useful and rarely get mentioned. This guide covers both.

LibraryWhat it doesInstall
btopCPU, memory, disk, network – all in one screenapt install btop
belowRecords system state so you can replay the pastdnf install below
GlancesBroad metrics + exports to InfluxDB / Prometheuspip install glances
yaziFast Rust-based, 3-column layout, image previewscargo install yazi-fm
superfileModern UI, sidebar, plugin systembrew install superfile
vifmTwo-pane, full vim keybindingsapt install vifm
lazygitVisual staging, branch management, interactive rebasebrew install lazygit
gituiLeaner Rust alternative to lazygitcargo install gitui
oxkerSingle-screen Docker manager, ARM supportcargo install oxker
lazydockerFull Docker management, panel-basedbrew install lazydocker
k9sReal-time cluster TUI, multi-contextbrew install k9s
gumInteractive prompts, menus, spinners for bash scriptsbrew install gum
gurkSignal messenger client in the terminalcargo install gurk-rs
caliguladd replacement – disk picker, progress bar, verifycargo install caligula
sc-imVim-based terminal spreadsheet, CSV/XLSX supportapt install sc-im
GopherTubeYouTube browser and player via mpvgo install ...@latest
durdrawASCII/ANSI animation editor, GIF exportpip install durdraw
browshFull modern browser rendered in terminal (via Firefox)brew install browsh
PostingHTTP client TUI -like Postman in the terminalpip install posting
fxInteractive JSON navigator with JS transformsnpm install -g fx
zellijTerminal multiplexer with visible keybindingscargo install zellij
ncduDisk usage – find what’s eating space fastapt install ncdu
goaccessReal-time Nginx/Apache log analyzerapt install goaccess
chess-tuiChess vs Stockfish in the terminalcargo install chess-tui

System Monitoring

btop – The Visual System Monitor

btop rebuilds top from scratch. One screen: CPU load, per-core utilisation, memory, disk I/O, network traffic, and running processes – with graphs drawn from Unicode block characters. In-app config menu, multiple themes, toggleable panels.

On a server you’re SSH’d into, it replaces four separate commands with one view.

sudo apt install btop # Debian/Ubuntu brew install btop # macOS

below – Time-Traveling Resource Monitor (from Meta)

below is the most interesting system monitor on this list and easily the least known. Built by Meta’s infrastructure team, its headline feature is time travel: it records system state continuously and lets you replay the past. See a CPU spike 20 minutes ago? Scrub back to that exact moment and inspect process-level details, just like rewinding video.
It covers cgroups, per-process CPU, memory, disk, and network – with a TUI that’s more structured than btop but takes a few minutes to learn.

Advertisements
sudo dnf install below # Start the recording daemon first 
sudo systemctl start below # Then launch the TUI 
sudo below replay # Or live view sudo below live

If you manage production Linux systems and have ever wished you could look back at what happened right before something broke, this is the tool for that. Nothing else does it at this level.

Platform: Linux only (by design – it integrates deeply with the Linux kernel cgroup system)

Glances – System Monitor With Export Support

Glances monitors CPU, memory, disk, network, sensors, and Docker containers from one screen. The --export flag streams metrics to InfluxDB, Prometheus, or Elasticsearch – useful if you’re building a monitoring pipeline and want a lightweight source.

It also runs as a web server (glances -w) so you can check stats from a browser without installing a dashboard.

pip install glances

File Managers

yazi – Fast File Manager in Rust

Three-column layout: parent / current / preview. Handles large directories without lag, shows syntax-highlighted code and image thumbnails in supported terminals (Kitty, WezTerm, iTerm2), TOML config, fuzzy search. Built on async I/O so it doesn’t freeze.

Advertisements
cargo install yazi-fm

If you tried ranger and found it slow, yazi is worth trying. Speed difference is noticeable.


Superfile – Modern File Manager TUI

superfile is a newer terminal file manager that’s getting attention. The interface is cleaner than most: a sidebar of pinned directories, a main file panel, a metadata/preview pane, and a bottom status bar. It handles basic file operations, supports plugins, and has a theme system.

# macOS 
brew install superfile 
# Linux (via install script) 
bash -c "$(curl -fsSL https://superfile.netlify.app/install.sh)"

Where yazi is optimized for speed and Vim users, superfile feels more intentionally designed as an interface – less raw, more considered. It’s actively developed and the GitHub star count has climbed fast since mid-2024.

Vifm – For Vim Users

Two-pane layout, full vim keybindings throughout. / to search, : for commands, dd to cut, p to paste. Does the job without trying to be modern.

sudo apt install vifm

Git

lazygit – Visual Git Workflow

Stage individual lines, manage branches, handle stashes, run interactive rebase – all via keyboard shortcuts. The line-level staging is the feature most people keep using it for.

brew install lazygit go install github.com/jesseduffield/lazygit@latest
GitUI - Lean Rust Alternative

Same core workflow as lazygit, faster to start, no mouse support (useful over SSH). Covers diffs, staging, commit, branch switching, history. Missing interactive rebase but covers everything else.

cargo install gitui

Docker

Oxker – Clean Single-Screen Docker Manager

oxker is a Rust-based Docker TUI with a single-screen layout: containers, logs, CPU metrics, memory, and port mappings all on one view. No panel switching required. You can start, stop, pause, restart, and delete containers without leaving the TUI.

cargo install oxker 
# Or via Docker itself (mounts the socket) 
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro ghcr.io/mrjackwills/oxker

The practical advantage over lazydocker: everything is visible at a glance without navigating panels. Custom keymaps, theme config, sortable columns. It also runs on Raspberry Pi, which matters if you’re managing containers on ARM hardware.

lazydocker – Full Docker Management

From the lazygit developer. Containers, images, volumes, logs, exec – all keyboard-driven. More navigation-heavy than oxker but covers more operations.

brew install lazydocker

Kubernetes

k9s – The Standard Kubernetes TUI

Real-time cluster view, vim-style navigation, multiple kubeconfig contexts, pod logs, exec, resource management. If you’re on Kubernetes daily, this is already on your machine or should be.

brew install k9s

Shell Scripting

Gum – Interactive Prompts for Shell Scripts

gum is from the Charmbracelet team (same people behind glamourbubbletea, and lip gloss). It’s not a single app – it’s a toolkit for adding interactive UI elements to shell scripts: styled inputs, menus, confirmations, spinners, tables, and more.

# macOS / Linux brew install gum # Arch pacman -S gum

The use case: instead of read -p "Pick a branch: " in a script, you can use gum choose to render a navigable list. Instead of echo "Press enter to confirm", use gum confirm. The output is what you’d actually want to put in front of a user.

# Example: pick a git branch interactively 
BRANCH=$(git branch | gum choose) 
git checkout $BRANCH 
# Example: styled commit message 
git commit -m "$(gum input --placeholder 'Summary of changes')"

If you write bash scripts that other people actually use, gum is one of those tools that quietly improves a lot of things.

Messaging


Gurk – Signal Messenger in the Terminal

gurk is a TUI client for Signal. It’s written in Rust, uses the Signal protocol directly (via presage), and gives you a basic but functional messaging interface in the terminal: conversations list on the left, message thread on the right.

cargo install gurk-rs

It’s not a full replacement for the official Signal client – group calls, reactions, and some message types aren’t fully supported. But for text conversations on a machine where you don’t want to install Electron (the official Signal desktop client), it’s genuinely useful.

Worth knowing: Signal doesn’t officially support third-party clients. gurk works by re-using your linked device session. It’s been stable for regular use but you’re relying on unofficial protocol handling.

Disk Imaging

Caligula – A dd Replacement With a Brain

caligula does one thing: burn disk images to drives. But unlike dd, it shows you a list of attached disks to pick from (no more mistyping /dev/sda vs /dev/sdb), displays a progress bar with write speed, automatically handles compressed images (gz, bz2, xz, lz4, zst), and verifies the burn when done.

cargo install caligula 
# Arch 
pacman -S caligula 
# Homebrew (tap) 
brew tap philocalyst/tap && brew install caligula

The author built it specifically because “a certain other tool doing the same thing has ballooned to 413MB” – a jab at Balena Etcher. Caligula is a few MB.

caligula burn ubuntu-24.04.iso # Will ask you to select the target disk from a list

If you regularly flash Linux ISOs to USB drives, this is the TUI to have.

Advertisements


Spreadsheets

sc-im – Vim-Based Spreadsheet in the Terminal

sc-im is a terminal spreadsheet with vim-style navigation and commands. Visual mode, yank/paste, undo/redo, :wq to save – if you know vim, most of the muscle memory transfers. It supports CSV/XLSX import and export, cell formatting, and gnuplot integration for generating ASCII charts from your data.


# Debian/Ubuntu sudo apt install sc-im # macOS brew install sc-im

It’s not Excel. You won’t be doing pivot tables or complex macros here. But for quick data manipulation, cleaning up a CSV, or doing calculations on tabular data without opening a GUI app, it’s fast and the vim interface makes it surprisingly usable.

Media

GopherTube – YouTube Client in the Terminal

GopherTube is a terminal YouTube client. It searches YouTube, lists results in a TUI, and uses mpv to play videos. No browser, no tracking pixels, no autoplay sidebar. Just search, pick, watch.


go install github.com/krishnassh/gophertube@latest # Requires: mpv and yt-dlp installed

A few things to know: it uses scraping (not the official YouTube API), so it occasionally breaks when YouTube changes their markup. And you need mpv installed separately. But for people who watch YouTube from a terminal-heavy workflow and don’t want a browser open, it handles the basics.

Creative

Durdraw – ASCII/ANSI Animation Editor

durdraw is an ASCII and ANSI art editor that runs in a modern terminal. It supports frame-based animation with per-frame timing control, 256-color mode, Unicode characters, CP437 import (so you can load old MS-DOS ANSI artpacks), and export to HTML or animated GIF via ansilove.

pip install durdraw

It’s heavily inspired by TheDraw – the classic DOS ANSI editor – but updated for modern terminals and Unicode. The interface will feel familiar if you’ve ever used retro ANSI editors, but it runs on Linux and macOS today.

Not a tool for most workflows, but if you’re into terminal aesthetics, retro computing, BBS culture, or just want to make something visually interesting in a terminal, durdraw is the most capable option available.

Web Browsing

Browsh – Full Modern Browser in the Terminal

browsh is genuinely strange and genuinely impressive. It runs a headless Firefox instance, renders web pages including CSS and JavaScript, then converts the output to colored Unicode characters for display in a terminal. You get actual modern web pages – not a text-stripped version like Lynx or w3m gives you.

# Linux (download the binary from GitHub releases) 
# https://github.com/browsh-org/browsh/releases 
# macOS 
brew install browsh 
# Requires Firefox installed

Real-world use is limited: image rendering is approximate, video doesn’t work, and it’s slower than a real browser. But it has legitimate use cases – browsing on a headless server, keeping a browser session inside a terminal multiplexer, or low-bandwidth situations where you need to load a real page without a GUI desktop.

The fact that it works at all is impressive.

Developer Utilities

Posting -API Client in the Terminal

Think Postman but running entirely inside the terminal. Request builder, header editor, response viewer, collection saving. Written in Python using Textual.

pip install posting

fx – JSON Navigator

Navigate JSON with keyboard shortcuts, expand/collapse nodes, search. Supports inline JavaScript transforms via piping.

npm install -g fx

Zellij – Terminal Multiplexer With Lower Friction

Terminal multiplexer with a visible keybinding bar at the bottom so you’re not guessing. Panes, tabs, floating windows, KDL layout files. Better starting point than tmux if you’ve bounced off tmux’s config requirements.

cargo install --locked zellij brew install zellij

Other Useful Ones

  • ncdu – Disk usage analyzer. Run on a full server, find what’s eating space in under a minute.
  • goaccess – Real-time Nginx/Apache log analyzer. TUI dashboard or HTML export. Quick traffic stats without setting up a full analytics stack.
  • chess-tui – Chess in the terminal. Playable against an AI via Stockfish. One of those things that works better than it has any right to.
  • kabmat – Kanban board with vim keybindings. If you manage tasks in the terminal, this fits the workflow.

TUI vs CLI – Quick Clarification


CLI tool exits after you run it. A TUI stays open and responds to keypresses.


git log is CLI. lazygit is TUI.
docker ps is CLI. oxker or lazydocker is TUI.
dd is CLI. caligula is TUI.
signal-cli is CLI. gurk is TUI.


Both have their place. TUIs are better for navigating, monitoring, or working with something over time. CLI is better for scripting and automation.

Where to Find More

  • github.com/rothgar/awesome-tuis – Community-maintained, organized by category. The maintainer also made a YouTube video picking one standout tool from each section – which is what inspired this post
  • terminaltrove.com – Well-organized directory with regular updates
  • terminal-apps.dev – Clean interface, screenshots, GitHub links

Where to Start


btop takes 30 seconds to install and is immediately useful on any machine. From there: lazygit if you use git daily, oxker or lazydocker if you work with Docker, gum if you write shell scripts that people actually run, and below if you manage production Linux servers and have ever needed to look back at what caused a problem.


The lesser-known tools – caligulasc-imgurkdurdrawbrowshsuperfile – are worth knowing exist even if you don’t install them today. The next time you’re about to flash an ISO with dd or open Excel for a CSV edit, you’ll remember one of them.



Something missing from this list? Drop a comment – especially for less-known tools worth adding.

Share on:

Amit Yadav

twitter facebook

Amit loves new tech and apps that make life easier, he writes about apps, games and useful websites on Tech Basket.

More to Read from Linux

Let's Be Friends 🤘