/* spmenu default configuration file * * Copy to ~/.config/spmenu/spmenu.conf to use. * Note that you can @include other config files if you want * * Arguments will always override options in this configuration file. * * Example: @include "config.conf" */ spmenu = { /* General window options */ window = ( { position = 2; // Menu position (0: Bottom, 1: Top, 2: Center) monitor = -1; // Monitor to spawn spmenu on, (-1, 0, 1, ...) protocol = 1; // Protocol to attempt to use by default (0: X11, 1: Wayland) border = 0; // X11 window border size (px) margin-vertical = 0; // Inner vertical padding (px) margin-horizontal = 0; // Inner horizontal padding (px) padding-vertical = 0; // Outer vertical padding (px) padding-horizontal = 0; // Outer horizontal padding (px) width = 0; // Width when X and/or Y offset is set, 0 is the default (px) managed = 0; // Allow your window manager to manage spmenu as a window (0/1) alpha = 1; // Enable alpha/transparency (0/1) x = 0; // X position offset (px) y = 0; // Y position offset (px) } ); /* X11 properties */ properties = ( { class = "spmenu"; // _WM_CLASS property, for compatibility you may want to set it to 'dmenu'. (text) dock = 1; // Set _NET_WM_WINDOW_TYPE_DOCK (0/1) } ); /* Text */ text = ( { font = "Noto Sans Mono 8"; // Font to use for all text (text) padding = 0; // Horizontal padding around the text globally (px) normitempadding = 0; // Horizontal padding around the normal item text (px) selitempadding = 0; // Horizontal padding around the selected item text (px) priitempadding = 0; // Horizontal padding around the high priority item text (px) leftarrow = "<"; // Left arrow text (text) rightarrow = ">"; // Right arrow text (text) password = "*"; // Password character (text) prompt = ""; // Prompt text (text) input = ""; // Input text (text) normal = "Normal"; // Normal mode text (text) insert = "Insert"; // Insert mode text (text) capslockon = "Caps Lock"; // Caps Lock On text (text) capslockoff = ""; // Caps Lock Off text (text) } ); /* Colors */ color = ( { itemnormfg = "#bbbbbb"; // Normal item foreground color (#RRGGBB) itemnormbg = "#110f1f"; // Normal item background color (#RRGGBB) itemnormfg2 = "#bbbbbb"; // Normal next item foreground color (#RRGGBB) itemnormbg2 = "#110f1f"; // Normal next item background color (#RRGGBB) itemselfg = "#110f1f"; // Selected item foreground color (#RRGGBB) itemselbg = "#8e93c2"; // Selected item background color (#RRGGBB) itemmarkedfg = "#110f1f"; // Marked item foreground color (#RRGGBB) itemmarkedbg = "#8e93c2"; // Marked item background color (#RRGGBB) itemnormprifg = "#110f1f"; // Normal priority item foreground color (#RRGGBB) itemnormpribg = "#110f1f"; // Normal priority item background color (#RRGGBB) itemselprifg = "#110f1f"; // Selected priority item foreground color (#RRGGBB) itemselpribg = "#8e93c2"; // Selected priority item background color (#RRGGBB) inputfg = "#eeeeee"; // Input foreground color (#RRGGBB) inputbg = "#110f1f"; // Input background color (#RRGGBB) menu = "#110f1f"; // Menu color (#RRGGBB) promptfg = "#110f1f"; // Prompt foreground color (#RRGGBB) promptbg = "#c66e5b"; // Prompt background color (#RRGGBB) larrowfg = "#bbbbbb"; // Left arrow foreground color (#RRGGBB) larrowbg = "#110f1f"; // Left arrow background color (#RRGGBB) rarrowfg = "#bbbbbb"; // Right arrow foreground color (#RRGGBB) rarrowbg = "#110f1f"; // Right arrow background color (#RRGGBB) hlnormfg = "#ffffff"; // Normal highlight foreground color (#RRGGBB) hlnormbg = "#000000"; // Normal highlight background color (#RRGGBB) hlselfg = "#ffffff"; // Selected highlight foreground color (#RRGGBB) hlselbg = "#000000"; // Selected highlight background color (#RRGGBB) numfg = "#110f1f"; // Match count foreground color (#RRGGBB) numbg = "#eba62a"; // Match count background color (#RRGGBB) modefg = "#110f1f"; // Mode indicator foreground color (#RRGGBB) modebg = "#92c94b"; // Mode indicator background color (#RRGGBB) capsfg = "#110f1f"; // Caps lock indicator foreground color (#RRGGBB) capsbg = "#f8d3e6"; // Caps lock indicator background color (#RRGGBB) border = "#8e93c2"; // Border color (#RRGGBB) caretfg = "#ffffff"; // Caret (cursor) foreground color (#RRGGBB) caretbg = "#110f1f"; // Caret (cursor) background color (#RRGGBB) sgr0 = "#20201d"; // SGR 0 color (#RRGGBB) sgr1 = "#d73737"; // SGR 1 color (#RRGGBB) sgr2 = "#60ac39"; // SGR 2 color (#RRGGBB) sgr3 = "#cfb017"; // SGR 3 color (#RRGGBB) sgr4 = "#6684e1"; // SGR 4 color (#RRGGBB) sgr5 = "#b854d4"; // SGR 5 color (#RRGGBB) sgr6 = "#1fad83"; // SGR 6 color (#RRGGBB) sgr7 = "#a6a28c"; // SGR 7 color (#RRGGBB) sgr8 = "#7d7a68"; // SGR 8 color (#RRGGBB) sgr9 = "#d73737"; // SGR 9 color (#RRGGBB) sgr10 = "#60ac39"; // SGR 10 color (#RRGGBB) sgr11 = "#cfb017"; // SGR 11 color (#RRGGBB) sgr12 = "#6684e1"; // SGR 12 color (#RRGGBB) sgr13 = "#b854d4"; // SGR 13 color (#RRGGBB) sgr14 = "#1fad83"; // SGR 14 color (#RRGGBB) sgr15 = "#fefbec"; // SGR 15 color (#RRGGBB) coloritems = 1; // Color the selected item (0/1) sgr = 1; // Interpret SGR sequences (0/1) } ); /* Alpha */ alpha = ( { itemnormfg = 255; // Normal item foreground alpha (0-255) itemnormbg = 200; // Normal item background alpha (0-255) itemnormfg2 = 255; // Normal next item foreground alpha (0-255) itemnormbg2 = 200; // Normal next item background alpha (0-255) itemselfg = 255; // Selected item foreground alpha (0-255) itemselbg = 200; // Selected item background alpha (0-255) itemmarkedfg = 255; // Marked item foreground alpha (0-255) itemmarkedbg = 200; // Marked item background alpha (0-255) itemnormprifg = 255; // Normal priority item foreground alpha (0-255) itemnormpribg = 200; // Normal priority item background alpha (0-255) itemselprifg = 255; // Selected priority item foreground alpha (0-255) itemselpribg = 200; // Selected priority item background alpha (0-255) inputfg = 255; // Input foreground alpha (0-255) inputbg = 200; // Input background alpha (0-255) menu = 200; // Menu alpha (0-255) promptfg = 255; // Prompt foreground alpha (0-255) promptbg = 200; // Prompt background alpha (0-255) larrowfg = 255; // Left arrow foreground alpha (0-255) larrowbg = 200; // Left arrow background alpha (0-255) rarrowfg = 255; // Right arrow foreground alpha (0-255) rarrowbg = 200; // Right arrow background alpha (0-255) hlnormfg = 255; // Normal highlight foreground alpha (0-255) hlnormbg = 200; // Normal highlight background alpha (0-255) hlselfg = 255; // Selected highlight foreground alpha (0-255) hlselbg = 200; // Selected highlight background alpha (0-255) numfg = 255; // Match count foreground alpha (0-255) numbg = 200; // Match count background alpha (0-255) border = 255; // Border alpha (0-255) caretfg = 255; // Caret (cursor) foreground alpha (0-255) caretbg = 200; // Caret (cursor) background alpha (0-255) modefg = 255; // Mode indicator foreground alpha (0-255) modebg = 200; // Mode indicator background alpha (0-255) capsfg = 255; // Caps Lock indicator foreground alpha (0-255) capsbg = 200; // Caps Lock indicator background alpha (0-255) } ); /* Powerline options */ powerline = ( { promptstyle = 2; // Prompt powerline style (0: >, 1: \, 2: )) matchcountstyle = 2; // Match count powerline style (0: <, 1: /, 2: () modestyle = 2; // Mode indicator powerline style (0: <, 1: /, 2: () capsstyle = 2; // Caps lock indicator powerline style (0: <, 1: /, 2: () itemstyle = 2; // Item powerline style (0: <, 1: /, 2: () prompt = 1; // Enable prompt powerline (0/1) matchcount = 1; // Enable match count powerline (0/1) mode = 1; // Enable mode indicator powerline (0/1) caps = 1; // Enable caps lock indicator powerline (0/1) item = 1; // Enable item powerline (0/1) } ); /* Hide options */ hide = ( { input = 0; // Hide input (0/1) larrow = 0; // Hide left arrow (0/1) rarrow = 0; // Hide right arrow (0/1) items = 0; // Hide items (0/1) prompt = 0; // Hide prompt (0/1) powerline = 0; // Hide powerline (0/1) caret = 0; // Hide caret (cursor) (0/1) highlight = 0; // Hide highlighting (0/1) matchcount = 0; // Hide match count (0/1) mode = 0; // Hide mode indicator (0/1) caps = 0; // Hide caps lock indicator (0/1) image = 0; // Hide images (0/1) } ); /* Match options */ match = ( { sort = 1; // Sort items (0/1) casesensitive = 0; // Enable case sensitivity when matching (0/1) fuzzy = 1; // Enable fuzzy finding (0/1) preselected = 0; // Preselect an item, 0 is the first item (number) mark = 1; // Allow marking/selecting multiple items (0/1) delimiters = " "; // Word delimiter, used to delete words (text) listfile = "NULL"; // File to read entries from. If set to NULL standard input is read. This is read every time a key is pressed. (text) } ); /* Line options */ line = ( { height = 1; // Height of each line (px) lines = 0; // Number of lines (number) columns = 10; // Number of columns (number) overridelines = 1; // Allow overriding lines using keybinds (0/1) overridecolumns = 1; // Allow overriding columns using keybinds (0/1) indentitems = 0; // Indent items to prompt width (0/1) } ); /* History options */ history = ( { max = 64; // Max number of entries (number) duplicate = 0; // Save duplicate entries (0/1) } ); /* Centered options */ center = ( { width = 1000; // Menu width when centered (px) } ); /* Image options */ image = ( { width = 200; // Image width (px) height = 200; // Image height (px) resize = 1; // Allow spmenu to resize itself to fit the image (0/1) gaps = 0; // Image gaps (px) position = 0; // Image position (0: Top, 1: Bottom, 2: Center, 3: Top center) cache = 1; // Cache images (0/1) maxcache = 512; // Max image size to cache (px) cachedir = "default"; // Cache directory. "default" means spmenu will determine automatically based on $XDG_CACHE_DIR } ); /* File options */ file = ( { xresources = 1; // Load .Xresources on startup (0/1) global = 1; // Read global .Xresources colors, programs like Pywal use this. (*.color0, *.color1, etc.) (0/1) theme = 1; // Load theme (~/.config/spmenu/theme.conf) on runtime binds = 1; // Load binds (~/.config/spmenu/binds.conf) on runtime themefile = "NULL"; // Path to theme file to load on runtime. NULL means default. bindsfile = "NULL"; // Path to binds file to load on runtime. NULL means default. } ); /* Input options */ input = ( { fast = 1; // Grab keyboard before matching entries (0/1) type = 1; // Allow typing password = 0; // Don't read standard input and replace all characters with the password character (0/1) } ); /* Caret options */ caret = ( { width = 0; // Caret width (0: Default) (px) height = 0; // Caret height (0: Default) (px) padding = 0; // Caret padding (px) } ); /* Output options */ output = ( { printindex = 0; // Print index instead of actual text (0/1) incremental = 0; // Print text on every keypress (0/1) } ); /* Mode options */ mode = ( { default = 0; // Mode to start spmenu in (0: Normal mode, 1: Insert mode) } ); /* Pango markup options */ pango = ( { item = 1; // Interpret Pango markup for items (0/1) highlight = 1; // Intepret Pango markup for highlighting (0/1) prompt = 1; // Interpret Pango markup for the prompt (0/1) input = 1; // Interpret Pango markup for the input (0/1) leftarrow = 0; // Interpret Pango markup for the left arrow (0/1) rightarrow = 0; // Interpret Pango markup for the right arrow (0/1) numbers = 0; // Interpret Pango markup for the match count (0/1) mode = 0; // Interpret Pango markup for the mode indicator (0/1) caps = 0; // Interpret Pango markup for the caps lock indicator (0/1) password = 0; // Interpret Pango markup for password input (0/1) } ); /* Mouse bindings * * See https://spmenu.speedie.site/Configurable+keybindings for a list of valid options. */ mouse = ( /* Click Button Function Argument */ { click = "ClickInput"; button = "Left Click"; function = "clear"; argument = "0"; }, // Left click on input: Clear the input { click = "ClickPrompt"; button = "Left Click"; function = "clear"; argument = "0"; }, // Left click on prompt: Clear the input { click = "ClickMode"; button = "Left Click"; function = "switchmode"; argument = "0"; }, // Left click on the mode indicator: Toggle mode { click = "ClickNumber"; button = "Left Click"; function = "viewhist"; argument = "0"; }, // Click on the match count: Toggle viewing history buffer { click = "ClickSelItem"; button = "Left Click"; function = "None"; argument = "0"; }, // Left click on an item: Select it { ignoreglobalmouse = 1; } ); // Ignore hardcoded mouse binds (0/1) /* Keys * * Please note that at least on the US standard keyboard layout, * `key` will differ if Shift is held down and the key is a number or symbol. * * See https://spmenu.speedie.site/Configurable+keybindings for a list of valid options. */ keys = ( /* Mode Modifier Key Function Argument */ { mode = -1; modifier = "None"; key = "Enter"; function = "selectitem"; argument = "+1"; }, // Enter: Select item { mode = -1; modifier = "Shift"; key = "Enter"; function = "selectitem"; argument = "0"; }, // Shift+Enter: Select input { mode = -1; modifier = "Ctrl"; key = "Enter"; function = "markitem"; argument = "0"; }, // Ctrl+Enter: Mark input { mode = -1; modifier = "None"; key = "Tab"; function = "complete"; argument = "0"; }, // Tab: Tab complete { mode = -1; modifier = "Ctrl"; key = "v"; function = "paste"; argument = "2"; }, // Ctrl+v: Paste from clipboard { mode = -1; modifier = "Ctrl+Shift"; key = "v"; function = "paste"; argument = "1"; }, // Ctrl+Shift+v: Paste from selection { mode = -1; modifier = "None"; key = "Backspace"; function = "backspace"; argument = "0"; }, // Backspace: Backspace { mode = -1; modifier = "Ctrl"; key = "Backspace"; function = "deleteword"; argument = "0"; }, // Ctrl+Backspace: Delete word { mode = -1; modifier = "Ctrl"; key = "Left"; function = "moveword"; argument = "-1"; }, // Ctrl+Left: Move caret (cursor) one word to the left { mode = -1; modifier = "Ctrl"; key = "Right"; function = "moveword"; argument = "+1"; }, // Ctrl+Right: Move caret (cursor) one word to the right { mode = -1; modifier = "None"; key = "Left"; function = "movecursor"; argument = "-1"; }, // Left: Move caret (cursor) one character to the left { mode = -1; modifier = "None"; key = "Right"; function = "movecursor"; argument = "+1"; }, // Right: Move caret (cursor) one character to the right { mode = -1; modifier = "Ctrl"; key = "k"; function = "setlines"; argument = "+1"; }, // Ctrl+k: Increase lines by 1 { mode = -1; modifier = "Ctrl"; key = "j"; function = "setlines"; argument = "-1"; }, // Ctrl+j: Decrease lines by 1 { mode = -1; modifier = "Ctrl+Alt+Shift"; key = "k"; function = "setlines"; argument = "+5"; }, // Ctrl+Alt+Shift+k: Increase lines by 5 { mode = -1; modifier = "Ctrl+Alt+Shift"; key = "j"; function = "setlines"; argument = "-5"; }, // Ctrl+Alt+Shift+j: Decrease lines by 5 { mode = -1; modifier = "Ctrl"; key = "l"; function = "setcolumns"; argument = "+1"; }, // Ctrl+l: Increase columns by 1 { mode = -1; modifier = "Ctrl"; key = "h"; function = "setcolumns"; argument = "-1"; }, // Ctrl+h: Decrease columns by 1 { mode = -1; modifier = "Ctrl+Alt+Shift"; key = "h"; function = "setcolumns"; argument = "+5"; }, // Ctrl+Alt+Shift+h: Increase columns by 5 { mode = -1; modifier = "Ctrl+Alt+Shift"; key = "l"; function = "setcolumns"; argument = "-5"; }, // Ctrl+Alt+Shift+l: Decrease columns by 5 { mode = -1; modifier = "Ctrl+Shift"; key = "p"; function = "setprofile"; argument = "0"; }, // Ctrl+Shift+p: Open profile menu { mode = 1; modifier = "None"; key = "Esc"; function = "switchmode"; argument = "0"; }, // Escape: Switch mode { mode = 0; modifier = "None"; key = "i"; function = "switchmode"; argument = "0"; }, // i: Switch mode { mode = 0; modifier = "None"; key = "/"; function = "switchmode"; argument = "0"; }, // /: Switch mode { mode = 0; modifier = "Ctrl"; key = "="; function = "setimgsize"; argument = "+1"; }, // Ctrl+=: Increase image size by 1 { mode = 0; modifier = "Ctrl"; key = "-"; function = "setimgsize"; argument = "-1"; }, // Ctrl+-: Decrease image size by 1 { mode = 0; modifier = "None"; key = "="; function = "setimgsize"; argument = "+10"; }, // -: Increase image size by 10 { mode = 0; modifier = "None"; key = "-"; function = "setimgsize"; argument = "-10"; }, // =: Decrease image size by 10 { mode = 0; modifier = "Shift"; key = "+"; function = "setimgsize"; argument = "+100"; }, // Shift+=: Increase image size by 100 { mode = 0; modifier = "Shift"; key = "_"; function = "setimgsize"; argument = "-100"; }, // Shift+-: Decrease image size by 100 { mode = 0; modifier = "Shift"; key = ")"; function = "defaultimg"; argument = "0"; }, // Shift+0: Set image size to the default { mode = 0; modifier = "None"; key = "o"; function = "setimgpos"; argument = "+1"; }, // o: Toggle image position { mode = 0; modifier = "None"; key = "p"; function = "paste"; argument = "2"; }, // p: Paste from clipboard { mode = 0; modifier = "Ctrl"; key = "1"; function = "setimggaps"; argument = "-1"; }, // Ctrl+1: Decrease image gaps by 1 { mode = 0; modifier = "Ctrl"; key = "2"; function = "setimggaps"; argument = "+1"; }, // Ctrl+2: Increase image gaps by 1 { mode = 0; modifier = "None"; key = "1"; function = "setimggaps"; argument = "-10"; }, // 1: Decrease image gaps by 10 { mode = 0; modifier = "None"; key = "2"; function = "setimggaps"; argument = "+10"; }, // 2: Increase image gaps by 10 { mode = 0; modifier = "Shift"; key = "!"; function = "setimggaps"; argument = "-100"; }, // Shift+1: Decrease image gaps by 100 { mode = 0; modifier = "Shift"; key = "@"; function = "setimggaps"; argument = "+100"; }, // Shift+2: Increase image gaps by 100 { mode = 0; modifier = "None"; key = "t"; function = "toggleimg"; argument = "0"; }, // t: Toggle image { mode = 0; modifier = "None"; key = "f"; function = "togglefullimg"; argument = "0"; }, // f: Toggle image full screen mode { mode = 0; modifier = "None"; key = "q"; function = "flipimg"; argument = "1"; }, // q: Flip image horizontally { mode = 0; modifier = "None"; key = "w"; function = "flipimg"; argument = "0"; }, // w: Flip image vertically { mode = 0; modifier = "None"; key = "k"; function = "moveup"; argument = "0"; }, // k: Move up 1 item { mode = 0; modifier = "None"; key = "j"; function = "movedown"; argument = "0"; }, // j: Move down 1 item { mode = 0; modifier = "None"; key = "h"; function = "moveleft"; argument = "0"; }, // h: Move left 1 item { mode = 0; modifier = "None"; key = "l"; function = "moveright"; argument = "0"; }, // l: Move right 1 item { mode = 0; modifier = "Ctrl"; key = "u"; function = "moveup"; argument = "5"; }, // Ctrl+u: Move up 5 items { mode = 0; modifier = "Ctrl"; key = "d"; function = "movedown"; argument = "5"; }, // Ctrl+d: Move down 5 items { mode = 0; modifier = "None"; key = "u"; function = "togglehighlight"; argument = "0"; }, // Ctrl+u: Toggle highlighting { mode = 0; modifier = "Shift"; key = "h"; function = "viewhist"; argument = "0"; }, // Shift+h: Toggle viewing history buffer { mode = 0; modifier = "None"; key = "d"; function = "clear"; argument = "0"; }, // d: Clear the input { mode = 0; modifier = "Shift"; key = "d"; function = "clearins"; argument = "0"; }, // Shift+d: Clear the input and enter insert mode { mode = 0; modifier = "None"; key = "Esc"; function = "quit"; argument = "0"; }, // Esc: Exit { mode = 0; modifier = "None"; key = "Home"; function = "movestart"; argument = "0"; }, // Home: Move to the start { mode = 0; modifier = "None"; key = "End"; function = "moveend"; argument = "0"; }, // End: Move to the end { mode = 0; modifier = "None"; key = "g"; function = "movestart"; argument = "0"; }, // g: Move to the start { mode = 0; modifier = "Shift"; key = "g"; function = "moveend"; argument = "0"; }, // Shift+g: Move to the end { mode = 0; modifier = "None"; key = "Next"; function = "movenext"; argument = "0"; }, // Next: Move to the next entry (redo) { mode = 0; modifier = "None"; key = "Prior"; function = "moveprev"; argument = "0"; }, // Prior: Move to the previous entry (undo) { mode = 0; modifier = "Ctrl"; key = "p"; function = "navhistory"; argument = "-1"; }, // Alt+p: Navigate to the previous entry in the history buffer { mode = 0; modifier = "Ctrl"; key = "n"; function = "navhistory"; argument = "+1"; }, // Alt+n: Navigate to the next entry in the history buffer { ignoreglobalkeys = 1; } ), // Ignore hardcoded keybinds (0/1) };