From 285c1c63f22bc00771428088c1938b8a0161bd7b Mon Sep 17 00:00:00 2001 From: Max Schillinger Date: Wed, 15 Jun 2022 21:06:42 +0200 Subject: [PATCH] color_schemes patch for st commit baa9357 --- config.def.h | 57 ++++++++++++++++++++++------------------------------ x.c | 35 +++++++++++++++----------------- 2 files changed, 40 insertions(+), 52 deletions(-) diff --git a/config.def.h b/config.def.h index 91ab8ca..22bdb3c 100644 --- a/config.def.h +++ b/config.def.h @@ -93,46 +93,28 @@ char *termname = "st-256color"; */ unsigned int tabspaces = 8; -/* Terminal colors (16 first used in escape sequence) */ -static const char *colorname[] = { - /* 8 normal colors */ - "black", - "red3", - "green3", - "yellow3", - "blue2", - "magenta3", - "cyan3", - "gray90", - - /* 8 bright colors */ - "gray50", - "red", - "green", - "yellow", - "#5c5cff", - "magenta", - "cyan", - "white", - - [255] = 0, - - /* more colors can be added after 255 to use with DefaultXX */ - "#cccccc", - "#555555", - "gray90", /* default foreground colour */ - "black", /* default background colour */ +/* Terminal colors (16 used in escape sequence) */ +static const char *palettes[][16] = { + {"black", "red3", "green3", "yellow3", "blue2", "magenta3", "cyan3", "gray90", + "gray50", "red", "green", "yellow", "#5c5cff", "magenta", "cyan", "white"}, + {"#223", "#900", "#080", "#fe7", "#35e", "#fc5", "#18e", "#aaa", + "#666", "#f25", "#0b0", "#ff6", "#46f", "#d6a", "#6bf", "#ddd"}, + {"#eaeaea", "#b7141f", "#457b24", "#fc7b08", "#134eb2", "#560088", "#0e717c", "#777777", + "#424242", "#e83b3f", "#7aba3a", "#fd8e09", "#54a4f3", "#aa4dbc", "#26bbd1", "#aaaaaa"}, + {"#20242d", "#b04b57", "#87b379", "#e5c179", "#7d8fa4", "#a47996", "#85a7a5", "#b3b8c3", + "#000000", "#b04b57", "#87b379", "#e5c179", "#7d8fa4", "#a47996", "#85a7a5", "#ffffff"}, }; +static const char **colorname; /* * Default colors (colorname index) * foreground, background, cursor, reverse cursor */ -unsigned int defaultfg = 258; -unsigned int defaultbg = 259; -unsigned int defaultcs = 256; -static unsigned int defaultrcs = 257; +unsigned int defaultfg = 5; +unsigned int defaultbg = 0; +unsigned int defaultcs = 5; +static unsigned int defaultrcs = 5; /* * Default shape of cursor @@ -201,6 +183,15 @@ static Shortcut shortcuts[] = { { TERMMOD, XK_Y, selpaste, {.i = 0} }, { ShiftMask, XK_Insert, selpaste, {.i = 0} }, { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, + { MODKEY|ShiftMask, XK_F1, setpalette, {.i = 0} }, + { MODKEY|ShiftMask, XK_F2, setpalette, {.i = 1} }, + { MODKEY|ShiftMask, XK_F3, setpalette, {.i = 2} }, + { MODKEY|ShiftMask, XK_F4, setpalette, {.i = 3} }, + { MODKEY|ShiftMask, XK_F5, setpalette, {.i = 4} }, + { MODKEY|ShiftMask, XK_F6, setpalette, {.i = 5} }, + { MODKEY|ShiftMask, XK_F7, setpalette, {.i = 6} }, + { MODKEY|ShiftMask, XK_F8, setpalette, {.i = 7} }, + { MODKEY|ShiftMask, XK_F9, setpalette, {.i = 8} }, }; /* diff --git a/x.c b/x.c index 2a3bd38..0d77d2a 100644 --- a/x.c +++ b/x.c @@ -59,6 +59,7 @@ static void zoom(const Arg *); static void zoomabs(const Arg *); static void zoomreset(const Arg *); static void ttysend(const Arg *); +static void setpalette(const Arg *); /* config.h for applying patches and the configuration. */ #include "config.h" @@ -769,24 +770,8 @@ sixd_to_16bit(int x) int xloadcolor(int i, const char *name, Color *ncolor) { - XRenderColor color = { .alpha = 0xffff }; - - if (!name) { - if (BETWEEN(i, 16, 255)) { /* 256 color */ - if (i < 6*6*6+16) { /* same colors as xterm */ - color.red = sixd_to_16bit( ((i-16)/36)%6 ); - color.green = sixd_to_16bit( ((i-16)/6) %6 ); - color.blue = sixd_to_16bit( ((i-16)/1) %6 ); - } else { /* greyscale */ - color.red = 0x0808 + 0x0a0a * (i - (6*6*6+16)); - color.green = color.blue = color.red; - } - return XftColorAllocValue(xw.dpy, xw.vis, - xw.cmap, &color, ncolor); - } else - name = colorname[i]; - } - + if (!name) + name = colorname[i]; return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor); } @@ -801,7 +786,7 @@ xloadcols(void) for (cp = dc.col; cp < &dc.col[dc.collen]; ++cp) XftColorFree(xw.dpy, xw.vis, xw.cmap, cp); } else { - dc.collen = MAX(LEN(colorname), 256); + dc.collen = 16; dc.col = xmalloc(dc.collen * sizeof(Color)); } @@ -2024,6 +2009,16 @@ usage(void) " [stty_args ...]\n", argv0, argv0); } +void +setpalette(const Arg *arg) +{ + if (arg->i < LEN(palettes)) { + colorname = palettes[arg->i]; + xloadcols(); + cresize(win.w, win.h); + } +} + int main(int argc, char *argv[]) { @@ -2076,6 +2071,8 @@ main(int argc, char *argv[]) } ARGEND; run: + colorname = palettes[0]; + if (argc > 0) /* eat all remaining arguments */ opt_cmd = argv; -- 2.36.1