simple-term-menu
A Python package which creates simple interactive menus on the command line.
What it is and what it does
simple-term-menu is a Python library that builds interactive selection menus for terminal applications. It lets users navigate and choose from a list of options using arrow keys, vim-style j/k keys, or emacs bindings, then returns the selected index. The package automatically detects terminal capabilities via the terminfo database and disables styling features that aren't supported.
The library supports search filtering with regex patterns, keyboard shortcuts (single-letter prefixes), multi-select mode, custom styling for cursors and highlights, and status bars. It runs on Linux and macOS with no external runtime dependencies, making it straightforward to add interactive choice prompts to command-line tools.
Use it for:
- Build a CLI tool that prompts users to select from a list of configuration options or actions.
- Create an interactive installer or setup wizard that guides users through choices with keyboard navigation.
- Add a searchable menu to filter and select items from a large dataset in a terminal application.
- Implement multi-select functionality to let users toggle and confirm multiple choices before proceeding.
- Define keyboard shortcuts in a menu so power users can jump directly to frequently used options.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Creates interactive command-line menus where users select options using arrow keys, vim motions, or keyboard shortcuts, with built-in search and multi-select support.
Yes, if you need an interactive terminal menu for a CLI tool. The package is stable, has no dependencies, and works on standard Linux and macOS systems. The dormant maintenance is a minor concern for new features, but the codebase is mature and unlikely to require frequent updates. Not suitable if you need Windows support or are building a graphical UI.
Install
simple-term-menu on PyPI
pip
pip install simple-term-menuuv
uv add simple-term-menupoetry
poetry add simple-term-menuInstalling simple-term-menu
Before you install
Low friction installation with no runtime dependencies. Maintenance is dormant—last release was 620 days ago—but the package is marked Production/Stable and the repository remains active with recent commits.
License in practice
MIT license permits unrestricted use, modification, and distribution in both open-source and commercial projects with minimal obligations.
Quickstart
from simple_term_menu import TerminalMenu
options = ["entry 1", "entry 2", "entry 3"]
menu = TerminalMenu(options)
selected_index = menu.show()
print(f"Selected: {options[selected_index]}")
Requires Linux or macOS; terminfo database must be available on the system.
Verify before relying
- Whether the package works reliably on modern terminal emulators and recent OS versions given the dormant maintenance status.
- Performance characteristics with very large menu lists (thousands of entries).
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (~=3.5) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | dormant — 620 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 4,002,444/month — #2,403 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: simple_term_menu-1.6.6-py3-none-any.whl
Keywords: terminal, menu, choice
Tags
More Utilities packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
charset-normalizerDetects and normalizes text encoding from…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
git-pythonProvides command-line shortcuts for common git…
unclear · top 15,000 on PyPI
pickpick provides a Python library to create…
permissive · top 15,000 on PyPI
cli-uiProvides terminal UI components for colored…
permissive · top 15,000 on PyPI
streamlit-option-menuA Streamlit component that renders a static…
unclear · top 15,000 on PyPI
app-modelProvides a declarative schema for organizing…
permissive · top 15,000 on PyPI
pyshortcutsCreates desktop and Start Menu shortcuts for…
permissive · top 15,000 on PyPI
bulletBullet provides styled, interactive CLI prompts…
permissive · top 15,000 on PyPI
blurbblurb is a command-line tool that manages…
permissive · top 15,000 on PyPI
ascii-colorsUnified terminal UI library providing colored…
permissive · top 15,000 on PyPI
click-aliasesAdds command aliases to Click CLI groups and…
permissive · top 5,000 on PyPI