sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

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 +