Introduction
Introduction Statistics Contact Development Disclaimer Help
st-alpha-20220206-0.8.5.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-alpha-20220206-0.8.5.diff (4339B)
---
1 diff --git a/config.def.h b/config.def.h
2 index 91ab8ca..6af616e 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -93,6 +93,9 @@ char *termname = "st-256color";
6 */
7 unsigned int tabspaces = 8;
8
9 +/* bg opacity */
10 +float alpha = 0.8;
11 +
12 /* Terminal colors (16 first used in escape sequence) */
13 static const char *colorname[] = {
14 /* 8 normal colors */
15 diff --git a/config.mk b/config.mk
16 index 4c4c5d5..0114bad 100644
17 --- a/config.mk
18 +++ b/config.mk
19 @@ -16,7 +16,7 @@ PKG_CONFIG = pkg-config
20 INCS = -I$(X11INC) \
21 `$(PKG_CONFIG) --cflags fontconfig` \
22 `$(PKG_CONFIG) --cflags freetype2`
23 -LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \
24 +LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft -lXrender\
25 `$(PKG_CONFIG) --libs fontconfig` \
26 `$(PKG_CONFIG) --libs freetype2`
27
28 diff --git a/st.h b/st.h
29 index 519b9bd..8bb533d 100644
30 --- a/st.h
31 +++ b/st.h
32 @@ -126,3 +126,4 @@ extern unsigned int tabspaces;
33 extern unsigned int defaultfg;
34 extern unsigned int defaultbg;
35 extern unsigned int defaultcs;
36 +extern float alpha;
37 diff --git a/x.c b/x.c
38 index 8a16faa..ddf4178 100644
39 --- a/x.c
40 +++ b/x.c
41 @@ -105,6 +105,7 @@ typedef struct {
42 XSetWindowAttributes attrs;
43 int scr;
44 int isfixed; /* is fixed geometry? */
45 + int depth; /* bit depth */
46 int l, t; /* left and top offset */
47 int gm; /* geometry mask */
48 } XWindow;
49 @@ -243,6 +244,7 @@ static char *usedfont = NULL;
50 static double usedfontsize = 0;
51 static double defaultfontsize = 0;
52
53 +static char *opt_alpha = NULL;
54 static char *opt_class = NULL;
55 static char **opt_cmd = NULL;
56 static char *opt_embed = NULL;
57 @@ -736,7 +738,7 @@ xresize(int col, int row)
58
59 XFreePixmap(xw.dpy, xw.buf);
60 xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
61 - DefaultDepth(xw.dpy, xw.scr));
62 + xw.depth);
63 XftDrawChange(xw.draw, xw.buf);
64 xclear(0, 0, win.w, win.h);
65
66 @@ -796,6 +798,13 @@ xloadcols(void)
67 else
68 die("could not allocate color %d\n", i);
69 }
70 +
71 + /* set alpha value of bg color */
72 + if (opt_alpha)
73 + alpha = strtof(opt_alpha, NULL);
74 + dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * alpha…
75 + dc.col[defaultbg].pixel &= 0x00FFFFFF;
76 + dc.col[defaultbg].pixel |= (unsigned char)(0xff * alpha) << 24;
77 loaded = 1;
78 }
79
80 @@ -1118,11 +1127,23 @@ xinit(int cols, int rows)
81 Window parent;
82 pid_t thispid = getpid();
83 XColor xmousefg, xmousebg;
84 + XWindowAttributes attr;
85 + XVisualInfo vis;
86
87 if (!(xw.dpy = XOpenDisplay(NULL)))
88 die("can't open display\n");
89 xw.scr = XDefaultScreen(xw.dpy);
90 - xw.vis = XDefaultVisual(xw.dpy, xw.scr);
91 +
92 + if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) {
93 + parent = XRootWindow(xw.dpy, xw.scr);
94 + xw.depth = 32;
95 + } else {
96 + XGetWindowAttributes(xw.dpy, parent, &attr);
97 + xw.depth = attr.depth;
98 + }
99 +
100 + XMatchVisualInfo(xw.dpy, xw.scr, xw.depth, TrueColor, &vis);
101 + xw.vis = vis.visual;
102
103 /* font */
104 if (!FcInit())
105 @@ -1132,7 +1153,7 @@ xinit(int cols, int rows)
106 xloadfonts(usedfont, 0);
107
108 /* colors */
109 - xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
110 + xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None);
111 xloadcols();
112
113 /* adjust fixed window geometry */
114 @@ -1152,19 +1173,15 @@ xinit(int cols, int rows)
115 | ButtonMotionMask | ButtonPressMask | ButtonReleaseMas…
116 xw.attrs.colormap = xw.cmap;
117
118 - if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0))))
119 - parent = XRootWindow(xw.dpy, xw.scr);
120 xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t,
121 - win.w, win.h, 0, XDefaultDepth(xw.dpy, xw.scr),…
122 + win.w, win.h, 0, xw.depth, InputOutput,
123 xw.vis, CWBackPixel | CWBorderPixel | CWBitGrav…
124 | CWEventMask | CWColormap, &xw.attrs);
125
126 memset(&gcvalues, 0, sizeof(gcvalues));
127 gcvalues.graphics_exposures = False;
128 - dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures,
129 - &gcvalues);
130 - xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
131 - DefaultDepth(xw.dpy, xw.scr));
132 + xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, xw.depth);
133 + dc.gc = XCreateGC(xw.dpy, xw.buf, GCGraphicsExposures, &gcvalue…
134 XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
135 XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h);
136
137 @@ -2019,6 +2036,9 @@ main(int argc, char *argv[])
138 case 'a':
139 allowaltscreen = 0;
140 break;
141 + case 'A':
142 + opt_alpha = EARGF(usage());
143 + break;
144 case 'c':
145 opt_class = EARGF(usage());
146 break;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.