LinuxCommandLibrary

bemenu

TLDR

Display a menu and output selected item

$ echo -e "option1\noption2\noption3" | bemenu
copy
Display a menu with a prompt
$ echo -e "firefox\nchromium\nvivaldi" | bemenu -p "Browser:"
copy
Run selected command
$ echo -e "firefox\nchromium" | bemenu | xargs -r swaymsg exec --
copy
Use as a program launcher (with dmenu_path)
$ dmenu_path | bemenu | sh
copy
Customize appearance
$ bemenu --fn "monospace 12" --tb "#285577" --tf "#ffffff"
copy
List installed applications
$ compgen -c | sort -u | bemenu
copy
Password prompt (hidden input)
$ bemenu -x -p "Password:"
copy

SYNOPSIS

bemenu [options]
bemenu-run [options]

DESCRIPTION

bemenu is a dynamic menu library and client program inspired by dmenu. It reads items from stdin, presents them in a menu, and outputs the selected item to stdout. It supports multiple backends including Wayland, X11, and curses.
Unlike dmenu which only works on X11, bemenu provides native Wayland support, making it ideal for Sway and other Wayland compositors. The rendering is handled through backend libraries, allowing the same interface across different display servers.
bemenu-run is a wrapper that lists executables from PATH and runs the selected one, functioning as a simple application launcher.

PARAMETERS

-p, --prompt text

Set the prompt text.
-i
Case-insensitive matching.
-l, --list lines
Show items in a vertical list.
-b, --bottom
Display at bottom of screen.
-m, --monitor index
Show on specific monitor.
-H, --line-height height
Set item height in pixels.
-x, --password
Hide input (password mode).
--fn font
Set font (Pango format).
--tb color
Title bar background color.
--tf color
Title bar foreground color.
--fb color
Filter background color.
--ff color
Filter foreground color.
--nb color
Normal item background.
--nf color
Normal item foreground.
--hb color
Highlighted item background.
--hf color
Highlighted item foreground.
--binding vim|emacs
Set key binding style.

CAVEATS

Requires appropriate backend library for the display server (wayland, x11, or curses). Colors are specified in #RRGGBB format. Font specification follows Pango format. On Wayland, bemenu needs the layer-shell protocol support from the compositor.

HISTORY

bemenu was created as a cross-platform replacement for dmenu that could work on Wayland compositors. It was developed as part of the effort to bring traditional X11 utilities to the Wayland ecosystem. The project provides library bindings allowing integration into other applications, following a more modular design than the original dmenu.

SEE ALSO

dmenu(1), rofi(1), fzf(1), wofi(1)

Copied to clipboard