Compare commits
	
		
			1 Commits
		
	
	
		
			feat/clipb
			...
			feat/alpha
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b38ee61d6c | 
@@ -93,6 +93,9 @@ char *termname = "st-256color";
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
unsigned int tabspaces = 8;
 | 
					unsigned int tabspaces = 8;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* bg opacity */
 | 
				
			||||||
 | 
					float alpha = 0.8;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Terminal colors (16 first used in escape sequence) */
 | 
					/* Terminal colors (16 first used in escape sequence) */
 | 
				
			||||||
static const char *colorname[] = {
 | 
					static const char *colorname[] = {
 | 
				
			||||||
	/* 8 normal colors */
 | 
						/* 8 normal colors */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@ PKG_CONFIG = pkg-config
 | 
				
			|||||||
INCS = -I$(X11INC) \
 | 
					INCS = -I$(X11INC) \
 | 
				
			||||||
       `$(PKG_CONFIG) --cflags fontconfig` \
 | 
					       `$(PKG_CONFIG) --cflags fontconfig` \
 | 
				
			||||||
       `$(PKG_CONFIG) --cflags freetype2`
 | 
					       `$(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 fontconfig` \
 | 
				
			||||||
       `$(PKG_CONFIG) --libs freetype2`
 | 
					       `$(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 defaultfg;
 | 
				
			||||||
extern unsigned int defaultbg;
 | 
					extern unsigned int defaultbg;
 | 
				
			||||||
extern unsigned int defaultcs;
 | 
					extern unsigned int defaultcs;
 | 
				
			||||||
 | 
					extern float alpha;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								x.c
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								x.c
									
									
									
									
									
								
							@@ -105,6 +105,7 @@ typedef struct {
 | 
				
			|||||||
	XSetWindowAttributes attrs;
 | 
						XSetWindowAttributes attrs;
 | 
				
			||||||
	int scr;
 | 
						int scr;
 | 
				
			||||||
	int isfixed; /* is fixed geometry? */
 | 
						int isfixed; /* is fixed geometry? */
 | 
				
			||||||
 | 
						int depth; /* bit depth */
 | 
				
			||||||
	int l, t; /* left and top offset */
 | 
						int l, t; /* left and top offset */
 | 
				
			||||||
	int gm; /* geometry mask */
 | 
						int gm; /* geometry mask */
 | 
				
			||||||
} XWindow;
 | 
					} XWindow;
 | 
				
			||||||
@@ -243,6 +244,7 @@ static char *usedfont = NULL;
 | 
				
			|||||||
static double usedfontsize = 0;
 | 
					static double usedfontsize = 0;
 | 
				
			||||||
static double defaultfontsize = 0;
 | 
					static double defaultfontsize = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char *opt_alpha = NULL;
 | 
				
			||||||
static char *opt_class = NULL;
 | 
					static char *opt_class = NULL;
 | 
				
			||||||
static char **opt_cmd  = NULL;
 | 
					static char **opt_cmd  = NULL;
 | 
				
			||||||
static char *opt_embed = NULL;
 | 
					static char *opt_embed = NULL;
 | 
				
			||||||
@@ -752,7 +754,7 @@ xresize(int col, int row)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	XFreePixmap(xw.dpy, xw.buf);
 | 
						XFreePixmap(xw.dpy, xw.buf);
 | 
				
			||||||
	xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
 | 
						xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
 | 
				
			||||||
			DefaultDepth(xw.dpy, xw.scr));
 | 
								xw.depth);
 | 
				
			||||||
	XftDrawChange(xw.draw, xw.buf);
 | 
						XftDrawChange(xw.draw, xw.buf);
 | 
				
			||||||
	xclear(0, 0, win.w, win.h);
 | 
						xclear(0, 0, win.w, win.h);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -812,6 +814,13 @@ xloadcols(void)
 | 
				
			|||||||
			else
 | 
								else
 | 
				
			||||||
				die("could not allocate color %d\n", i);
 | 
									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;
 | 
						loaded = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1134,11 +1143,23 @@ xinit(int cols, int rows)
 | 
				
			|||||||
	Window parent;
 | 
						Window parent;
 | 
				
			||||||
	pid_t thispid = getpid();
 | 
						pid_t thispid = getpid();
 | 
				
			||||||
	XColor xmousefg, xmousebg;
 | 
						XColor xmousefg, xmousebg;
 | 
				
			||||||
 | 
						XWindowAttributes attr;
 | 
				
			||||||
 | 
						XVisualInfo vis;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(xw.dpy = XOpenDisplay(NULL)))
 | 
						if (!(xw.dpy = XOpenDisplay(NULL)))
 | 
				
			||||||
		die("can't open display\n");
 | 
							die("can't open display\n");
 | 
				
			||||||
	xw.scr = XDefaultScreen(xw.dpy);
 | 
						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 */
 | 
						/* font */
 | 
				
			||||||
	if (!FcInit())
 | 
						if (!FcInit())
 | 
				
			||||||
@@ -1148,7 +1169,7 @@ xinit(int cols, int rows)
 | 
				
			|||||||
	xloadfonts(usedfont, 0);
 | 
						xloadfonts(usedfont, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* colors */
 | 
						/* colors */
 | 
				
			||||||
	xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
 | 
						xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None);
 | 
				
			||||||
	xloadcols();
 | 
						xloadcols();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* adjust fixed window geometry */
 | 
						/* adjust fixed window geometry */
 | 
				
			||||||
@@ -1168,19 +1189,15 @@ xinit(int cols, int rows)
 | 
				
			|||||||
		| ButtonMotionMask | ButtonPressMask | ButtonReleaseMask;
 | 
							| ButtonMotionMask | ButtonPressMask | ButtonReleaseMask;
 | 
				
			||||||
	xw.attrs.colormap = xw.cmap;
 | 
						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,
 | 
						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
 | 
								xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity
 | 
				
			||||||
			| CWEventMask | CWColormap, &xw.attrs);
 | 
								| CWEventMask | CWColormap, &xw.attrs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(&gcvalues, 0, sizeof(gcvalues));
 | 
						memset(&gcvalues, 0, sizeof(gcvalues));
 | 
				
			||||||
	gcvalues.graphics_exposures = False;
 | 
						gcvalues.graphics_exposures = False;
 | 
				
			||||||
	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures,
 | 
						xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, xw.depth);
 | 
				
			||||||
			&gcvalues);
 | 
						dc.gc = XCreateGC(xw.dpy, xw.buf, GCGraphicsExposures, &gcvalues);
 | 
				
			||||||
	xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
 | 
					 | 
				
			||||||
			DefaultDepth(xw.dpy, xw.scr));
 | 
					 | 
				
			||||||
	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
 | 
						XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
 | 
				
			||||||
	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h);
 | 
						XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2038,6 +2055,9 @@ main(int argc, char *argv[])
 | 
				
			|||||||
	case 'a':
 | 
						case 'a':
 | 
				
			||||||
		allowaltscreen = 0;
 | 
							allowaltscreen = 0;
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
						case 'A':
 | 
				
			||||||
 | 
							opt_alpha = EARGF(usage());
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
	case 'c':
 | 
						case 'c':
 | 
				
			||||||
		opt_class = EARGF(usage());
 | 
							opt_class = EARGF(usage());
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user