nix-config/home/desktop-river/bemenu.nix

102 lines
4.7 KiB
Nix
Raw Normal View History

2022-12-29 20:55:37 +01:00
{ config, pkgs, ... }:
# usage: bemenu [options]
# Options
# -h, --help display this help and exit.
# -v, --version display version.
# -i, --ignorecase match items case insensitively.
# -F, --filter filter entries for a given string.
# -w, --wrap wraps cursor selection.
# -l, --list list items vertically with the given number of lines.
# -p, --prompt defines the prompt text to be displayed.
# -P, --prefix text to show before highlighted item.
# -I, --index select item at index automatically.
# -x, --password hide input.
# -s, --no-spacing disable the title spacing on entries.
# --scrollbar display scrollbar. (none (default), always, autohide)
# --ifne only display menu if there are items.
# --fork always fork. (bemenu-run)
# --no-exec do not execute command. (bemenu-run)
#
# Use BEMENU_BACKEND env variable to force backend:
# curses ncurses based terminal backend
# wayland wayland backend
# x11 x11 backend
#
# If BEMENU_BACKEND is empty, one of the GUI backends is selected automatically.
#
# Backend specific options
# c = ncurses, w == wayland, x == x11
# (...) At end of help indicates the backend support for option.
#
# -b, --bottom appears at the bottom of the screen. (wx)
# -c, --center appears at the center of the screen. (wx)
# -f, --grab show the menu before reading stdin. (wx)
# -n, --no-overlap adjust geometry to not overlap with panels. (w)
# -m, --monitor index of monitor where menu will appear. (wx)
# -H, --line-height defines the height to make each menu line (0 = default height). (wx)
# -M, --margin defines the empty space on either side of the menu. (wx)
# -W, --width-factor defines the relative width factor of the menu (from 0 to 1). (wx)
# -B, --border defines the width of the border in pixels around the menu. (wx)
# --ch defines the height of the cursor (0 = scales with line height). (wx)
# --cw defines the width of the cursor. (wx)
# --hp defines the horizontal padding for the entries in single line mode. (wx)
# --fn defines the font to be used ('name [size]'). (wx)
# --tb defines the title background color. (wx)
# --tf defines the title foreground color. (wx)
# --fb defines the filter background color. (wx)
# --ff defines the filter foreground color. (wx)
# --nb defines the normal background color. (wx)
# --nf defines the normal foreground color. (wx)
# --hb defines the highlighted background color. (wx)
# --hf defines the highlighted foreground color. (wx)
# --fbb defines the feedback background color. (wx)
# --fbf defines the feedback foreground color. (wx)
# --sb defines the selected background color. (wx)
# --sf defines the selected foreground color. (wx)
# --ab defines the alternating background color. (wx)
# --af defines the alternating foreground color. (wx)
# --scb defines the scrollbar background color. (wx)
# --scf defines the scrollbar foreground color. (wx)
# --bdr defines the border color. (wx)
let
bemenuColors = {
titleBackground = "#282828E0";
titleForeground = "#fbf1c7";
filterBackground = "#282828E0";
filterForeground = "#ebdbb2";
normalBackground = "#282828E0";
normalForeground = "#ebdbb2";
highlightedBackground = "#458588E0";
highlightedForeground = "#fbf1c7";
scrollbarBackground = "#282828E0";
scrollbarForeground = "#458588E0";
};
in {
home.packages = [ pkgs.bemenu ];
home.sessionVariables.BEMENU_OPTS = ''
--ignorecase \
--list 20 \
--prompt '' \
--scrollbar none \
--wrap \
--scrollbar autohide \
--no-overlap \
--monitor all \
--fn 'Inter 13px' \
--tb '${bemenuColors.titleBackground}' \
--tf '${bemenuColors.titleForeground}' \
--fb '${bemenuColors.filterBackground}' \
--ff '${bemenuColors.filterForeground}' \
--nb '${bemenuColors.normalBackground}' \
--ab '${bemenuColors.normalBackground}' \
--nf '${bemenuColors.normalForeground}' \
--af '${bemenuColors.normalForeground}' \
--hb '${bemenuColors.highlightedBackground}' \
--hf '${bemenuColors.highlightedForeground}' \
--scb '${bemenuColors.scrollbarBackground}' \
--scf '${bemenuColors.scrollbarForeground}'
'';
}