diff options
| author | sinanmohd <pcmsinan@gmail.com> | 2021-02-24 18:22:56 +0530 | 
|---|---|---|
| committer | sinanmohd <pcmsinan@gmail.com> | 2021-02-24 18:22:56 +0530 | 
| commit | 951e8a4fee485aa92d92a4fbb062745c408e8347 (patch) | |
| tree | 7f6cf3eb2aeb971a9729f9e7176198188898cf9c | |
| parent | a7196ea39babd165213c18131b7a8924139b05fd (diff) | |
alpha
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | config.def.h | 8 | ||||
| -rw-r--r-- | config.mk | 2 | ||||
| -rw-r--r-- | st.h | 1 | ||||
| -rw-r--r-- | x.c | 40 | 
5 files changed, 39 insertions, 13 deletions
| @@ -5,3 +5,4 @@ st is a simple terminal implementation for X  ## Patches  - [anysize](https://st.suckless.org/patches/anysize/st-anysize-0.8.1.diff). +- [alpha](https://st.suckless.org/patches/alpha/st-alpha-0.8.2.diff). diff --git a/config.def.h b/config.def.h index 6f05dce..4b5924d 100644 --- a/config.def.h +++ b/config.def.h @@ -5,7 +5,7 @@   *   * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html   */ -static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; +static char *font = "Source Code Pro:style=Regular:pixelsize=12:antialias=true:autohint=true";  static int borderpx = 2;  /* @@ -93,6 +93,9 @@ char *termname = "st-256color";   */  unsigned int tabspaces = 8; +/* bg opacity */ +float alpha = 0.8; +  /* Terminal colors (16 first used in escape sequence) */  static const char *colorname[] = {  	/* 8 normal colors */ @@ -120,6 +123,7 @@ static const char *colorname[] = {  	/* more colors can be added after 255 to use with DefaultXX */  	"#cccccc",  	"#555555", +	"black",  }; @@ -128,7 +132,7 @@ static const char *colorname[] = {   * foreground, background, cursor, reverse cursor   */  unsigned int defaultfg = 7; -unsigned int defaultbg = 0; +unsigned int defaultbg = 258;  static unsigned int defaultcs = 256;  static unsigned int defaultrcs = 257; @@ -16,7 +16,7 @@ PKG_CONFIG = pkg-config  INCS = -I$(X11INC) \         `$(PKG_CONFIG) --cflags fontconfig` \         `$(PKG_CONFIG) --cflags freetype2` -LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \ +LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft -lXrender\         `$(PKG_CONFIG) --libs fontconfig` \         `$(PKG_CONFIG) --libs freetype2` @@ -123,3 +123,4 @@ extern char *termname;  extern unsigned int tabspaces;  extern unsigned int defaultfg;  extern unsigned int defaultbg; +extern float alpha; @@ -106,6 +106,7 @@ typedef struct {  	XSetWindowAttributes attrs;  	int scr;  	int isfixed; /* is fixed geometry? */ +	int depth; /* bit depth */  	int l, t; /* left and top offset */  	int gm; /* geometry mask */  } XWindow; @@ -244,6 +245,7 @@ static char *usedfont = NULL;  static double usedfontsize = 0;  static double defaultfontsize = 0; +static char *opt_alpha = NULL;  static char *opt_class = NULL;  static char **opt_cmd  = NULL;  static char *opt_embed = NULL; @@ -738,7 +740,7 @@ xresize(int col, int row)  	XFreePixmap(xw.dpy, xw.buf);  	xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, -			DefaultDepth(xw.dpy, xw.scr)); +			xw.depth);  	XftDrawChange(xw.draw, xw.buf);  	xclear(0, 0, win.w, win.h); @@ -798,6 +800,13 @@ xloadcols(void)  			else  				die("could not allocate color %d\n", i);  		} + +	/* set alpha value of bg color */ +	if (opt_alpha) +		alpha = strtof(opt_alpha, NULL); +	dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * alpha); +	dc.col[defaultbg].pixel &= 0x00FFFFFF; +	dc.col[defaultbg].pixel |= (unsigned char)(0xff * alpha) << 24;  	loaded = 1;  } @@ -1107,11 +1116,23 @@ xinit(int cols, int rows)  	Window parent;  	pid_t thispid = getpid();  	XColor xmousefg, xmousebg; +	XWindowAttributes attr; +	XVisualInfo vis;  	if (!(xw.dpy = XOpenDisplay(NULL)))  		die("can't open display\n");  	xw.scr = XDefaultScreen(xw.dpy); -	xw.vis = XDefaultVisual(xw.dpy, xw.scr); + +	if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) { +		parent = XRootWindow(xw.dpy, xw.scr); +		xw.depth = 32; +	} else { +		XGetWindowAttributes(xw.dpy, parent, &attr); +		xw.depth = attr.depth; +	} + +	XMatchVisualInfo(xw.dpy, xw.scr, xw.depth, TrueColor, &vis); +	xw.vis = vis.visual;  	/* font */  	if (!FcInit()) @@ -1121,7 +1142,7 @@ xinit(int cols, int rows)  	xloadfonts(usedfont, 0);  	/* colors */ -	xw.cmap = XDefaultColormap(xw.dpy, xw.scr); +	xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None);  	xloadcols();  	/* adjust fixed window geometry */ @@ -1141,19 +1162,15 @@ xinit(int cols, int rows)  		| ButtonMotionMask | ButtonPressMask | ButtonReleaseMask;  	xw.attrs.colormap = xw.cmap; -	if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) -		parent = XRootWindow(xw.dpy, xw.scr);  	xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t, -			win.w, win.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput, +			win.w, win.h, 0, xw.depth, InputOutput,  			xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity  			| CWEventMask | CWColormap, &xw.attrs);  	memset(&gcvalues, 0, sizeof(gcvalues));  	gcvalues.graphics_exposures = False; -	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, -			&gcvalues); -	xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, -			DefaultDepth(xw.dpy, xw.scr)); +	xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, xw.depth); +	dc.gc = XCreateGC(xw.dpy, xw.buf, GCGraphicsExposures, &gcvalues);  	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);  	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); @@ -2006,6 +2023,9 @@ main(int argc, char *argv[])  	case 'a':  		allowaltscreen = 0;  		break; +	case 'A': +		opt_alpha = EARGF(usage()); +		break;  	case 'c':  		opt_class = EARGF(usage());  		break; | 
