Skip to main content

man-tui screenshot showing command search and man page viewer

man-tui

A fast, keyboard-first terminal UI for browsing Linux/macOS man pages.

man-tui is a Rust application built with Ratatui and crossterm. It gives you a split-pane interface with fuzzy command search on the left and a scrollable man-page viewer on the right.


Features

  • Interactive split view: search/list pane + man viewer pane.
  • Fuzzy command search powered by fuzzy-matcher (Skim algorithm).
  • Section selection (man sections 1–9 when available on your system).
  • In-page search with next/previous match navigation.
  • Command history + favorites persisted to config.
  • Theme toggle (dark/light).
  • Man-page content caching during runtime for fast revisits.
  • Terminal-safe lifecycle (raw mode + alternate screen are restored on exit).

Installation

pip install man-tui

Or with uv:

uv tool install man-tui

Prerequisites

  • man command available on your PATH
  • col command (used to clean formatting from man output)

Build from source (Rust)

cargo build --release

Binary output:

./target/release/man-tui

Run in development

cargo run

Usage

Launch:

man-tui

Core flow

  1. Type in the search box to filter available commands.
  2. Move to list, pick a command, press Enter.
  3. Read/scroll in the viewer.
  4. Use / in viewer for in-page search.

Keybindings

Behavior is focus-aware (Search, List, Viewer, Section Select, In-page Search).

Global-ish

  • q — quit
  • l — jump to command list (from search/viewer/in-page search)

Search focus

  • Type — update fuzzy query
  • Backspace — delete character
  • Enter / Tab / Down / Esc — move focus forward

List focus

  • ↑ / ↓ — move selection
  • Enter — open selected man page
  • Tab — cycle focus
  • / — move focus to search input
  • s — open section selector
  • t — toggle theme

Viewer focus

  • ↑ / ↓ — line scroll
  • PgUp / PgDn — page scroll
  • Tab — cycle focus
  • / — start in-page search
  • n / N — next / previous in-page match (when search active)
  • f — toggle favorite for current command
  • t — toggle theme
  • s — open section selector

In-page search focus

  • Type — update search query
  • Backspace — delete character
  • n / N — next / previous match
  • Enter — return to viewer
  • Esc — cancel in-page search and return to viewer

Section select focus

  • ↑ / ↓ — choose section
  • Enter — confirm section and refresh command list
  • Esc — cancel and return to list

Configuration

The app stores data in a TOML config file:

  • Linux/macOS typical path:
    • $XDG_CONFIG_HOME/man-tui/config.toml
    • or ~/.config/man-tui/config.toml

Stored fields:

  • history (recent opened commands, max 100)
  • favorites
  • last_command
  • last_section
  • theme ("dark" or "light")

How command discovery works

  • The app inspects /usr/share/man/man{section} directories.
  • It extracts .gz page basenames as command candidates.
  • It deduplicates and sorts commands.
  • Selected section filtering is applied when section mode is active.

When opening a page, the app executes:

man [section] <command> | col -b

The output is rendered in the right pane.


Project structure

.
├── Cargo.toml
├── spec.md
└── src
    ├── app.rs       # state machine, focus handling, search debounce, cache
    ├── colorize.rs  # lightweight man content heuristics for styling
    ├── config.rs    # config load/save + history/favorites
    ├── main.rs      # terminal setup + event loop + key routing
    ├── man.rs       # man section discovery + man command execution
    ├── search.rs    # fuzzy filtering
    └── ui.rs        # ratatui rendering and layout

Notes and limitations

  • Command discovery currently reads /usr/share/man/...; systems with custom man paths may need adaptation.
  • Runtime cache is in-memory only (cleared when app exits).
  • If man/col are unavailable, page loading will fail.

Development checks

cargo fmt
cargo clippy --all-targets --all-features -- -D warnings
cargo test

