From 45312afc7c032162f361caad6b4a178f410f3d19 Mon Sep 17 00:00:00 2001 From: speedie Date: Sat, 29 Apr 2023 15:30:51 +0200 Subject: [PATCH] center by default, add comments to config file --- docs/example.Xresources | 2 +- docs/spmenu.conf | 381 ++++++++++++++++++++-------------------- options.h | 2 +- 3 files changed, 197 insertions(+), 188 deletions(-) diff --git a/docs/example.Xresources b/docs/example.Xresources index b70e6ef..ea051ca 100644 --- a/docs/example.Xresources +++ b/docs/example.Xresources @@ -120,7 +120,7 @@ spmenu.sortmatches: 1 spmenu.casesensitive: 0 !! Menu -spmenu.menuposition: 1 +spmenu.menuposition: 2 spmenu.menupaddingv: 0 spmenu.menupaddingh: 0 spmenu.menuwidth: 0 diff --git a/docs/spmenu.conf b/docs/spmenu.conf index 7f2009b..36edaf2 100644 --- a/docs/spmenu.conf +++ b/docs/spmenu.conf @@ -3,217 +3,221 @@ * 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 = 1; - border = 0; - margin-vertical = 0; - margin-horizontal = 0; - padding-vertical = 0; - padding-horizontal = 0; - x = 0; - y = 0; - width = 0; - monitor = -1; - managed = 0; - alpha = 1; +spmenu = { + /* General window options */ + window = ( { position = 2; // Menu position (0: Bottom, 1: Top, 2: Center) + border = 0; // 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) + x = 0; // X position offset (px) + y = 0; // Y position offset (px) + width = 0; // Width when X and/or Y offset is set, 0 is the default (px) + monitor = -1; // Monitor to spawn spmenu on, (-1, 0, 1, ...) + managed = 0; // Allow your window manager to manage spmenu as a window (0/1) + alpha = 1; // Enable alpha/transparency (0/1) } ); - // Properties - properties = ( { class = "spmenu"; - dock = 1; + /* 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"; - padding = 0; - leftarrow = "<"; - rightarrow = ">"; - password = "*"; - prompt = ""; - input = ""; - capslockon = "Caps Lock"; - capslockoff = ""; + /* Text */ + text = ( { font = "Noto Sans Mono 8"; // Font to use for all text (text) + padding = 0; // Horizontal padding around the text (px) + leftarrow = "<"; // Left arrow text (text) + rightarrow = ">"; // Right arrow text (text) + password = "*"; // Password character (text) + prompt = ""; // Prompt text (text) + input = ""; // Input text (text) + capslockon = "Caps Lock"; // Caps Lock On text (text) + capslockoff = ""; // Caps Lock Off text (text) } ); - // Color - color = ( { itemnormfg = "#bbbbbb"; - itemnormbg = "#222222"; - itemselfg = "#eeeeee"; - itemselbg = "#35638A"; - itemnormprifg = "#bbbbbb"; - itemnormpribg = "#222222"; - itemselprifg = "#eeeeee"; - itemselpribg = "#35638A"; - inputfg = "#eeeeee"; - inputbg = "#222222"; - menu = "#222222"; - promptfg = "#eeeeee"; - promptbg = "#35526b"; - larrowfg = "#bbbbbb"; - larrowbg = "#222222"; - rarrowfg = "#bbbbbb"; - rarrowbg = "#222222"; - hlnormfg = "#ffffff"; - hlnormbg = "#000000"; - hlselfg = "#ffffff"; - hlselbg = "#000000"; - numfg = "#ffffff"; - numbg = "#2d3856"; - modefg = "#ffffff"; - modebg = "#35638A"; - capsfg = "#ffffff"; - capsbg = "#45638A"; - border = "#35638A"; - caretfg = "#ffffff"; - caretbg = "#222222"; - sgr0 = "#000000"; - sgr1 = "#7f0000"; - sgr2 = "#007f00"; - sgr3 = "#7f7f00"; - sgr4 = "#00007f"; - sgr5 = "#7f007f"; - sgr6 = "#007f7f"; - sgr7 = "#cccccc"; - sgr8 = "#333333"; - sgr9 = "#ff0000"; - sgr10 = "#00ff00"; - sgr11 = "#ffff00"; - sgr12 = "#0000ff"; - sgr13 = "#ff00ff"; - sgr14 = "#00ffff"; - sgr15 = "#ffffff"; - coloritems = 1; - sgr = 1; + /* Colors */ + color = ( { itemnormfg = "#bbbbbb"; // Normal item foreground color (#RRGGBB) + itemnormbg = "#222222"; // Normal item background color (#RRGGBB) + itemselfg = "#eeeeee"; // Selected item foreground color (#RRGGBB) + itemselbg = "#35638A"; // Selected item background color (#RRGGBB) + itemnormprifg = "#bbbbbb"; // Normal priority item foreground color (#RRGGBB) + itemnormpribg = "#222222"; // Normal priority item background color (#RRGGBB) + itemselprifg = "#eeeeee"; // Selected priority item foreground color (#RRGGBB) + itemselpribg = "#35638A"; // Selected priority item background color (#RRGGBB) + inputfg = "#eeeeee"; // Input foreground color (#RRGGBB) + inputbg = "#222222"; // Input background color (#RRGGBB) + menu = "#222222"; // Menu color (#RRGGBB) + promptfg = "#eeeeee"; // Prompt foreground color (#RRGGBB) + promptbg = "#35526b"; // Prompt background color (#RRGGBB) + larrowfg = "#bbbbbb"; // Left arrow foreground color (#RRGGBB) + larrowbg = "#222222"; // Left arrow background color (#RRGGBB) + rarrowfg = "#bbbbbb"; // Right arrow foreground color (#RRGGBB) + rarrowbg = "#222222"; // 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 = "#ffffff"; // Match count foreground color (#RRGGBB) + numbg = "#2d3856"; // Match count background color (#RRGGBB) + modefg = "#ffffff"; // Mode indicator foreground color (#RRGGBB) + modebg = "#35638A"; // Mode indicator background color (#RRGGBB) + capsfg = "#ffffff"; // Caps lock indicator foreground color (#RRGGBB) + capsbg = "#45638A"; // Caps lock indicator background color (#RRGGBB) + border = "#35638A"; // Border color (#RRGGBB) + caretfg = "#ffffff"; // Caret (cursor) foreground color (#RRGGBB) + caretbg = "#222222"; // Caret (cursor) background color (#RRGGBB) + sgr0 = "#000000"; // SGR 0 color (#RRGGBB) + sgr1 = "#7f0000"; // SGR 1 color (#RRGGBB) + sgr2 = "#007f00"; // SGR 2 color (#RRGGBB) + sgr3 = "#7f7f00"; // SGR 3 color (#RRGGBB) + sgr4 = "#00007f"; // SGR 4 color (#RRGGBB) + sgr5 = "#7f007f"; // SGR 5 color (#RRGGBB) + sgr6 = "#007f7f"; // SGR 6 color (#RRGGBB) + sgr7 = "#cccccc"; // SGR 7 color (#RRGGBB) + sgr8 = "#333333"; // SGR 8 color (#RRGGBB) + sgr9 = "#ff0000"; // SGR 9 color (#RRGGBB) + sgr10 = "#00ff00"; // SGR 10 color (#RRGGBB) + sgr11 = "#ffff00"; // SGR 11 color (#RRGGBB) + sgr12 = "#0000ff"; // SGR 12 color (#RRGGBB) + sgr13 = "#ff00ff"; // SGR 13 color (#RRGGBB) + sgr14 = "#00ffff"; // SGR 14 color (#RRGGBB) + sgr15 = "#ffffff"; // SGR 15 color (#RRGGBB) + coloritems = 1; // Color the selected item (0/1) + sgr = 1; // Interpret SGR sequences (0/1) } ); - // Alpha options - alpha = ( { itemnormfg = 255; - itemnormbg = 200; - itemselfg = 255; - itemselbg = 200; - itemnormprifg = 255; - itemnormpribg = 200; - itemselprifg = 255; - itemselpribg = 200; - inputfg = 255; - inputbg = 200; - menu = 200; - promptfg = 255; - promptbg = 200; - larrowfg = 255; - larrowbg = 200; - rarrowfg = 255; - rarrowbg = 200; - hlnormfg = 255; - hlnormbg = 200; - hlselfg = 255; - hlselbg = 200; - numfg = 255; - numbg = 200; - border = 255; - caretfg = 255; - caretbg = 200; - modefg = 255; - modebg = 200; - capsfg = 255; - capsbg = 200; + /* Alpha */ + alpha = ( { itemnormfg = 255; // Normal item foreground alpha (0-255) + itemnormbg = 200; // Normal item background alpha (0-255) + itemselfg = 255; // Selected item foreground alpha (0-255) + itemselbg = 200; // Selected 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 = 0; - matchcountstyle = 0; - modestyle = 0; - capsstyle = 0; - prompt = 1; - matchcount = 1; - mode = 1; - caps = 1; + /* Powerline options */ + powerline = ( { promptstyle = 0; // Prompt powerline style (0: >, 1: \) + matchcountstyle = 0; // Match count powerline style (0: <, 1: /) + modestyle = 0; // Mode indicator powerline style (0: <, 1: /) + capsstyle = 0; // Caps lock indicator powerline style (0: <, 1: /) + 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) } ); - // Hide options - hide = ( { input = 0; - larrow = 0; - rarrow = 0; - items = 0; - prompt = 0; - powerline = 0; - caret = 0; - highlight = 0; - matchcount = 0; - mode = 0; - caps = 0; - image = 0; + /* 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; - casesensitive = 0; - fuzzy = 1; - preselected = 0; - accuratewidth = 1; - delimiters = " "; + /* 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) + accuratewidth = 1; // Enable accurate width, could be noticeably slower in some cases (0/1) + delimiters = " "; // Word delimiter, used to delete words (text) } ); - // Line options - line = ( { height = 1; - lines = 0; - columns = 10; - indentitems = 1; + /* Line options */ + line = ( { height = 1; // Height of each line (px) + lines = 0; // Number of lines (number) + columns = 10; // Number of columns (number) + indentitems = 1; // Indent items to prompt width (0/1) } ); - // History options - history = ( { max = 64; - duplicate = 0; + /* History options */ + history = ( { max = 64; // Max number of entries (number) + duplicate = 0; // Save duplicate entries (0/1) } ); - // Centered menu - center = ( { width = 1000; + /* Centered options */ + center = ( { width = 1000; // Menu width when centered (px) } ); - // Image - image = ( { width = 200; - height = 200; - gaps = 0; - position = 0; - cache = 1; - maxcache = 512; + /* Image options */ + image = ( { width = 200; // Image width (px) + height = 200; // Image height (px) + 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 width/height to cache (px) + } ); + + /* .Xresources/Xrdb options */ + xrdb = ( { xresources = 1; // Load .Xresources on startup (0/1) + global = 1; // Read global .Xresources colors, programs like Pywal use this. (*.color0, *.color1, etc.) (0/1) + } ); + + /* 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) + } ); + + /* Mode options */ + mode = ( { default = 0; // Mode to start spmenu in (0: Normal mode, 1: Insert mode) + normal_text = "Normal"; // Normal mode text (text) + insert_text = "Insert"; // Insert mode text (text) } ); - // Xrdb - xrdb = ( { xresources = 1; - global = 1; - } ); - - // Input - input = ( { fast = 1; - type = 1; - password = 0; - } ); - - // Mode - mode = ( { default = 0; - normal_text = "Normal"; - insert_text = "Insert"; - } ); - - // Pango - pango = ( { item = 1; - highlight = 1; - prompt = 1; - input = 1; - leftarrow = 0; - rightarrow = 0; - numbers = 0; - mode = 0; - caps = 0; - password = 0; + /* 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 + /* Mouse bindings + * + * See https://spmenu.speedie.site/index.php/Configurable+keybindings for a list of valid options. + */ mouse = ( { click = "clickinput"; modifier = "None"; button = "Left Click"; @@ -245,9 +249,13 @@ spmenu = argument = "0"; }, - { ignoreglobalmouse = 1; } ); + { ignoreglobalmouse = 1; // Ignore hardcoded mouse binds (0/1) + } ); - // Keys + /* Keys + * + * See https://spmenu.speedie.site/index.php/Configurable+keybindings for a list of valid options. + */ keys = ( { mode = -1; modifier = "None"; key = "Enter"; @@ -615,5 +623,6 @@ spmenu = argument = "+1"; }, - { ignoreglobalkeys = 1; } ), + { ignoreglobalkeys = 1; // Ignore hardcoded keybinds (0/1) + } ), }; diff --git a/options.h b/options.h index ddb8b72..f38f2e2 100644 --- a/options.h +++ b/options.h @@ -14,7 +14,7 @@ static int mon = -1; /* Monitor to run spmenu on */ /* Window options */ static int alpha = 1; /* Enable alpha */ -static int menuposition = 1; /* Position of the menu (0: Bottom, 1: Top, 2: Center */ +static int menuposition = 2; /* Position of the menu (0: Bottom, 1: Top, 2: Center */ static int menupaddingv = 0; /* Vertical padding inside the menu (in pixels) */ static int menupaddingh = 0; /* Horizontal padding inside the menu (in pixels) */ static int menuwidth = 0; /* spmenu width when setting X/Y position */