The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Title: Interactive Command-Line Menus
Version: 0.1.3
Author: Petr Čala [aut, cre]
Maintainer: Petr Čala <61505008@fsv.cuni.cz>
Description: Provides interactive command-line menu functionality with single and multiple selection menus, keyboard navigation (arrow keys or vi-style j/k), preselection, and graceful fallback for non-interactive environments. Inspired by tools such as 'inquirer.js' https://github.com/SBoudrias/Inquirer.js, 'pick' https://github.com/aisk/pick, and 'survey' https://github.com/AlecAivazis/survey. Designed to be lightweight and easy to integrate into 'R' packages and scripts.
License: MIT + file LICENSE
URL: https://github.com/PetrCala/climenu
BugReports: https://github.com/PetrCala/climenu/issues
Depends: R (≥ 4.0.0)
Imports: cli (≥ 3.6.0)
Suggests: covr, devtools, keypress, knitr, rmarkdown, roxygen2 (≥ 7.0.0), testthat (≥ 3.0.0)
VignetteBuilder: knitr
Config/testthat/edition: 3
Config/testthat/parallel: TRUE
Encoding: UTF-8
RoxygenNote: 7.3.3
NeedsCompilation: no
Packaged: 2026-02-03 07:07:04 UTC; runner
Repository: CRAN
Date/Publication: 2026-02-06 13:40:06 UTC

Multiple Selection Menu (Checkbox)

Description

Interactive menu for selecting multiple items from a list. Uses arrow keys (or j/k) to navigate, Space to toggle, and Enter to confirm. Optionally includes a "Select all" / "Deselect all" option at the top when allow_select_all = TRUE.

Usage

checkbox(
  choices,
  prompt = "Select items (Space to toggle, Enter to confirm):",
  selected = NULL,
  return_index = FALSE,
  max_visible = 10L,
  allow_select_all = FALSE
)

Arguments

choices

Character vector of choices to display

prompt

Prompt message to display

selected

Pre-selected items (indices or values)

return_index

Return indices instead of values (default: FALSE)

max_visible

Maximum number of items to display at once (default: 10). Set to NULL to show all items.

allow_select_all

If TRUE, adds a "Select all" / "Deselect all" option at the top of the menu. When selected, toggles all items at once. The option text dynamically changes based on selection state (default: FALSE).

Value

Selected items as character vector or indices, or NULL if cancelled. The special "Select all" option is never included in the returned results.

Examples

if (interactive()) {
  toppings <- checkbox(
    c("Pepperoni", "Mushrooms", "Olives"),
    prompt = "Select toppings:"
  )

  # With pre-selection
  options <- checkbox(
    c("Option A", "Option B", "Option C"),
    selected = c(1, 3)
  )

  # With scrolling for long lists
  items <- checkbox(1:100, max_visible = 10)

  # With select all feature
  methods <- checkbox(
    c("method_a", "method_b", "method_c"),
    allow_select_all = TRUE,
    prompt = "Select methods to run:"
  )
}

Description

Creates an interactive menu in the R console allowing users to select items. Inspired by inquirer.js, Python's pick, and Go's survey libraries.

Usage

menu(
  choices,
  prompt = "Select an item:",
  type = c("select", "checkbox"),
  selected = NULL,
  return_index = FALSE
)

Arguments

choices

Character vector of choices to display

prompt

Prompt message to display (default: "Select an item:")

type

Menu type: "select" (single) or "checkbox" (multiple) (default: "select")

selected

Pre-selected items (indices or values)

return_index

Return indices instead of values (default: FALSE)

Value

Selected item(s) as character vector or indices, or NULL if cancelled

Examples

if (interactive()) {
  # Single selection
  color <- menu(c("Red", "Green", "Blue"), prompt = "Pick a color:")

  # Multiple selection
  toppings <- menu(
    c("Pepperoni", "Mushrooms", "Olives"),
    type = "checkbox",
    prompt = "Select toppings:"
  )
}

Single Selection Menu

Description

Interactive menu for selecting a single item from a list. Uses arrow keys (or j/k) to navigate and Enter to select.

Usage

select(
  choices,
  prompt = "Select an item:",
  selected = NULL,
  return_index = FALSE,
  max_visible = 10L
)

Arguments

choices

Character vector of choices to display

prompt

Prompt message to display

selected

Pre-selected item (index or value)

return_index

Return index instead of value (default: FALSE)

max_visible

Maximum number of items to display at once (default: 10). Set to NULL to show all items.

Value

Selected item as character or index, or NULL if cancelled

Examples

if (interactive()) {
  choice <- select(c("Yes", "No", "Maybe"))
  index <- select(c("First", "Second", "Third"), return_index = TRUE)

  # With scrolling for long lists
  choice <- select(1:100, max_visible = 10)
}

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.