Compare commits
	
		
			1 Commits
		
	
	
		
			a148aa1f47
			...
			feat/alpha
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b38ee61d6c | 
| @@ -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 */ | ||||
|   | ||||
| @@ -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` | ||||
|  | ||||
|   | ||||
							
								
								
									
										1
									
								
								st.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								st.h
									
									
									
									
									
								
							| @@ -124,3 +124,4 @@ extern unsigned int tabspaces; | ||||
| extern unsigned int defaultfg; | ||||
| extern unsigned int defaultbg; | ||||
| extern unsigned int defaultcs; | ||||
| extern float alpha; | ||||
|   | ||||
							
								
								
									
										40
									
								
								x.c
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								x.c
									
									
									
									
									
								
							| @@ -105,6 +105,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; | ||||
| @@ -243,6 +244,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; | ||||
| @@ -752,7 +754,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); | ||||
|  | ||||
| @@ -812,6 +814,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; | ||||
| } | ||||
|  | ||||
| @@ -1134,11 +1143,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()) | ||||
| @@ -1148,7 +1169,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 */ | ||||
| @@ -1168,19 +1189,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); | ||||
|  | ||||
| @@ -2038,6 +2055,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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user