Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
bemenu(1)		    General Commands Manual		     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] [--bind-
	   ing vim] [--fork] [backend_options]

       bemenu-run [-hCiKTvwx] [-I <index>] [-l <lines>]	[-P <prefix>]
	   [-p <prompt>] [--ifne] [--scrollbar none|always|autohide]  [--bind-
	   ing vim] [--fork] [--no-exec] [backend-options]

DESCRIPTION
       bemenu  is  a  dynamic menu for tty(4) (using ncurses(3)), X11 and Way-
       land, 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 <carriage-return>,	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> down|up"
	   List	items vertically down or up 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 none|hide|indicator
	   Specify how the filter text should be displayed:
       +-----------+---------------------------------------------------------+
       | none	   | Display the input (the default).			     |
       +-----------+---------------------------------------------------------+
       | hide	   | Do	not display any	input.				     |
       +-----------+---------------------------------------------------------+
       | indicator | Replace input with	asterisks.			     |
       +-----------+---------------------------------------------------------+

       --fixed-height
	   Prevent the display from changing height on filter.

       --accept-single
	   Immediately return if there is only one item.

       --auto-select
	   When	one entry is left, automatically select	it.

       --binding
	   Use alternative key bindings. Available options: vim

       --fork
	   Always fork(2) before executing the selections. Disabled by default
	   when	using the terminal backend.

       --ifne
	   Only	display	menu if	there are items.

       --single-instance
	   Force a single menu instance.

       --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 ex- |
       |	  | ceeds the number of	lines.				     |
       +----------+----------------------------------------------------------+

       -e, --vim-esc-exits
	   Exit	bemenu when pressing escape in normal mode for vim bindings.

       -N, --vim-normal-mode
	   Start in normal mode	for vim	bindings.

       -F, --filter
	   Filter items	for a given string before showing  the	menu.  Affects
	   --ifne and --accept-single

   Backend options
       These options are only available	on backends specified in the parenthe-
       ses:

       -b, --bottom (Wayland, X11)
	   The list will appear	at the bottom of the screen.

       -c, --center (Wayland, X11)
	   The list will appear	at the center of the screen. (wx)

       -f, --grab (Wayland, X11)
	   Show	the bemenu window whilst reading the items.

       -B, --border (Wayland, X11)
	   Specify the width of	the border in pixels around the	menu.

       --bdr (Wayland, X11)
	   Specify the border color.

       -R, --border-radius (Wayland, X11)
	   Specify  the	 radius	 of  the border	around the menu	(0 = no	curved
	   borders).

       -H, --line-height <height> (Wayland, X11)
	   Specify the height in point size to make each entry.

       --ch (Wayland, X11)
	   Specify the height of the cursor (0 = scales	with line height).

       --cw (Wayland, X11)
	   Specify the width of	the cursor.

       -m, --monitor <index> (Wayland, X11)
	   Specify the monitor index where the list should appear. Monitor in-
	   dices start at zero.	The interpretation of the given	 argument  de-
	   pends  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.

       --hp (Wayland, X11)
	   Specify the horizontal padding for the entries in single line mode.

       -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_descrip-
	   tion_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 00FF 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  <control-x>,  M-x	 means
       <alt-x> and S-x means <shift-x>:

       <cursor-up>, S-<cursor-left>, C-p, M-j, M-l
	   Highlight the previous item.

       <cursor-down>, <tab>, 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 cur-
	   rently 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-<tab>
	   Copy	the highlighted	item to	the filter.

       <escape>, C-g
	   Terminate bemenu without printing items.

       C-<carriage-return>, C-m
	   Print selected items	and the	currently highlighted one,  and	 exit.
	   Items  are  printed	in the order they were selected, with the cur-
	   rently highlighted item printed last.

       S-<carriage-return>, Insert
	   Print the filter text to standard output and	exit.

       C-b, C-l, <cursor-left>
	   Move	cursor left.

       C-f, <cursor-right>
	   Move	cursor right.

       C-a, Home
	   Move	cursor to the start.

       C-e, End
	   Move	cursor to the end.

       <backspace> C-h
	   Remove character before the cursor.

       <delete>
	   Remove character at the cursor.

       C-u, S-<delete>
	   Remove all characters before	the cursor.

       C-k
	   Remove all characters after the cursor.

       C-w
	   Clear the filter.

       C-y, C-Y
	   Paste selection (C-y	for "primary", C-Y for "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.

   Vim bindings
       bemenu uses vim-like modal entry	if invoked with	--binding  vim.	 These
       bindings	 roughly emulate insert	and normal vim modes. The initial mode
       is insert mode, unless --vim-normal-mode	is specified.

       In insert mode, all keys	function as described  above  except  for  the
       following:

       <escape>
	   Switch to normal mode.

       In normal mode, only the	following keys have meaning:

       q
	   Terminate bemenu without printing items.

       i
	   Enter insert	mode.

       I
	   Enter insert	mode after moving the cursor to	the start.

       a
	   Enter insert	mode after moving the cursor right.

       A
	   Enter insert	mode after moving the cursor to	the end.

       cc
	   Enter insert	mode after clearing the	filter.

       cw
	   Enter  insert mode after removing all characters between the	cursor
	   and the start of the	next word.

       cb
	   Enter insert	mode after removing all	characters between  the	 start
	   of the word and the cursor.

       c$
	   Enter insert	mode after removing all	characters after the cursor.

       c0
	   Enter insert	mode after removing all	characters before the cursor.

       n, j
	   Highlight the next item.

       p, k
	   Highlight the previous item.

       gg
	   Highlight the first item in the list.

       G
	   Highlight the last item in the list.

       H
	   Highlight the first visible item.

       M
	   Highlight the middle-most visible item.

       L
	   Highlight the last visible item.

       v
	   Select or deselect the higlighted item.

       F
	   Show	the next page of items.

       B
	   Show	the previous page of items.

       h
	   Move	cursor left.

       l
	   Move	cursor right.

       0
	   Move	cursor to the start.

       $
	   Move	cursor to the end.

       w
	   Move	cursor forward to the start of a word.

       b
	   Move	cursor backward	to the start of	a word.

       e
	   Move	cursor forward to the end of a word.

       x
	   Remove character at the cursor.

       X
	   Remove character before the cursor.

       dw
	   Remove  all	characters  between  the  cursor and start of the next
	   word.

       db
	   Remove all characters between the start of the word and the cursor.

       d$
	   Remove all characters after the cursor.

       d0
	   Remove all characters before	the cursor.

       dd
	   Clear the filter.

ENVIRONMENT
       +------------------+--------------------------------------------------+
       | BEMENU_OPTS	  | An alternative way to pass	command	 line  argu- |
       |		  | ments to bemenu.				     |
       +------------------+--------------------------------------------------+
       | BEMENU_BACKEND	  | Force a backend to be used.	If empty, one of the |
       |		  | GUI	backends (Wayland, X11)	will be	selected au- |
       |		  | tomatically.  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 /usr/local/lib/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	<mail-
       roxas@gmail.com>	with the help of various contributors.

				  2025-11-01			     bemenu(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bemenu&sektion=1&manpath=FreeBSD+Ports+15.0>

home | help