|
|
@ -18,7 +18,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
char stext[256]; |
|
|
|
char stext[256]; |
|
|
|
int screen, sx, sy, sw, sh, wax, way, waw, wah; |
|
|
|
int screen, sx, sy, sw, sh, wax, way, waw, wah; |
|
|
|
unsigned int bh, ntags, numlockmask; |
|
|
|
unsigned int bh, bpos, ntags, numlockmask; |
|
|
|
Atom wmatom[WMLast], netatom[NetLast]; |
|
|
|
Atom wmatom[WMLast], netatom[NetLast]; |
|
|
|
Bool *seltag; |
|
|
|
Bool *seltag; |
|
|
|
Bool selscreen = True; |
|
|
|
Bool selscreen = True; |
|
|
@ -190,17 +190,13 @@ setup(void) { |
|
|
|
wa.override_redirect = 1; |
|
|
|
wa.override_redirect = 1; |
|
|
|
wa.background_pixmap = ParentRelative; |
|
|
|
wa.background_pixmap = ParentRelative; |
|
|
|
wa.event_mask = ButtonPressMask | ExposureMask; |
|
|
|
wa.event_mask = ButtonPressMask | ExposureMask; |
|
|
|
barwin = XCreateWindow(dpy, root, sx, sy + (TOPBAR ? 0 : sh - bh), sw, bh, 0, |
|
|
|
barwin = XCreateWindow(dpy, root, sx, sy - bh, sw, bh, 0, |
|
|
|
DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen), |
|
|
|
DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen), |
|
|
|
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); |
|
|
|
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); |
|
|
|
XDefineCursor(dpy, barwin, cursor[CurNormal]); |
|
|
|
XDefineCursor(dpy, barwin, cursor[CurNormal]); |
|
|
|
|
|
|
|
updatebarpos(); |
|
|
|
XMapRaised(dpy, barwin); |
|
|
|
XMapRaised(dpy, barwin); |
|
|
|
strcpy(stext, "dwm-"VERSION); |
|
|
|
strcpy(stext, "dwm-"VERSION); |
|
|
|
/* windowarea */ |
|
|
|
|
|
|
|
wax = sx; |
|
|
|
|
|
|
|
way = sy + (TOPBAR ? bh : 0); |
|
|
|
|
|
|
|
wah = sh - bh; |
|
|
|
|
|
|
|
waw = sw; |
|
|
|
|
|
|
|
/* pixmap for everything */ |
|
|
|
/* pixmap for everything */ |
|
|
|
dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); |
|
|
|
dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); |
|
|
|
dc.gc = XCreateGC(dpy, root, 0, 0); |
|
|
|
dc.gc = XCreateGC(dpy, root, 0, 0); |
|
|
@ -228,6 +224,28 @@ quit(const char *arg) { |
|
|
|
readin = running = False; |
|
|
|
readin = running = False; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
|
|
|
|
updatebarpos(void) { |
|
|
|
|
|
|
|
wax = sx; |
|
|
|
|
|
|
|
way = sy; |
|
|
|
|
|
|
|
wah = sh; |
|
|
|
|
|
|
|
waw = sw; |
|
|
|
|
|
|
|
switch(bpos) { |
|
|
|
|
|
|
|
case BarTop: |
|
|
|
|
|
|
|
wah -= bh; |
|
|
|
|
|
|
|
way += bh; |
|
|
|
|
|
|
|
XMoveWindow(dpy, barwin, sx, sy); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case BarBot: |
|
|
|
|
|
|
|
wah -= bh; |
|
|
|
|
|
|
|
XMoveWindow(dpy, barwin, sx, sy + wah); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case BarOff: |
|
|
|
|
|
|
|
XMoveWindow(dpy, barwin, sx, sy - bh); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
lt->arrange(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* There's no way to check accesses to destroyed windows, thus those cases are
|
|
|
|
/* There's no way to check accesses to destroyed windows, thus those cases are
|
|
|
|
* ignored (especially on UnmapNotify's). Other types of errors call Xlibs |
|
|
|
* ignored (especially on UnmapNotify's). Other types of errors call Xlibs |
|
|
|
* default error handler, which may call exit. |
|
|
|
* default error handler, which may call exit. |
|
|
|