sites

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

st-solarized-both-0.8.3.diff (5708B)


      1 From a5a82d6a2efa04415043b7ea8eff16d90d5bf86a Mon Sep 17 00:00:00 2001
      2 From: =?UTF-8?q?Joachim=20B=C3=BCchel?= <jo@audijo.de>
      3 Date: Sun, 7 Jun 2020 13:22:18 +0200
      4 Subject: [PATCH] Solarized light and dark theme
      5 
      6 Port st-solarized-both to 0.8.3
      7 ---
      8  config.def.h | 72 +++++++++++++++++++++++++++++++---------------------
      9  st.h         |  1 +
     10  x.c          | 26 +++++++++++++++----
     11  3 files changed, 65 insertions(+), 34 deletions(-)
     12 
     13 diff --git a/config.def.h b/config.def.h
     14 index 8a58f1c..1010a4f 100644
     15 --- a/config.def.h
     16 +++ b/config.def.h
     17 @@ -86,31 +86,44 @@ unsigned int tabspaces = 8;
     18  
     19  /* Terminal colors (16 first used in escape sequence) */
     20  static const char *colorname[] = {
     21 -	/* 8 normal colors */
     22 -	"black",
     23 -	"red3",
     24 -	"green3",
     25 -	"yellow3",
     26 -	"blue2",
     27 -	"magenta3",
     28 -	"cyan3",
     29 -	"gray90",
     30 -
     31 -	/* 8 bright colors */
     32 -	"gray50",
     33 -	"red",
     34 -	"green",
     35 -	"yellow",
     36 -	"#5c5cff",
     37 -	"magenta",
     38 -	"cyan",
     39 -	"white",
     40 -
     41 -	[255] = 0,
     42 -
     43 -	/* more colors can be added after 255 to use with DefaultXX */
     44 -	"#cccccc",
     45 -	"#555555",
     46 +	/* solarized dark */
     47 +	"#073642",  /*  0: black    */
     48 +	"#dc322f",  /*  1: red      */
     49 +	"#859900",  /*  2: green    */
     50 +	"#b58900",  /*  3: yellow   */
     51 +	"#268bd2",  /*  4: blue     */
     52 +	"#d33682",  /*  5: magenta  */
     53 +	"#2aa198",  /*  6: cyan     */
     54 +	"#eee8d5",  /*  7: white    */
     55 +	"#002b36",  /*  8: brblack  */
     56 +	"#cb4b16",  /*  9: brred    */
     57 +	"#586e75",  /* 10: brgreen  */
     58 +	"#657b83",  /* 11: bryellow */
     59 +	"#839496",  /* 12: brblue   */
     60 +	"#6c71c4",  /* 13: brmagenta*/
     61 +	"#93a1a1",  /* 14: brcyan   */
     62 +	"#fdf6e3",  /* 15: brwhite  */
     63 +};
     64 +
     65 +/* Terminal colors for alternate (light) palette */
     66 +static const char *altcolorname[] = {
     67 +	/* solarized light */
     68 +	"#eee8d5",  /*  0: black    */
     69 +	"#dc322f",  /*  1: red      */
     70 +	"#859900",  /*  2: green    */
     71 +	"#b58900",  /*  3: yellow   */
     72 +	"#268bd2",  /*  4: blue     */
     73 +	"#d33682",  /*  5: magenta  */
     74 +	"#2aa198",  /*  6: cyan     */
     75 +	"#073642",  /*  7: white    */
     76 +	"#fdf6e3",  /*  8: brblack  */
     77 +	"#cb4b16",  /*  9: brred    */
     78 +	"#93a1a1",  /* 10: brgreen  */
     79 +	"#839496",  /* 11: bryellow */
     80 +	"#657b83",  /* 12: brblue   */
     81 +	"#6c71c4",  /* 13: brmagenta*/
     82 +	"#586e75",  /* 14: brcyan   */
     83 +	"#002b36",  /* 15: brwhite  */
     84  };
     85  
     86  
     87 @@ -118,10 +131,10 @@ static const char *colorname[] = {
     88   * Default colors (colorname index)
     89   * foreground, background, cursor, reverse cursor
     90   */
     91 -unsigned int defaultfg = 7;
     92 -unsigned int defaultbg = 0;
     93 -static unsigned int defaultcs = 256;
     94 -static unsigned int defaultrcs = 257;
     95 +unsigned int defaultfg = 12;
     96 +unsigned int defaultbg = 8;
     97 +static unsigned int defaultcs = 14;
     98 +static unsigned int defaultrcs = 15;
     99  
    100  /*
    101   * Default shape of cursor
    102 @@ -185,6 +198,7 @@ static Shortcut shortcuts[] = {
    103  	{ TERMMOD,              XK_Y,           selpaste,       {.i =  0} },
    104  	{ ShiftMask,            XK_Insert,      selpaste,       {.i =  0} },
    105  	{ TERMMOD,              XK_Num_Lock,    numlock,        {.i =  0} },
    106 +	{ XK_ANY_MOD,           XK_F6,          swapcolors,     {.i =  0} },
    107  };
    108  
    109  /*
    110 diff --git a/st.h b/st.h
    111 index d978458..606c302 100644
    112 --- a/st.h
    113 +++ b/st.h
    114 @@ -119,6 +119,7 @@ extern char *vtiden;
    115  extern wchar_t *worddelimiters;
    116  extern int allowaltscreen;
    117  extern char *termname;
    118 +extern int usealtcolors;
    119  extern unsigned int tabspaces;
    120  extern unsigned int defaultfg;
    121  extern unsigned int defaultbg;
    122 diff --git a/x.c b/x.c
    123 index 22c7dfc..5598fb6 100644
    124 --- a/x.c
    125 +++ b/x.c
    126 @@ -55,6 +55,7 @@ static void clipcopy(const Arg *);
    127  static void clippaste(const Arg *);
    128  static void numlock(const Arg *);
    129  static void selpaste(const Arg *);
    130 +static void swapcolors(const Arg *);
    131  static void zoom(const Arg *);
    132  static void zoomabs(const Arg *);
    133  static void zoomreset(const Arg *);
    134 @@ -254,6 +255,8 @@ static char *opt_title = NULL;
    135  
    136  static int oldbutton = 3; /* button event on startup: 3 = release */
    137  
    138 +int usealtcolors = 0; /* 1 to use alternate palette */
    139 +
    140  void
    141  clipcopy(const Arg *dummy)
    142  {
    143 @@ -292,6 +295,14 @@ numlock(const Arg *dummy)
    144  	win.mode ^= MODE_NUMLOCK;
    145  }
    146  
    147 +void
    148 +swapcolors(const Arg *dummy)
    149 +{
    150 +	usealtcolors = !usealtcolors;
    151 +	xloadcols();
    152 +	redraw();
    153 +}
    154 +
    155  void
    156  zoom(const Arg *arg)
    157  {
    158 @@ -748,6 +759,11 @@ sixd_to_16bit(int x)
    159  	return x == 0 ? 0 : 0x3737 + 0x2828 * x;
    160  }
    161  
    162 +const char* getcolorname(int i)
    163 +{
    164 +    return (usealtcolors) ?  altcolorname[i] : colorname[i];
    165 +}
    166 +
    167  int
    168  xloadcolor(int i, const char *name, Color *ncolor)
    169  {
    170 @@ -766,7 +782,7 @@ xloadcolor(int i, const char *name, Color *ncolor)
    171  			return XftColorAllocValue(xw.dpy, xw.vis,
    172  			                          xw.cmap, &color, ncolor);
    173  		} else
    174 -			name = colorname[i];
    175 +			name = getcolorname(i);
    176  	}
    177  
    178  	return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor);
    179 @@ -789,8 +805,8 @@ xloadcols(void)
    180  
    181  	for (i = 0; i < dc.collen; i++)
    182  		if (!xloadcolor(i, NULL, &dc.col[i])) {
    183 -			if (colorname[i])
    184 -				die("could not allocate color '%s'\n", colorname[i]);
    185 +			if (getcolorname(i))
    186 +				die("could not allocate color '%s'\n", getcolorname(i));
    187  			else
    188  				die("could not allocate color %d\n", i);
    189  		}
    190 @@ -1169,13 +1185,13 @@ xinit(int cols, int rows)
    191  	cursor = XCreateFontCursor(xw.dpy, mouseshape);
    192  	XDefineCursor(xw.dpy, xw.win, cursor);
    193  
    194 -	if (XParseColor(xw.dpy, xw.cmap, colorname[mousefg], &xmousefg) == 0) {
    195 +	if (XParseColor(xw.dpy, xw.cmap, getcolorname(mousefg), &xmousefg) == 0) {
    196  		xmousefg.red   = 0xffff;
    197  		xmousefg.green = 0xffff;
    198  		xmousefg.blue  = 0xffff;
    199  	}
    200  
    201 -	if (XParseColor(xw.dpy, xw.cmap, colorname[mousebg], &xmousebg) == 0) {
    202 +	if (XParseColor(xw.dpy, xw.cmap, getcolorname(mousebg), &xmousebg) == 0) {
    203  		xmousebg.red   = 0x0000;
    204  		xmousebg.green = 0x0000;
    205  		xmousebg.blue  = 0x0000;
    206 -- 
    207 2.27.0
    208