~petersanchez/st

6f303705d639abd7f4e048787594e2138f7b4372 — Peter Sanchez 3 years ago 076c92e
Applied alpha patch and config colors
6 files changed, 65 insertions(+), 34 deletions(-)

M config.def.h
M config.h
M config.mk
M patches/README.md
M st.h
M x.c
M config.def.h => config.def.h +5 -1
@@ 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;


M config.h => config.h +27 -22
@@ 93,33 93,38 @@ 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 */
	"black",
	"red3",
	"green3",
	"yellow3",
	"blue2",
	"magenta3",
	"cyan3",
	"gray90",
	"#073642",  /*  0: black    */
	"#dc322f",  /*  1: red      */
	"#859900",  /*  2: green    */
	"#b58900",  /*  3: yellow   */
        "#268bd2",  /*  4: blue     */
	"#d33682",  /*  5: magenta  */
        "#2aa198",  /*  6: cyan     */
	"#eee8d5",  /*  7: (grey) white    */

	/* 8 bright colors */
	"gray50",
	"red",
	"green",
	"yellow",
	"#5c5cff",
	"magenta",
	"cyan",
	"white",
	"#002b36",  /*  8: brblack  */
        "#cb4b16",  /*  9: brred    */
	"#586e75",  /* 10: brgreen  */
        "#657b83",  /* 11: bryellow */
	"#839496",  /* 12: brblue   */
        "#6c71c4",  /* 13: brmagenta*/
        "#93a1a1",  /* 14: brcyan   */
        "#fdf6e3",  /* 15: brwhite  */

	[255] = 0,

	/* more colors can be added after 255 to use with DefaultXX */
	"#cccccc",
	"#555555",
	"black",
	"#00cc00", /* 257 -> fg */
        "magenta",  /* 258 -> cursor */
        "#ebdbb2", /* 259 -> fg */
};




@@ 127,10 132,10 @@ static const char *colorname[] = {
 * Default colors (colorname index)
 * foreground, background, cursor, reverse cursor
 */
unsigned int defaultfg = 7;
unsigned int defaultbg = 0;
static unsigned int defaultcs = 256;
static unsigned int defaultrcs = 257;
unsigned int defaultfg = 15;
unsigned int defaultbg = 256;
static unsigned int defaultcs = 15;
static unsigned int defaultrcs = 15;

/*
 * Default shape of cursor

M config.mk => config.mk +1 -1
@@ 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`


M patches/README.md => patches/README.md +1 -0
@@ 1,3 1,4 @@
# Patches applied in order

1. http://st.suckless.org/patches/copyurl/st-copyurl-20190202-0.8.1.diff
1. http://st.suckless.org/patches/alpha/st-alpha-0.8.2.diff

M st.h => st.h +1 -0
@@ 124,3 124,4 @@ extern char *termname;
extern unsigned int tabspaces;
extern unsigned int defaultfg;
extern unsigned int defaultbg;
extern float alpha;

M x.c => x.c +30 -10
@@ 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;


@@ 734,7 736,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);



@@ 794,6 796,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;
}



@@ 1103,11 1112,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())


@@ 1117,7 1138,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 */


@@ 1137,19 1158,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);



@@ 2002,6 2019,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;