spmenu/docs/spmenu.conf
Jacob 3f456f3a37 Feature: Add the ability to take "screenshots" of spmenu.
It doesn't actually capture your screen, but rather saves the Cairo
surface to an image. The path to the image and some other options
can also be configured in the config file.

By default, Print Screen can be pressed in Normal mode with no modifier
to take a screenshot. The default location is the user's home directory,
and the file has a date attached to it. Of course, this can be changed
as well.
2023-06-30 02:44:29 +02:00

343 lines
27 KiB
Plaintext

/* 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.
screenshotfile = "NULL"; // Screenshot file path. NULL means default.
screenshotname = "NULL"; // Screenshot file name. NULL means default.
screenshotdir = "NULL"; // Screenshot file directory. 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 = "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
{ mode = 0; modifier = "None"; key = "PrintScr"; function = "screenshot"; argument = "0"; }, // Print Screen: Screenshot spmenu
{ ignoreglobalkeys = 1; } ), // Ignore hardcoded keybinds (0/1)
};