st-color_schemes-20180901-4f4bccd.diff (4920B)
1 diff --git a/config.def.h b/config.def.h 2 index 82b1b09..fe1680b 100644 3 --- a/config.def.h 4 +++ b/config.def.h 5 @@ -82,44 +82,29 @@ char *termname = "st-256color"; 6 */ 7 unsigned int tabspaces = 8; 8 9 -/* Terminal colors (16 first used in escape sequence) */ 10 -static const char *colorname[] = { 11 - /* 8 normal colors */ 12 - "black", 13 - "red3", 14 - "green3", 15 - "yellow3", 16 - "blue2", 17 - "magenta3", 18 - "cyan3", 19 - "gray90", 20 - 21 - /* 8 bright colors */ 22 - "gray50", 23 - "red", 24 - "green", 25 - "yellow", 26 - "#5c5cff", 27 - "magenta", 28 - "cyan", 29 - "white", 30 - 31 - [255] = 0, 32 - 33 - /* more colors can be added after 255 to use with DefaultXX */ 34 - "#cccccc", 35 - "#555555", 36 +/* Terminal colors (16 used in escape sequence) */ 37 +static const char *palettes[][16] = { 38 + {"black", "red3", "green3", "yellow3", "blue2", "magenta3", "cyan3", "gray90", 39 + "gray50", "red", "green", "yellow", "#5c5cff", "magenta", "cyan", "white"}, 40 + {"#223", "#900", "#080", "#fe7", "#35e", "#fc5", "#18e", "#aaa", 41 + "#666", "#f25", "#0b0", "#ff6", "#46f", "#d6a", "#6bf", "#ddd"}, 42 + {"#eaeaea", "#b7141f", "#457b24", "#fc7b08", "#134eb2", "#560088", "#0e717c", "#777777", 43 + "#424242", "#e83b3f", "#7aba3a", "#fd8e09", "#54a4f3", "#aa4dbc", "#26bbd1", "#aaaaaa"}, 44 + {"#20242d", "#b04b57", "#87b379", "#e5c179", "#7d8fa4", "#a47996", "#85a7a5", "#b3b8c3", 45 + "#000000", "#b04b57", "#87b379", "#e5c179", "#7d8fa4", "#a47996", "#85a7a5", "#ffffff"}, 46 }; 47 48 +static const char **colorname; 49 + 50 51 /* 52 * Default colors (colorname index) 53 * foreground, background, cursor, reverse cursor 54 */ 55 -unsigned int defaultfg = 7; 56 +unsigned int defaultfg = 5; 57 unsigned int defaultbg = 0; 58 -static unsigned int defaultcs = 256; 59 -static unsigned int defaultrcs = 257; 60 +static unsigned int defaultcs = 5; 61 +static unsigned int defaultrcs = 5; 62 63 /* 64 * Default shape of cursor 65 @@ -178,8 +163,18 @@ static Shortcut shortcuts[] = { 66 { TERMMOD, XK_Y, selpaste, {.i = 0} }, 67 { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, 68 { TERMMOD, XK_I, iso14755, {.i = 0} }, 69 + { MODKEY|ShiftMask, XK_F1, setpalette, {.i = 0} }, 70 + { MODKEY|ShiftMask, XK_F2, setpalette, {.i = 1} }, 71 + { MODKEY|ShiftMask, XK_F3, setpalette, {.i = 2} }, 72 + { MODKEY|ShiftMask, XK_F4, setpalette, {.i = 3} }, 73 + { MODKEY|ShiftMask, XK_F5, setpalette, {.i = 4} }, 74 + { MODKEY|ShiftMask, XK_F6, setpalette, {.i = 5} }, 75 + { MODKEY|ShiftMask, XK_F7, setpalette, {.i = 6} }, 76 + { MODKEY|ShiftMask, XK_F8, setpalette, {.i = 7} }, 77 + { MODKEY|ShiftMask, XK_F9, setpalette, {.i = 8} }, 78 }; 79 80 + 81 /* 82 * Special keys (change & recompile st.info accordingly) 83 * 84 @@ -460,3 +455,4 @@ static char ascii_printable[] = 85 " !\"#$%&'()*+,-./0123456789:;<=>?" 86 "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" 87 "`abcdefghijklmnopqrstuvwxyz{|}~"; 88 + 89 diff --git a/x.c b/x.c 90 index 00cb6b1..7871c80 100644 91 --- a/x.c 92 +++ b/x.c 93 @@ -56,6 +56,7 @@ static void selpaste(const Arg *); 94 static void zoom(const Arg *); 95 static void zoomabs(const Arg *); 96 static void zoomreset(const Arg *); 97 +static void setpalette(const Arg *); 98 99 /* config.h for applying patches and the configuration. */ 100 #include "config.h" 101 @@ -705,24 +706,7 @@ sixd_to_16bit(int x) 102 int 103 xloadcolor(int i, const char *name, Color *ncolor) 104 { 105 - XRenderColor color = { .alpha = 0xffff }; 106 - 107 - if (!name) { 108 - if (BETWEEN(i, 16, 255)) { /* 256 color */ 109 - if (i < 6*6*6+16) { /* same colors as xterm */ 110 - color.red = sixd_to_16bit( ((i-16)/36)%6 ); 111 - color.green = sixd_to_16bit( ((i-16)/6) %6 ); 112 - color.blue = sixd_to_16bit( ((i-16)/1) %6 ); 113 - } else { /* greyscale */ 114 - color.red = 0x0808 + 0x0a0a * (i - (6*6*6+16)); 115 - color.green = color.blue = color.red; 116 - } 117 - return XftColorAllocValue(xw.dpy, xw.vis, 118 - xw.cmap, &color, ncolor); 119 - } else 120 - name = colorname[i]; 121 - } 122 - 123 + if (!name) name = colorname[i]; 124 return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor); 125 } 126 127 @@ -733,7 +717,7 @@ xloadcols(void) 128 static int loaded; 129 Color *cp; 130 131 - dc.collen = MAX(LEN(colorname), 256); 132 + dc.collen = 16; 133 dc.col = xmalloc(dc.collen * sizeof(Color)); 134 135 if (loaded) { 136 @@ -1728,6 +1712,7 @@ kpress(XEvent *ev) 137 len = 2; 138 } 139 } 140 + 141 ttywrite(buf, len, 1); 142 } 143 144 @@ -1883,6 +1868,15 @@ usage(void) 145 " [stty_args ...]\n", argv0, argv0); 146 } 147 148 +void setpalette(const Arg *arg) { 149 + 150 + if ( arg->i < LEN(palettes) ) { 151 + colorname = palettes[arg->i]; 152 + xloadcols(); 153 + cresize(win.w, win.h); 154 + } 155 +} 156 + 157 int 158 main(int argc, char *argv[]) 159 { 160 @@ -1935,6 +1929,8 @@ main(int argc, char *argv[]) 161 } ARGEND; 162 163 run: 164 + colorname = palettes[0]; 165 + 166 if (argc > 0) /* eat all remaining arguments */ 167 opt_cmd = argv; 168 169 @@ -1953,3 +1949,4 @@ run: 170 171 return 0; 172 } 173 +