simple-term-menu
A Python package which creates simple interactive menus on the command line.
Decision gist · record as of 2026-08-14
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.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Linux or macOS; terminfo database must be available on the system.
- 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 · maintenance · safety
MIT (permissive) — MIT license permits unrestricted use, modification, and distribution in both open-source and commercial projects with minimal obligations.
last release 2024-12-02 (620 days) · last repo commit 2024-12-02 · 570 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 4,002,444 downloads/mo, #2,403 on PyPI
Alternatives
Verify before relying
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]}")- 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).
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 on it.
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
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.
Requires Linux or macOS; terminfo database must be available on the system.
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]}")
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 |
| Classifiers | Development Status :: 5 - Production/StableEnvironment :: ConsoleLicense :: OSI Approved :: MIT LicenseOperating System :: MacOSOperating System :: POSIX :: LinuxProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.3Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Topic :: TerminalsTopic :: Utilities |
Evidence: simple_term_menu-1.6.6-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “terminal menu selection”
- simple-term-menuCreates interactive command-line menus where users select options…
- pickpick provides a Python library to create interactive terminal…
- bulletBullet provides styled, interactive CLI prompts for Python—bullet…
Give your agent the search over MCP, or paste the wish link into any chat.
More Utilities packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Detects and normalizes text encoding from unknown or ambiguous sources, supporting all IANA character sets that Python's core library provides codecs for, with the ability to register custom codecs.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Pygments is a syntax highlighter that colorizes source code and text in over 500 languages and formats, outputting to HTML, LaTeX, RTF, SVG, images, or ANSI terminal sequences.
Install it if you need to display or transform source code.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
See also git-python · pick · cli-ui · streamlit-option-menu · app-model · pyshortcuts · bullet · blurb · ascii-colors · click-aliases