Skip to content

TUI Apps

Curated Terminal Experiences

A curated list of Terminal User Interface (TUI) applications that bring powerful, visually rich experiences to the terminal. These are tools I find genuinely useful or just plain cool.

Disk Usage

  • ncdu


    The classic interactive disk usage analyzer, navigate your filesystem and instantly see what's eating your space. An indispensable du replacement.

    Install:

    Install on Arch Linux
    pacman -S ncdu
    
    Install on Debian/Ubuntu
    apt install ncdu
    

    Usage:

    Analyze current directory
    ncdu
    
    Analyze a specific path
    ncdu /var
    

    Navigate with arrow keys, d to delete, q to quit.

    dev.yorhel.nl/ncdu

Editors

  • Helix


    A modern modal text editor written in Rust, inspired by Kakoune and Neovim. Built-in LSP and tree-sitter support out of the box, no plugins needed to get a great editing experience.

    Features:

    • Modal editing (normal/insert/select modes)
    • Built-in LSP support (autocompletion, diagnostics, go-to-definition)
    • Tree-sitter syntax highlighting for 150+ languages
    • Multiple cursors
    • No configuration required to get started

    Install:

    Install on Arch Linux
    pacman -S helix
    
    Install via Homebrew
    brew install helix
    

    Usage:

    Open a file
    hx file.txt
    

    Press ? in normal mode for the help menu. Unlike Vim, selections come before actions (select → action).

    helix-editor/helix

  • Vim


    The timeless modal text editor, available on virtually every Unix system. Steep learning curve, infinite configurability, and a skill that transfers everywhere.

    Features:

    • Modal editing (normal/insert/visual/command modes)
    • Powerful motions and text objects
    • Macro recording
    • Ubiquitous, installed by default on most servers
    • Massive plugin ecosystem

    Install:

    Install on Arch Linux
    pacman -S vim
    
    Install on Debian/Ubuntu
    apt install vim
    

    Usage:

    Open a file
    vim file.txt
    

    i to enter insert mode, Esc to return to normal mode, :wq to save and quit. Run vimtutor for an interactive introduction.

    vim.org

Email

  • mutt


    The classic Unix email client, text-based, fast, and infinitely configurable. A staple for reading and sending email directly from the terminal, with strong GPG support for encrypted and signed messages.

    Features:

    • IMAP, POP3, and SMTP support
    • GPG/PGP encryption and signing
    • Powerful message threading and sorting
    • Vim-style keybindings
    • Highly scriptable configuration

    Install:

    Install on Arch Linux
    pacman -S mutt
    
    Install on Debian/Ubuntu
    apt install mutt
    

    Usage:

    Launch mutt
    mutt
    

    Press ? for the full keybindings reference. m to compose, r to reply, d to delete, q to quit.

    mutt.org

File Manager

  • yazi


    A blazing fast terminal file manager written in Rust, built around async I/O. Features image previews, syntax-highlighted file previews, and a smooth vim-like navigation experience.

    Features:

    • Image previews in the terminal (Kitty, iTerm2, Sixel…)
    • Syntax-highlighted file and code previews
    • Vim-style keybindings
    • Tabs and multi-panel layouts
    • Bulk rename
    • Plugin system via Lua

    Install:

    Install on Arch Linux
    pacman -S yazi
    
    Install via Homebrew
    brew install yazi
    

    Usage:

    Launch yazi
    yazi
    

    Use h/l to navigate in and out of directories, Space to select, Enter to open. Press ? for the full keybindings reference.

    Shell integration

    Add the shell wrapper to your config so yazi changes the current directory on exit:

    ~/.bashrc or ~/.zshrc
    eval "$(yazi --init)"  # (1)!
    
    1. For fish: yazi --init | source

    sxyazi/yazi