Release files for man-tui 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for man-tui 0.1.1
File Size Uploaded
man_tui-0.1.1.tar.gz 193.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for man-tui 0.1.1
File
man_tui-0.1.1-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
man_tui-0.1.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
man_tui-0.1.1-py3-none-win32.whl Python 3 none Windows x86-32 Details
man_tui-0.1.1-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
man_tui-0.1.1-py3-none-musllinux_1_2_i686.whl Python 3 none Linux musl 1.2+ x86-32 Details
man_tui-0.1.1-py3-none-musllinux_1_2_armv7l.whl Python 3 none Linux musl 1.2+ ARMv7l Details
man_tui-0.1.1-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
man_tui-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
man_tui-0.1.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl Python 3 none Linux glibc 2.17+ IBM System/390x Details
man_tui-0.1.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl Python 3 none Linux glibc 2.17+ PowerPC 64-le Details
man_tui-0.1.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl Python 3 none Linux glibc 2.17+ x86-32 Details
man_tui-0.1.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl Python 3 none Linux glibc 2.17+ ARMv7l Details
man_tui-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
man_tui-0.1.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
man_tui-0.1.1-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 9.7 MB

Release files / man_tui-0.1.1.tar.gz

Download URL man_tui-0.1.1.tar.gz
Size 193.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b60bdba774ed46bf57ead212efd3b86b1c5289d90d452504697fa6fc2654d446
BLAKE2b-256 checksum
How to use checksums
79dadf4b7da962656ab7108e5e1979ef87a120e3dd5777985ad4b2d4993b5553
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-win_arm64.whl

Download URL man_tui-0.1.1-py3-none-win_arm64.whl
Size 444.2 kB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
8f1ff79eb9b7766bf0d83221af80ecb0f71886c18c101ccb653ed5a64f1c0d33
BLAKE2b-256 checksum
How to use checksums
1da0fd070c70fc367e1fe75fd1574b938efb54221a935159df10e71ed2611f36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-win_amd64.whl

Download URL man_tui-0.1.1-py3-none-win_amd64.whl
Size 462.1 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
8762f880cfbd8cccdb740657e9fab8e0ac9eaa6242828c02496eda116d36f7ad
BLAKE2b-256 checksum
How to use checksums
9babc4eff081d1abe694329e6133c611e17334dd2d6d62071e6ad0b4ed1b2ede
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-win32.whl

Download URL man_tui-0.1.1-py3-none-win32.whl
Size 449.4 kB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
5a72f9b704fd9cb1c7dabb85cfd85797bfe651e589e57e6007bb7f81d5af02f3
BLAKE2b-256 checksum
How to use checksums
6288bce23ad77507d41fcd299909ba6f6e2bf8958302f4e54648606a3411105a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-musllinux_1_2_x86_64.whl

Download URL man_tui-0.1.1-py3-none-musllinux_1_2_x86_64.whl
Size 700.0 kB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
01c0374bbaf4e324e580f6225b261defcf4b0f233c594964587e4af77390101c
BLAKE2b-256 checksum
How to use checksums
dac9c580078520a5b44d978ee2579d57b173235a81e7c8bdf7886685cbae3c78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-musllinux_1_2_i686.whl

Download URL man_tui-0.1.1-py3-none-musllinux_1_2_i686.whl
Size 732.4 kB
Tags Linux musl 1.2+ x86-32 Python 3
SHA-256 checksum
How to use checksums
29eeeef05b4fc104f0df826e84e012d94577789931d4e9d89daffa5ae88f20b5
BLAKE2b-256 checksum
How to use checksums
2a73d47be63dc69baf088919931f6b535c23f3de96692a015d04f701ac2ec64c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-musllinux_1_2_armv7l.whl

