bemenu(1) # NAME *bemenu* - dynamic menu inspired by *dmenu*(1) # SYNOPSIS *bemenu* [*-hCiKTvwx*] [*-I* <_index_>] [*-l* <_lines_>] [*-P* <_prefix_>] \[*-p* <_prompt_>] [*--ifne*] [*--scrollbar* _none_|_always_|_autohide_] \[*--binding* _vim_] [*--fork*] [_backend_options_] *bemenu-run* [*-hCiKTvwx*] [*-I* <_index_>] [*-l* <_lines_>] [*-P* <_prefix_>] \[*-p* <_prompt_>] [*--ifne*] [*--scrollbar* _none_|_always_|_autohide_] \[*--binding* _vim_] [*--fork*] [*--no-exec*] [_backend-options_] # DESCRIPTION *bemenu* is a dynamic menu for *tty*(4) (using *ncurses*(3)), X11 and Wayland, inspired by *dmenu*(1). It reads a list of newline-separated items from standard input and then presents them as a list, where the user can select one or more of them. When pressing **, the selected items are printed to standard output (one per line) and *bemenu* exits. Entering text will filter the items to those that match the input. If the number of items exceeds the size of the list, the items will be paginated. *bemenu-run* is a special-case invocation of *bemenu*, where the input is the list of executables under PATH and the selected items are executed. # OPTIONS *-h, --help* Print a help message to standard output and exit. *-C, --no-cursor* Disable all cursor events. *-I, --index* <_index_> Highlight the item at _index_ at the start. Indices start at 0. By default, the first item is highlighted. *-i, --ignorecase* Filter items case-insensitively. *-K, --no-keyboard* Disable all keyboard events. *-l, --list* <_number_> List items vertically with the given _number_ of lines. *-P, --prefix* <_prefix_> Display _prefix_ before the highlighted item in a vertical list. *-p, --prompt* <_prompt_> Defines the _prompt_ text to be displayed to the left of the input field. Defaults to ‘bemenu’. *-s, --no-spacing* Disable the title spacing on entries. *-T, --no-touch* Disable all touch events. *-v, --version* Print the *bemenu* version number to standard output and exit. *-w, --wrap* Advancing past the end of the list returns you to the start. *-x, --password* Hide filter text. *--binding* Use alternative key bindings. Available options: vim *--fork* Always *fork*(2) before executing the selections. Disabled by default when using the terminal backend. *--no-exec* Print the selected items to standard output instead of executing them. *--scrollbar* _none_|_always_|_autohide_ Specify when to show a scrollbar for vertical lists: [[ *none* :< Never display a scrollbar (the default). | *always* : Always display a scrollbar. | *autohide* : Only display a scrollbar when the number of items exceeds the number of lines. ## Backend options These options are only available on backends specified in the parentheses: *-b, --bottom* (Wayland, X11) The list will appear at the bottom of the screen. *-f, --grab* (Wayland, X11) Show the *bemenu* window whilst reading the items. *-H, --line-height* <_height_> (Wayland, X11) Specify the _height_ in point size to make each entry. *-m, --monitor* <_index_> (Wayland, X11) Specify the monitor _index_ where the list should appear. Monitor indices start at zero. The interpretation of the given argument depends on the utilized backend. With X11 and Wayland, a value of ‘-1’ or *focused* indicates that the current monitor should be used (the default). With Wayland, the _index_ should be a string specifying a specific monitor name. The value ‘-2’ or *all* indicates that the list should appear on all monitors. *-n, --no-overlap* (Wayland) Set the *bemenu* window to be on top of any other panels. *-M, --margin* <_margin_> (Wayland, X11) Specify the _margin_ (empty space) in pixels to leave between menu and vertical view borders. *bemenu* will reduce it's size to fit in space between gaps. *-W, --width-factor* <_factor_> (Wayland, X11) Specify the relative width factor as a floating point number. It makes sense to set it between 0 and 1 to define how much of the screen width *bemenu* will use. However, *bemenu* will still respect _margin_, so if resulting size is greater than space between gaps, *bemenu* will ignore _factor_ and use available space instead. *--fn* <_name_ [_size_]> (Wayland, X11) Specify the font family _name_ and _size_ to be used. For more options, consult the _Pango Reference Manual_ for *pango_font_description_from_string*(). The following options control the colours for various parts of the list for the Wayland and X11 backends. Each takes an argument in the form of: *#*_RGB_[_A_] where _R_, _G_, _B_ and _A_ are hexadecimal integers from 00–FF that control the red, green, blue and alpha-transparency channels. *--tb* <_color_> Title background. *--tf* <_color_> Title foreground. *--fb* <_color_> Filter background. *--ff* <_color_> Filter foreground *--cb* <_color_> Cursor background. *--cf* <_color_> Cursor foreground *--nb* <_color_> Normal background. *--nf* <_color_> Normal foreground. *--hb* <_color_> Highlighted background. *--hf* <_color_> Highlighted foreground. *--fbb* <_color_> Feedback background. *--fbf* <_color_> Feedback foreground. *--sb* <_color_> Selected background. *--sf* <_color_> Selected foreground. *--ab* <_color_> Alternating background color. *--af* <_color_> Alternating foreground color. *--scb* <_color_> Scrollbar background. *--scf* <_color_> Scrollbar foreground. # KEYBOARD COMMANDS *bemenu* supports keyboard commands to move around the list and edit the filter. In the following examples, *C-x* means **, *M-x* means ** and *S-x* means **: *, S-, C-p, M-j, M-l* Highlight the previous item. *, , C-n, M-h, M-k* Highlight the next item. *PageUp, M-v, M-u* Show the previous page of items, preserving the offset of the currently highlighted item, if possible. *PageDown, C-v, M-d* Show the next page of items, preserving the offset of the currently highlighted item, if possible. *S-M-<, S-PageUp* Highlight the first item in the list. *S-M->, S-PageDown* Highlight the last item in the list. *S-* Copy the highlighted item to the filter. *, C-g* Terminate *bemenu* without printing items. *C-, C-m* Print selected items and the currently highlighted one, and exit. Items are printed in the order they were selected, with the currently highlighted item printed last. *S-, Insert* Print the filter text to standard output and exit. *C-l, * Move cursor left. *C-f, * Move cursor right. *C-a, Home* Move cursor to the start. *C-e, End* Move cursor to the end. * C-h* Remove character before the cursor. ** Remove character at the cursor. *C-u, S-* Remove all characters before the cursor. *C-k* Remove all characters after the cursor. *C-w* Clear the filter. *C-y* Paste the clipboard. *M-[1-9]* Print selected items and exit with a custom error code 10 (*M-1*) through 18 (*M-9*), see _EXIT STATUS_. *M-0* Print selected items and exit with the custom error code 19, see _EXIT STATUS_. # ENVIRONMENT [[ *BEMENU_OPTS* :< An alternative way to pass command line arguments to *bemenu*. | *BEMENU_BACKEND* : Force a backend to be used. If empty, one of the GUI backends (Wayland, X11) will be selected automatically. The accepted values are *curses*, *wayland* and *x11*. | *BEMENU_RENDERER* : Force a backend by loading its shared object from the set value. | *BEMENU_RENDERERS* : Override the backend search path to the set value. Defaults to _@LIBDIR@/bemenu_. | *BEMENU_SCALE* : Override the rendering scale factor for the GUI backends. # EXIT STATUS *0* bemenu ran successfully. *1* The user exited without selecting, or bemenu encountered an error. *10-19* The user specified a custom exit code with *M-[0-9]*, see _KEYBOARD COMMANDS_. # SEE ALSO *dmenu*(1), *fork*(2), *ncurses*(3), *tty*(4) _Pango Reference Manual_, https://developer.gnome.org/pango/1.46/, August 20, 2020, Fonts — pango_font_description_from_string(). # AUTHORS *bemenu* is written and maintained by Jari Vetoniemi <_mailroxas@gmail.com_> with the help of various contributors.