Git

  • lazygit


    A terminal UI for git written in Go that makes staging, committing, branching, rebasing, and resolving conflicts intuitive, without leaving the terminal.

    Features:

    • Stage individual files, hunks, or lines
    • Interactive rebase with a visual interface
    • Branch and stash management
    • Commit history browsing with diffs
    • Merge conflict resolution
    • Customizable keybindings

    Install:

    Install via Homebrew
    brew install lazygit
    
    Install on Arch Linux
    pacman -S lazygit
    

    Usage:

    Launch lazygit in current repo
    lazygit
    

    Press ? to open the keybindings menu. Space stages files, c commits, P pushes.

    jesseduffield/lazygit

Kubernetes

  • k9s


    A terminal UI for Kubernetes that lets you interact with your clusters in real time. Navigate resources, view logs, exec into pods, and manage workloads, all without typing kubectl commands manually.

    Features:

    • Live view of pods, deployments, services, and all other resources
    • Log streaming with filtering
    • Shell access into containers
    • Resource editing in-place
    • Port forwarding
    • Works with any kubeconfig-configured cluster

    Install:

    Install via Homebrew
    brew install derailed/k9s/k9s
    
    Install on Arch Linux (AUR)
    paru -S k9s
    

    Usage:

    Launch k9s
    k9s
    
    Target a specific namespace
    k9s -n my-namespace
    
    Target a specific context
    k9s --context my-context
    

    Press ? inside k9s to open the keybindings help.

    derailed/k9s

Markdown

  • glow


    A Markdown reader for the terminal written in Go. Renders Markdown beautifully with styling, colors, and proper formatting, great for reading READMEs or documentation without leaving the terminal.

    Install:

    Install on Arch Linux (AUR)
    paru -S glow
    
    Install via Homebrew
    brew install glow
    

    Usage:

    Render a local file
    glow README.md
    
    Render from a URL
    glow https://raw.githubusercontent.com/charmbracelet/glow/HEAD/README.md
    
    Browse local Markdown files interactively
    glow
    

    Running glow without arguments opens a TUI file browser for .md files in the current directory.

    charmbracelet/glow

Network

  • bandwhich


    A terminal bandwidth utilization tool written in Rust. Shows real-time network usage broken down by process, connection, and remote address, instantly see what's talking to where.

    Install:

    Install on Arch Linux
    pacman -S bandwhich
    
    Install via Cargo
    cargo install bandwhich
    

    Usage:

    Launch bandwhich (requires root)
    sudo bandwhich
    

    imsnif/bandwhich

  • iftop


    A real-time network bandwidth monitor that shows bandwidth usage per connection, displayed as a live updating table. The network equivalent of top.

    Install:

    Install on Arch Linux
    pacman -S iftop
    
    Install on Debian/Ubuntu
    apt install iftop
    

    Usage:

    Monitor default interface (requires root)
    sudo iftop
    
    Monitor a specific interface
    sudo iftop -i eth0
    

    Press h for help, q to quit.

    ex-parrot.com/iftop

  • iptraf-ng


    An IP network traffic monitor that provides detailed statistics on network traffic by interface, protocol, and connection. A classic sysadmin tool.

    Install:

    Install on Arch Linux
    pacman -S iptraf-ng
    
    Install on Debian/Ubuntu
    apt install iptraf-ng
    

    Usage:

    Launch iptraf-ng (requires root)
    sudo iptraf-ng
    

    Navigate with arrow keys and Enter. Choose between general statistics, per-interface stats, or a detailed connection breakdown.

    iptraf-ng/iptraf-ng

  • mtr


    A network diagnostic tool that combines traceroute and ping into a single live-updating TUI. Shows every hop along the route to a host with real-time latency and packet loss per hop.

    Install:

    Install on Arch Linux
    pacman -S mtr
    
    Install on Debian/Ubuntu
    apt install mtr
    

    Usage:

    Trace route to a host
    mtr example.com
    
    Report mode (non-interactive)
    mtr --report example.com
    

    Press ? for help, q to quit.

    traviscross/mtr

  • oha


    A HTTP load testing tool written in Rust with a real-time TUI. Bombard an endpoint with concurrent requests and get a live view of throughput, latency percentiles, and response codes.

    Install:

    Install on Arch Linux (AUR)
    paru -S oha
    
    Install via Cargo
    cargo install oha
    

    Usage:

    Basic load test
    oha https://example.com
    
    50 concurrent connections, 1000 requests
    oha -c 50 -n 1000 https://example.com
    

    hatoo/oha

