From e7daa3ef6ad99afb556dfbffec1193fdc9a62ce7 Mon Sep 17 00:00:00 2001 From: speedie Date: Thu, 30 Mar 2023 19:06:04 +0200 Subject: [PATCH] add option to ignore global --- docs/docs.md | 6 +++ docs/example.Xresources | 1 + libs/argv.c | 10 +++++ libs/xrdb.c | 8 ++++ libs/xresources.h | 94 ++++++++++++++++++++--------------------- options.h | 1 + spmenu.1 | 6 +++ 7 files changed, 79 insertions(+), 47 deletions(-) diff --git a/docs/docs.md b/docs/docs.md index f786adb..d3dbfb3 100644 --- a/docs/docs.md +++ b/docs/docs.md @@ -214,6 +214,12 @@ You may use long, descriptive arguments or the shorter arguments. `-nxrdb, --no-xrdb ` : Don't load .Xresources on runtime +`-gbc, --global-colors ` +: Recognize global colors (such as *.color1) on runtime + +`-ngbc, --no-global-colors ` +: Don't recognize global colors (such as *.color1) on runtime + `-m, --monitor monitor ` : Specify a monitor to run spmenu on diff --git a/docs/example.Xresources b/docs/example.Xresources index 6733210..2dcadc5 100644 --- a/docs/example.Xresources +++ b/docs/example.Xresources @@ -53,6 +53,7 @@ spmenu.col_sgrcolor14: #00ffff spmenu.col_sgrcolor15: #ffffff !! Misc color +spmenu.globalcolors: 1 spmenu.alpha: 1 !! Width diff --git a/libs/argv.c b/libs/argv.c index c534593..29da8c1 100644 --- a/libs/argv.c +++ b/libs/argv.c @@ -16,6 +16,10 @@ readargs(int argc, char *argv[]) loadconfig = 1; } else if (!strcmp(argv[j], "-ncfg") || (!strcmp(argv[j], "--no-load-config"))) { loadconfig = 0; + } else if (!strcmp(argv[j], "-gbc") || (!strcmp(argv[j], "--global-colors"))) { + globalcolors = 1; + } else if (!strcmp(argv[j], "-ngbc") || (!strcmp(argv[j], "--no-global-colors"))) { + globalcolors = 0; } } @@ -150,6 +154,10 @@ readargs(int argc, char *argv[]) || !strcmp(argv[i], "-ncfg") || !strcmp(argv[i], "--load-config") || !strcmp(argv[i], "--no-load-config") + || !strcmp(argv[i], "-gbc") + || !strcmp(argv[i], "-ngbc") + || !strcmp(argv[i], "--global-colors") + || !strcmp(argv[i], "--no-global-colors") )) continue; else @@ -412,6 +420,8 @@ usage(void) "spmenu -si, --show-image Show image\n" "spmenu -xrdb, --xrdb Load .Xresources on runtime\n" "spmenu -nxrdb, --no-xrdb Don't load .Xresources on runtime\n" + "spmenu -gbc, --global-colors Recognize global colors (such as *.color1) on runtime\n" + "spmenu -ngbc, --no-global-colors Don't recognize global colors (such as *.color1) on runtime\n" "spmenu -m, --monitor Specify a monitor to run spmenu on\n" "spmenu -w, --embed Embed spmenu inside \n" "spmenu -H, --hist-file Specify a path to save the history to\n" diff --git a/libs/xrdb.c b/libs/xrdb.c index 407d2b1..405dd29 100644 --- a/libs/xrdb.c +++ b/libs/xrdb.c @@ -41,7 +41,15 @@ load_xresources(void) if (!resm) return; db = XrmGetStringDatabase(resm); + for (p = resources; p < resources + LENGTH(resources); p++) resource_load(db, p->name, p->type, p->dst); + + // recognize global colors + if (globalcolors) { + for (p = cols; p < cols + LENGTH(cols); p++) + resource_load(db, p->name, p->type, p->dst); + } + XCloseDisplay(display); } diff --git a/libs/xresources.h b/libs/xresources.h index 6e6b887..ff50c93 100644 --- a/libs/xresources.h +++ b/libs/xresources.h @@ -29,35 +29,6 @@ ResourcePref resources[] = { { "col_promptfg", STRING, &col_promptfg }, { "col_promptbg", STRING, &col_promptbg }, - // Universal colors - { "color10", STRING, &col_caretfgcolor }, - { "color4", STRING, &col_larrowfg }, - { "color4", STRING, &col_rarrowfg }, - { "color10", STRING, &col_itemnormfg }, - { "color10", STRING, &col_itemnormprifg }, - { "color10", STRING, &col_inputfg }, - { "color0", STRING, &col_itemnormbg }, - { "color0", STRING, &col_itemnormpribg }, - { "color0", STRING, &col_menubgcolor }, - { "color0", STRING, &col_larrowbg }, - { "color0", STRING, &col_rarrowbg }, - { "color0", STRING, &col_itemselfg }, - { "color0", STRING, &col_itemselprifg }, - { "color0", STRING, &col_inputbg }, - { "color12", STRING, &col_promptbg }, - { "color0", STRING, &col_promptfg }, - { "color6", STRING, &col_itemselbg }, - { "color6", STRING, &col_itemselpribg }, - { "color6", STRING, &col_bordercolor }, - { "color0", STRING, &col_numfgcolor }, - { "color5", STRING, &col_numbgcolor }, - { "color0", STRING, &col_modefgcolor }, - { "color7", STRING, &col_modebgcolor }, - { "color2", STRING, &col_normhlbgcolor }, - { "color3", STRING, &col_selhlbgcolor }, - { "color0", STRING, &col_normhlfgcolor }, - { "color0", STRING, &col_selhlfgcolor }, - // SGR sequence colors { "col_sgrcolor0", STRING, &col_sgrcolor0 }, { "col_sgrcolor1", STRING, &col_sgrcolor1 }, @@ -76,24 +47,7 @@ ResourcePref resources[] = { { "col_sgrcolor14", STRING, &col_sgrcolor14 }, { "col_sgrcolor15", STRING, &col_sgrcolor15 }, - // SGR sequence colors (universal) - { "color0", STRING, &col_sgrcolor0 }, - { "color1", STRING, &col_sgrcolor1 }, - { "color2", STRING, &col_sgrcolor2 }, - { "color3", STRING, &col_sgrcolor3 }, - { "color4", STRING, &col_sgrcolor4 }, - { "color5", STRING, &col_sgrcolor5 }, - { "color6", STRING, &col_sgrcolor6 }, - { "color7", STRING, &col_sgrcolor7 }, - { "color8", STRING, &col_sgrcolor8 }, - { "color9", STRING, &col_sgrcolor9 }, - { "color10", STRING, &col_sgrcolor10 }, - { "color11", STRING, &col_sgrcolor11 }, - { "color12", STRING, &col_sgrcolor12 }, - { "color13", STRING, &col_sgrcolor13 }, - { "color14", STRING, &col_sgrcolor14 }, - { "color15", STRING, &col_sgrcolor15 }, - + { "globalcolors", INTEGER, &globalcolors }, { "coloritems", INTEGER, &coloritems }, { "menuposition", INTEGER, &menuposition }, { "menupaddingv", INTEGER, &menupaddingv }, @@ -149,3 +103,49 @@ ResourcePref resources[] = { { "pango_password", INTEGER, &pango_password }, { "pango_highlight", INTEGER, &pango_highlight }, }; + +ResourcePref cols[] = { + { "color10", STRING, &col_caretfgcolor }, + { "color4", STRING, &col_larrowfg }, + { "color4", STRING, &col_rarrowfg }, + { "color10", STRING, &col_itemnormfg }, + { "color10", STRING, &col_itemnormprifg }, + { "color10", STRING, &col_inputfg }, + { "color0", STRING, &col_itemnormbg }, + { "color0", STRING, &col_itemnormpribg }, + { "color0", STRING, &col_menubgcolor }, + { "color0", STRING, &col_larrowbg }, + { "color0", STRING, &col_rarrowbg }, + { "color0", STRING, &col_itemselfg }, + { "color0", STRING, &col_itemselprifg }, + { "color0", STRING, &col_inputbg }, + { "color12", STRING, &col_promptbg }, + { "color0", STRING, &col_promptfg }, + { "color6", STRING, &col_itemselbg }, + { "color6", STRING, &col_itemselpribg }, + { "color6", STRING, &col_bordercolor }, + { "color0", STRING, &col_numfgcolor }, + { "color5", STRING, &col_numbgcolor }, + { "color0", STRING, &col_modefgcolor }, + { "color7", STRING, &col_modebgcolor }, + { "color2", STRING, &col_normhlbgcolor }, + { "color3", STRING, &col_selhlbgcolor }, + { "color0", STRING, &col_normhlfgcolor }, + { "color0", STRING, &col_selhlfgcolor }, + { "color0", STRING, &col_sgrcolor0 }, + { "color1", STRING, &col_sgrcolor1 }, + { "color2", STRING, &col_sgrcolor2 }, + { "color3", STRING, &col_sgrcolor3 }, + { "color4", STRING, &col_sgrcolor4 }, + { "color5", STRING, &col_sgrcolor5 }, + { "color6", STRING, &col_sgrcolor6 }, + { "color7", STRING, &col_sgrcolor7 }, + { "color8", STRING, &col_sgrcolor8 }, + { "color9", STRING, &col_sgrcolor9 }, + { "color10", STRING, &col_sgrcolor10 }, + { "color11", STRING, &col_sgrcolor11 }, + { "color12", STRING, &col_sgrcolor12 }, + { "color13", STRING, &col_sgrcolor13 }, + { "color14", STRING, &col_sgrcolor14 }, + { "color15", STRING, &col_sgrcolor15 }, +}; diff --git a/options.h b/options.h index 2f2d7df..2c40319 100644 --- a/options.h +++ b/options.h @@ -7,6 +7,7 @@ static char class[] = "spmenu"; /* Class for spmenu */ static int fast = 0; /* Grab keyboard first */ static int xresources = 1; /* Enable .Xresources support */ +static int globalcolors = 1; /* Recognize global colors (such as colors generated by Pywal) */ static int loadconfig = 1; /* Load configuration (~/.spmenurc or ~/.config/spmenu/spmenurc) on runtime */ static int mon = -1; /* Monitor to run spmenu on */ diff --git a/spmenu.1 b/spmenu.1 index f19a0e6..687913f 100644 --- a/spmenu.1 +++ b/spmenu.1 @@ -231,6 +231,12 @@ Load .Xresources on runtime \f[V]-nxrdb, --no-xrdb\f[R] Don\[cq]t load .Xresources on runtime .TP +\f[V]-gbc, --global-colors\f[R] +Recognize global colors (such as *.color1) on runtime +.TP +\f[V]-ngbc, --no-global-colors\f[R] +Don\[cq]t recognize global colors (such as *.color1) on runtime +.TP \f[V]-m, --monitor monitor\f[R] Specify a monitor to run spmenu on .TP