Download URL man_tui-0.1.1-py3-none-musllinux_1_2_armv7l.whl
Size 683.5 kB
Tags Linux musl 1.2+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
2660f11a8a3a7968a50bf808b778085fd2430264aa21b69a141defae7c73e566
BLAKE2b-256 checksum
How to use checksums
0098c233840f95893b06f6baaca49e2b2434b91a807af57f25c70722af5c9f3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-musllinux_1_2_aarch64.whl

Download URL man_tui-0.1.1-py3-none-musllinux_1_2_aarch64.whl
Size 690.8 kB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
2b3c6352715df6fc4b3f470441ffd623036e8b8dd7bc10db12d28073b58d512f
BLAKE2b-256 checksum
How to use checksums
8816f35fd5603f1c983aab84168bd8389bbced9e071ff7cc46304bcb6f72f252
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL man_tui-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 640.7 kB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
84322a4241620ae5a78eb677b6a323569ed149e5c6291be1e050c59d26c7bc7c
BLAKE2b-256 checksum
How to use checksums
4a498e821960caca7e8b8b8797ac6e5eeb76c88d72ca25d7fd7543a0b6002eaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl

Download URL man_tui-0.1.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 689.1 kB
Tags Linux glibc 2.17+ IBM System/390x Python 3
SHA-256 checksum
How to use checksums
c62deefe228fd551a324f700b1ea507d1ef9ac2e47f7e8ff70325a250a5688c6
BLAKE2b-256 checksum
How to use checksums
e79fec7bccd3523cc2558614586b74334bd35227344cd22860bc7ccf1c49f349
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL man_tui-0.1.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 773.2 kB
Tags Linux glibc 2.17+ PowerPC 64-le Python 3
SHA-256 checksum
How to use checksums
b4a84d81f534c68bf1504d266c8e7762cebc546e19f21cc326d543f5bfdc3383
BLAKE2b-256 checksum
How to use checksums
5db27c6cc202d42f809fbcf4f15fae3e3408d71413ca251571a7424a9e013a51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL man_tui-0.1.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Size 703.9 kB
Tags Linux glibc 2.17+ x86-32 Python 3
SHA-256 checksum
How to use checksums
9f5f63b21876ed980ff0e9f4196f8981a3850b83cc1f893b4172fe52147414e9
BLAKE2b-256 checksum
How to use checksums
bb4b26388f0501e6df7ba52fc4a19dab34e4977dffe6250eb90c72a7ed91ee5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL man_tui-0.1.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 646.2 kB
Tags Linux glibc 2.17+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
343a4417f287f4453dd5b1e8f432f2eaace799fa4bee828a5889a4b5f2b006b9
BLAKE2b-256 checksum
How to use checksums
1f10b820f60cb766f22975ed4f23889dd56b4b9dedb85ea990dcfab028e8f7d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL man_tui-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 630.1 kB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
b56788b27c19005d089c67221203199f78a8d9e9344ca0bb9f49a16f7353d571
BLAKE2b-256 checksum
How to use checksums
d81ea0b7dc215093e681d1ef3f08de19a9cce449cb4144b2fed3515c1ac9037c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-macosx_11_0_arm64.whl

Download URL man_tui-0.1.1-py3-none-macosx_11_0_arm64.whl
Size 604.7 kB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c2cd2fd4c4a589167a53c21d6cea1b19191d0ff4688ad2cf2a43fc2fcce5fdfe
BLAKE2b-256 checksum
How to use checksums
4c7288d4b18aaff0b4b42614134cf69265063fc344dcc3b66eff7e04c682bd0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / man_tui-0.1.1-py3-none-macosx_10_12_x86_64.whl

Download URL man_tui-0.1.1-py3-none-macosx_10_12_x86_64.whl
Size 610.8 kB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e52d95817735cbab1c8a17a858f5a6a2a9f25bc192957ec8a6d9900e940835b9
BLAKE2b-256 checksum
How to use checksums
ebfbfa980733ed99b250a7de7520e637aacc797f74bfac9f1aa6fe8bd2d2635e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.1 This release

16 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page