System Monitoring

  • btop


    A resource monitor written in C++ with a clean, responsive interface. Displays CPU, memory, disk, and network usage at a glance, with process management built in.

    Features:

    • Real-time CPU, memory, swap, disk, and network graphs
    • Process list with sorting, filtering, and kill/nice support
    • Mouse support
    • Themeable with built-in and custom color schemes
    • Low resource footprint

    Install:

    Install on Arch Linux
    pacman -S btop
    
    Install via Homebrew
    brew install btop
    

    Usage:

    Launch btop
    btop
    

    Press ? for the help menu. F2 opens settings, q quits.

    aristocratos/btop

  • htop


    The classic interactive process viewer for Unix, a staple on any Linux system. Simple, fast, and universally available.

    Features:

    • CPU, memory, and swap usage bars
    • Process list with sorting and filtering
    • Kill, renice, and strace processes
    • Tree view for parent/child relationships
    • Mouse support

    Install:

    Install on Arch Linux
    pacman -S htop
    
    Install on Debian/Ubuntu
    apt install htop
    

    Usage:

    Launch htop
    htop
    

    Press F1 for help, F6 to sort, F9 to kill a process.

    htop-dev/htop

Terminal Multiplexers

  • Zellij


    A terminal multiplexer written in Rust, think tmux, but with a more approachable UX, a built-in layout system, and a plugin ecosystem. Keybindings are always visible at the bottom, making it beginner-friendly without sacrificing power.

    Features:

    • Panes, tabs, and floating windows
    • Persistent sessions (survive disconnects)
    • Built-in status bar with visible keybindings
    • YAML/KDL layout files for reproducible workspaces
    • WebAssembly plugin system
    • Mouse support

    Install:

    Install via Cargo
    cargo install --locked zellij
    
    Install on Arch Linux
    pacman -S zellij
    

    Usage:

    Start a new session
    zellij
    
    Attach to an existing session
    zellij attach
    
    Start with a predefined layout
    zellij --layout my-layout.kdl
    

    Config and layouts live in ~/.config/zellij/. Press Ctrl+p to open the pane management mode, Ctrl+t for tabs.

    zellij-org/zellij

Weather

  • weathr


    A terminal weather app written in Rust with animated ASCII visuals, rain, snow, thunderstorms, flying airplanes, and day/night cycles. Weather data comes from Open-Meteo, a free and open-source weather API.

    Features:

    • Animated weather conditions (rain, snow, thunderstorms…)
    • Auto-location detection via IP geolocation
    • Day/night cycle rendering
    • Configurable units (metric/imperial)
    • HUD with current conditions

    Install:

    Install via Cargo
    cargo install weathr
    
    Install on Arch Linux (AUR)
    paru -S weathr
    

    Usage:

    Run weathr
    weathr
    
    Simulate rain (for testing)
    weathr --simulate rain
    

    Config at ~/.config/weathr/config.toml, set your coordinates, preferred units, and toggle HUD or silent mode.

    Veirt/weathr

  • wttr.in


    A web-based weather service usable directly from the terminal via curl, no installation required. Returns a nicely formatted ASCII weather report for any location.

    Service reliability

    The public instance at wttr.in can be unreliable, requests sometimes fail or time out. Retry if you get no response.

    Usage:

    Weather for a city
    curl wttr.in/Tokyo
    
    Compact one-line output
    curl "wttr.in/Tokyo?format=3"
    
    Weather in your language
    curl "wttr.in/Tokyo?lang=fr"
    

    The location can be a city name, airport code, or geographic coordinates. Append ?format= for machine-readable output, handy for shell prompts or scripts.

    chubin/wttr.in