Skip to content

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.

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, 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.


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