aboutsummaryrefslogtreecommitdiff
path: root/x.c
diff options
context:
space:
mode:
Diffstat (limited to 'x.c')
-rw-r--r--x.c40
1 files changed, 10 insertions, 30 deletions
diff --git a/x.c b/x.c
index 5afa802..57f6f1b 100644
--- a/x.c
+++ b/x.c
@@ -105,7 +105,6 @@ typedef struct {
105 XSetWindowAttributes attrs; 105 XSetWindowAttributes attrs;
106 int scr; 106 int scr;
107 int isfixed; /* is fixed geometry? */ 107 int isfixed; /* is fixed geometry? */
108 int depth; /* bit depth */
109 int l, t; /* left and top offset */ 108 int l, t; /* left and top offset */
110 int gm; /* geometry mask */ 109 int gm; /* geometry mask */
111} XWindow; 110} XWindow;
@@ -245,7 +244,6 @@ static char *usedfont = NULL;
245static double usedfontsize = 0; 244static double usedfontsize = 0;
246static double defaultfontsize = 0; 245static double defaultfontsize = 0;
247 246
248static char *opt_alpha = NULL;
249static char *opt_class = NULL; 247static char *opt_class = NULL;
250static char **opt_cmd = NULL; 248static char **opt_cmd = NULL;
251static char *opt_embed = NULL; 249static char *opt_embed = NULL;
@@ -724,7 +722,7 @@ xresize(int col, int row)
724 722
725 XFreePixmap(xw.dpy, xw.buf); 723 XFreePixmap(xw.dpy, xw.buf);
726 xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, 724 xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
727 xw.depth); 725 DefaultDepth(xw.dpy, xw.scr));
728 XftDrawChange(xw.draw, xw.buf); 726 XftDrawChange(xw.draw, xw.buf);
729 xclear(0, 0, win.w, win.h); 727 xclear(0, 0, win.w, win.h);
730 728
@@ -784,13 +782,6 @@ xloadcols(void)
784 else 782 else
785 die("could not allocate color %d\n", i); 783 die("could not allocate color %d\n", i);
786 } 784 }
787
788 /* set alpha value of bg color */
789 if (opt_alpha)
790 alpha = strtof(opt_alpha, NULL);
791 dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * alpha);
792 dc.col[defaultbg].pixel &= 0x00FFFFFF;
793 dc.col[defaultbg].pixel |= (unsigned char)(0xff * alpha) << 24;
794 loaded = 1; 785 loaded = 1;
795} 786}
796 787
@@ -1196,23 +1187,11 @@ xinit(int cols, int rows)
1196 Window parent; 1187 Window parent;
1197 pid_t thispid = getpid(); 1188 pid_t thispid = getpid();
1198 XColor xmousefg, xmousebg; 1189 XColor xmousefg, xmousebg;
1199 XWindowAttributes attr;
1200 XVisualInfo vis;
1201 1190
1202 if (!(xw.dpy = XOpenDisplay(NULL))) 1191 if (!(xw.dpy = XOpenDisplay(NULL)))
1203 die("can't open display\n"); 1192 die("can't open display\n");
1204 xw.scr = XDefaultScreen(xw.dpy); 1193 xw.scr = XDefaultScreen(xw.dpy);
1205 1194 xw.vis = XDefaultVisual(xw.dpy, xw.scr);
1206 if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) {
1207 parent = XRootWindow(xw.dpy, xw.scr);
1208 xw.depth = 32;
1209 } else {
1210 XGetWindowAttributes(xw.dpy, parent, &attr);
1211 xw.depth = attr.depth;
1212 }
1213
1214 XMatchVisualInfo(xw.dpy, xw.scr, xw.depth, TrueColor, &vis);
1215 xw.vis = vis.visual;
1216 1195
1217 /* font */ 1196 /* font */
1218 if (!FcInit()) 1197 if (!FcInit())
@@ -1225,7 +1204,7 @@ xinit(int cols, int rows)
1225 xloadsparefonts(); 1204 xloadsparefonts();
1226 1205
1227 /* colors */ 1206 /* colors */
1228 xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None); 1207 xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
1229 xloadcols(); 1208 xloadcols();
1230 1209
1231 /* adjust fixed window geometry */ 1210 /* adjust fixed window geometry */
@@ -1245,15 +1224,19 @@ xinit(int cols, int rows)
1245 | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask; 1224 | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask;
1246 xw.attrs.colormap = xw.cmap; 1225 xw.attrs.colormap = xw.cmap;
1247 1226
1227 if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0))))
1228 parent = XRootWindow(xw.dpy, xw.scr);
1248 xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t, 1229 xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t,
1249 win.w, win.h, 0, xw.depth, InputOutput, 1230 win.w, win.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput,
1250 xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity 1231 xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity
1251 | CWEventMask | CWColormap, &xw.attrs); 1232 | CWEventMask | CWColormap, &xw.attrs);
1252 1233
1253 memset(&gcvalues, 0, sizeof(gcvalues)); 1234 memset(&gcvalues, 0, sizeof(gcvalues));
1254 gcvalues.graphics_exposures = False; 1235 gcvalues.graphics_exposures = False;
1255 xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, xw.depth); 1236 dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures,
1256 dc.gc = XCreateGC(xw.dpy, xw.buf, GCGraphicsExposures, &gcvalues); 1237 &gcvalues);
1238 xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
1239 DefaultDepth(xw.dpy, xw.scr));
1257 XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); 1240 XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
1258 XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); 1241 XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h);
1259 1242
@@ -2098,9 +2081,6 @@ main(int argc, char *argv[])
2098 case 'a': 2081 case 'a':
2099 allowaltscreen = 0; 2082 allowaltscreen = 0;
2100 break; 2083 break;
2101 case 'A':
2102 opt_alpha = EARGF(usage());
2103 break;
2104 case 'c': 2084 case 'c':
2105 opt_class = EARGF(usage()); 2085 opt_class = EARGF(usage());
2106 break; 2086 break;