skillfed

simple-term-menu

A Python package which creates simple interactive menus on the command line.

simple-term-menu v1.6.6 4.0M downloads/30d#2,403 on PyPI570
Permissive license MIT DORMANT released

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-menu

uv

uv add simple-term-menu

poetry

poetry add simple-term-menu

Installing 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

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

Tags

terminal menu selectioninteractive command line menucli menu builderkeyboard-driven menuterminal ui menucommand line choice promptsimple terminal menu
cli-uiterminal-interactionmenu-selection

More Utilities packages