Skip to content

About

general purpose menu for instantOS

Topics

Resources

Stars

20 stars

Watchers

4 watching

Forks

Repository files navigation

instantMENU

General purpose menu for instantOS

instantMENU is a simple menu for instantOS it is used for instantASSIST and in some other places

Installation from source

git clone https://github.com/instantOS/instantMENU
cd instantMENU
cargo build --locked
# Or install the debug build and helper scripts for your user:
just install

Release archives, Arch Linux packages, and Debian packages are also attached to each GitHub release.

Releases

The version-bump workflow opens a release/version-bump pull request using conventional commits to choose the next version. Merging that PR creates the matching v* tag and publishes the release artifacts. A patch, minor, or major bump can also be selected manually from the workflow dispatch form.

Features

  • alt-tab switcher mode: cycle with Alt+Tab, release Alt to pick (--alt-tab)
  • mouse support
  • animations and hover over indicators
  • composable item metadata for icons, colors, headings, hidden match terms, and single-key menus
  • slider mode (instantmenu slide 'brightnessctl s')
  • streamed input: the menu opens instantly and items appear as stdin produces them
  • Catppuccin, classic and Gruvbox themes (--theme)

Appearance configuration

instantmenu reads one optional file: $XDG_CONFIG_HOME/instantmenu/config.toml, or ~/.config/instantmenu/config.toml when XDG_CONFIG_HOME is unset. Use --config PATH to require another file, or --no-config to skip configuration. The file is deliberately limited to font and colors:

font = "Iosevka:size=13"
theme = "gruvbox" # catppuccin (default), classic, or gruvbox

[colors.normal]
foreground = "#EBDBB2"
background = "#282828"
detail = "#504945"

[colors.selected]
foreground = "#282828"
background = "#83A598"
detail = "#8EC07C"

Every scheme is named: normal, fade, highlight, hover, selected, output, green, yellow, and red; each accepts foreground, background, and detail. Unknown keys and invalid colors are errors. A configured theme is applied first, then configured colors, then command-line --theme and color overrides.

is this dmenu?

instantMENU started as a fork of dmenu and keeps the dmenu workflow (items on stdin, selection on stdout, full keyboard control), with all extra features optional. The command line uses modern long options (--width, --right-command, ...) with a few single-letter shortcuts (-i, -p, -l, ...) instead of dmenu's historical flags.

For agent guidance on scripting and item markup, run instantmenu skill (also available as instantmenu --skill). It prints a self-contained Markdown skill without opening a display.

Item metadata

Each input line is normally its visible label and selected output. A leading attribute block adds metadata without becoming part of either:

Display
{blue icon=display match="monitor screen"} Display
{heading green} System actions
{red icon=power key=q} Power off

Known color names may be bare ({red}) or explicit ({color=red}). Other attributes are icon, key, shortcut, match, value, and the heading flag. Quote values that contain spaces. Run with --single-key to show and activate only entries that have key=…. Prefix a literal markup-like label with an extra opening brace: {{red} literal displays {red} literal. Use value to set a different output from the display label: {value="file:/tmp/a b"} My File displays My File but prints file:/tmp/a b.

All item activation paths use that same output value: Enter, mouse clicks, numbered shortcuts, Alt release, single-key activation, auto-confirm, and bound commands. For example, {key=h value=sh} Help displays Help in a single-key menu but outputs sh. Ctrl-Enter/Ctrl-click accept without closing. Shift-Return explicitly submits the input text instead (unless --reject-no-match is set); Shift-click still accepts the clicked item. Tab completion and hover prompts continue to use display labels.

Per-entry keyboard shortcuts

Use shortcut=… in a regular menu to activate an entry directly while keeping its full label visible. Hints align to the right of each entry with a left separator, using symbols for Ctrl (⌃), Alt (⎇), Shift (⇧), and Super (⊞):

instantmenu -l 5 <<'MENU'
{icon=folder shortcut=super-o value=open} Open folder
{blue shortcut=ctrl-shift-e value=edit} Edit
{shortcut=f2 value=rename} Rename
MENU

Combine ctrl-, alt-, shift-, and super- in any order before a character, function key (f1–f35), or named key (space, enter, tab, backspace, delete, insert, left, right, up, down, home, end, page-up, page-down). Letter names ignore case; request Shift explicitly. Plain characters are allowed but take precedence over typing into the search field. Escape, Ctrl-C, Ctrl-G, and unmodified Enter/Tab remain reserved.

Shortcuts activate only entries in the current search results, including other pages. They print the entry's value= (or label) and close the menu. Use unique shortcuts; duplicates select the first matching entry in input order. Global --bind actions take precedence on conflicts. Headings cannot have shortcuts, and shortcuts are inactive in --single-key, input-only, password, and toast modes. {key=q} remains the separate single-character --single-key interface.


instantOS is still in early beta, contributions always welcome

About

general purpose menu for instantOS

Topics

Resources

Stars

20 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages