tsanitized other stuff - dwm - [fork] customized build of dwm, the dynamic wind… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit c09bf8da071e05e2c1d714f0d31d41fe944bc11b | |
parent adaa28a6e600f636f5e86244ccef69e98419ba1a | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Sat, 15 Jul 2006 17:19:19 +0200 | |
sanitized other stuff | |
Diffstat: | |
M client.c | 4 ++-- | |
M draw.c | 104 ++++++++++++++++-------------… | |
M dwm.h | 4 +--- | |
M event.c | 141 +++++++++++++++--------------… | |
M main.c | 25 ++++++++++++------------- | |
5 files changed, 136 insertions(+), 142 deletions(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -178,7 +178,7 @@ killclient(Arg *arg) | |
if(!sel) | |
return; | |
if(sel->proto & WM_PROTOCOL_DELWIN) | |
- sendevent(sel->win, wm_atom[WMProtocols], wm_atom[WMDelete]); | |
+ sendevent(sel->win, wmatom[WMProtocols], wmatom[WMDelete]); | |
else | |
XKillClient(dpy, sel->win); | |
} | |
t@@ -353,7 +353,7 @@ settitle(Client *c) | |
name.nitems = 0; | |
c->name[0] = 0; | |
- XGetTextProperty(dpy, c->win, &name, net_atom[NetWMName]); | |
+ XGetTextProperty(dpy, c->win, &name, netatom[NetWMName]); | |
if(!name.nitems) | |
XGetWMName(dpy, c->win, &name); | |
if(!name.nitems) | |
diff --git a/draw.c b/draw.c | |
t@@ -29,51 +29,18 @@ drawborder(void) | |
XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious); | |
} | |
-/* extern functions */ | |
- | |
-void | |
-drawall() | |
-{ | |
- Client *c; | |
- | |
- for(c = clients; c; c = getnext(c->next)) | |
- drawtitle(c); | |
- drawstatus(); | |
-} | |
- | |
-void | |
-drawstatus() | |
+static unsigned int | |
+textnw(char *text, unsigned int len) | |
{ | |
- int i; | |
- Bool istile = arrange == dotile; | |
- | |
- dc.x = dc.y = 0; | |
- dc.w = bw; | |
- drawtext(NULL, !istile, False); | |
- | |
- dc.w = 0; | |
- for(i = 0; i < TLast; i++) { | |
- dc.x += dc.w; | |
- dc.w = textw(tags[i]); | |
- if(istile) | |
- drawtext(tags[i], (i == tsel), True); | |
- else | |
- drawtext(tags[i], (i != tsel), True); | |
- } | |
- if(sel) { | |
- dc.x += dc.w; | |
- dc.w = textw(sel->name); | |
- drawtext(sel->name, istile, True); | |
+ XRectangle r; | |
+ if(dc.font.set) { | |
+ XmbTextExtents(dc.font.set, text, len, NULL, &r); | |
+ return r.width; | |
} | |
- dc.w = textw(stext); | |
- dc.x = bx + bw - dc.w; | |
- drawtext(stext, !istile, False); | |
- | |
- XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0); | |
- XFlush(dpy); | |
+ return XTextWidth(dc.font.xfont, text, len); | |
} | |
-void | |
+static void | |
drawtext(const char *text, Bool invert, Bool border) | |
{ | |
int x, y, w, h; | |
t@@ -123,6 +90,50 @@ drawtext(const char *text, Bool invert, Bool border) | |
} | |
} | |
+/* extern functions */ | |
+ | |
+void | |
+drawall() | |
+{ | |
+ Client *c; | |
+ | |
+ for(c = clients; c; c = getnext(c->next)) | |
+ drawtitle(c); | |
+ drawstatus(); | |
+} | |
+ | |
+void | |
+drawstatus() | |
+{ | |
+ int i; | |
+ Bool istile = arrange == dotile; | |
+ | |
+ dc.x = dc.y = 0; | |
+ dc.w = bw; | |
+ drawtext(NULL, !istile, False); | |
+ | |
+ dc.w = 0; | |
+ for(i = 0; i < TLast; i++) { | |
+ dc.x += dc.w; | |
+ dc.w = textw(tags[i]); | |
+ if(istile) | |
+ drawtext(tags[i], (i == tsel), True); | |
+ else | |
+ drawtext(tags[i], (i != tsel), True); | |
+ } | |
+ if(sel) { | |
+ dc.x += dc.w; | |
+ dc.w = textw(sel->name); | |
+ drawtext(sel->name, istile, True); | |
+ } | |
+ dc.w = textw(stext); | |
+ dc.x = bx + bw - dc.w; | |
+ drawtext(stext, !istile, False); | |
+ | |
+ XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0); | |
+ XFlush(dpy); | |
+} | |
+ | |
void | |
drawtitle(Client *c) | |
{ | |
t@@ -219,17 +230,6 @@ setfont(const char *fontstr) | |
} | |
unsigned int | |
-textnw(char *text, unsigned int len) | |
-{ | |
- XRectangle r; | |
- if(dc.font.set) { | |
- XmbTextExtents(dc.font.set, text, len, NULL, &r); | |
- return r.width; | |
- } | |
- return XTextWidth(dc.font.xfont, text, len); | |
-} | |
- | |
-unsigned int | |
textw(char *text) | |
{ | |
return textnw(text, strlen(text)) + dc.font.height; | |
diff --git a/dwm.h b/dwm.h | |
t@@ -89,7 +89,7 @@ struct Key { | |
extern Display *dpy; | |
extern Window root, barwin; | |
-extern Atom wm_atom[WMLast], net_atom[NetLast]; | |
+extern Atom wmatom[WMLast], netatom[NetLast]; | |
extern Cursor cursor[CurLast]; | |
extern Bool running, issel; | |
extern void (*handler[LASTEvent])(XEvent *); | |
t@@ -124,11 +124,9 @@ extern void zoom(Arg *arg); | |
/* draw.c */ | |
extern void drawall(); | |
extern void drawstatus(); | |
-extern void drawtext(const char *text, Bool invert, Bool border); | |
extern void drawtitle(Client *c); | |
extern unsigned long getcolor(const char *colstr); | |
extern void setfont(const char *fontstr); | |
-extern unsigned int textnw(char *text, unsigned int len); | |
extern unsigned int textw(char *text); | |
/* event.c */ | |
diff --git a/event.c b/event.c | |
t@@ -51,8 +51,73 @@ Key key[] = { | |
/* static functions */ | |
-static void movemouse(Client *c); | |
-static void resizemouse(Client *c); | |
+static void | |
+movemouse(Client *c) | |
+{ | |
+ XEvent ev; | |
+ int x1, y1, ocx, ocy, di; | |
+ unsigned int dui; | |
+ Window dummy; | |
+ | |
+ ocx = c->x; | |
+ ocy = c->y; | |
+ if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAs… | |
+ None, cursor[CurMove], CurrentTime) != GrabSuc… | |
+ return; | |
+ XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); | |
+ for(;;) { | |
+ XMaskEvent(dpy, MouseMask | ExposureMask, &ev); | |
+ switch (ev.type) { | |
+ default: break; | |
+ case Expose: | |
+ handler[Expose](&ev); | |
+ break; | |
+ case MotionNotify: | |
+ XFlush(dpy); | |
+ c->x = ocx + (ev.xmotion.x - x1); | |
+ c->y = ocy + (ev.xmotion.y - y1); | |
+ resize(c, False); | |
+ break; | |
+ case ButtonRelease: | |
+ XUngrabPointer(dpy, CurrentTime); | |
+ return; | |
+ } | |
+ } | |
+} | |
+ | |
+static void | |
+resizemouse(Client *c) | |
+{ | |
+ XEvent ev; | |
+ int ocx, ocy; | |
+ | |
+ ocx = c->x; | |
+ ocy = c->y; | |
+ if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAs… | |
+ None, cursor[CurResize], CurrentTime) != GrabS… | |
+ return; | |
+ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); | |
+ for(;;) { | |
+ XMaskEvent(dpy, MouseMask | ExposureMask, &ev); | |
+ switch(ev.type) { | |
+ default: break; | |
+ case Expose: | |
+ handler[Expose](&ev); | |
+ break; | |
+ case MotionNotify: | |
+ XFlush(dpy); | |
+ c->w = abs(ocx - ev.xmotion.x); | |
+ c->h = abs(ocy - ev.xmotion.y); | |
+ c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w; | |
+ c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - c->h; | |
+ resize(c, True); | |
+ break; | |
+ case ButtonRelease: | |
+ XUngrabPointer(dpy, CurrentTime); | |
+ return; | |
+ } | |
+ } | |
+} | |
static void | |
buttonpress(XEvent *e) | |
t@@ -214,40 +279,6 @@ maprequest(XEvent *e) | |
} | |
static void | |
-movemouse(Client *c) | |
-{ | |
- XEvent ev; | |
- int x1, y1, ocx, ocy, di; | |
- unsigned int dui; | |
- Window dummy; | |
- | |
- ocx = c->x; | |
- ocy = c->y; | |
- if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAs… | |
- None, cursor[CurMove], CurrentTime) != GrabSuc… | |
- return; | |
- XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); | |
- for(;;) { | |
- XMaskEvent(dpy, MouseMask | ExposureMask, &ev); | |
- switch (ev.type) { | |
- default: break; | |
- case Expose: | |
- handler[Expose](&ev); | |
- break; | |
- case MotionNotify: | |
- XFlush(dpy); | |
- c->x = ocx + (ev.xmotion.x - x1); | |
- c->y = ocy + (ev.xmotion.y - y1); | |
- resize(c, False); | |
- break; | |
- case ButtonRelease: | |
- XUngrabPointer(dpy, CurrentTime); | |
- return; | |
- } | |
- } | |
-} | |
- | |
-static void | |
propertynotify(XEvent *e) | |
{ | |
XPropertyEvent *ev = &e->xproperty; | |
t@@ -258,7 +289,7 @@ propertynotify(XEvent *e) | |
return; /* ignore */ | |
if((c = getclient(ev->window))) { | |
- if(ev->atom == wm_atom[WMProtocols]) { | |
+ if(ev->atom == wmatom[WMProtocols]) { | |
c->proto = getproto(c->win); | |
return; | |
} | |
t@@ -273,7 +304,7 @@ propertynotify(XEvent *e) | |
setsize(c); | |
break; | |
} | |
- if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) { | |
+ if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) { | |
settitle(c); | |
drawtitle(c); | |
} | |
t@@ -281,40 +312,6 @@ propertynotify(XEvent *e) | |
} | |
static void | |
-resizemouse(Client *c) | |
-{ | |
- XEvent ev; | |
- int ocx, ocy; | |
- | |
- ocx = c->x; | |
- ocy = c->y; | |
- if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAs… | |
- None, cursor[CurResize], CurrentTime) != GrabS… | |
- return; | |
- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); | |
- for(;;) { | |
- XMaskEvent(dpy, MouseMask | ExposureMask, &ev); | |
- switch(ev.type) { | |
- default: break; | |
- case Expose: | |
- handler[Expose](&ev); | |
- break; | |
- case MotionNotify: | |
- XFlush(dpy); | |
- c->w = abs(ocx - ev.xmotion.x); | |
- c->h = abs(ocy - ev.xmotion.y); | |
- c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w; | |
- c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - c->h; | |
- resize(c, True); | |
- break; | |
- case ButtonRelease: | |
- XUngrabPointer(dpy, CurrentTime); | |
- return; | |
- } | |
- } | |
-} | |
- | |
-static void | |
unmapnotify(XEvent *e) | |
{ | |
Client *c; | |
diff --git a/main.c b/main.c | |
t@@ -16,10 +16,10 @@ | |
Display *dpy; | |
Window root, barwin; | |
-Atom wm_atom[WMLast], net_atom[NetLast]; | |
+Atom wmatom[WMLast], netatom[NetLast]; | |
Cursor cursor[CurLast]; | |
Bool running = True; | |
-Bool issel; | |
+Bool issel = True; | |
int tsel = Tdev; /* default tag */ | |
int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | |
t@@ -30,8 +30,6 @@ Client *clients = NULL; | |
Client *sel = NULL; | |
static Bool otherwm; | |
-static const char version[] = | |
- "dwm-" VERSION ", (C)opyright MMVI Anselm R. Garbe\n"; | |
static int (*xerrorxlib)(Display *, XErrorEvent *); | |
/* static functions */ | |
t@@ -109,12 +107,12 @@ getproto(Window w) | |
int protos = 0; | |
int i; | |
- res = win_property(w, wm_atom[WMProtocols], XA_ATOM, 20L, &protocols); | |
+ res = win_property(w, wmatom[WMProtocols], XA_ATOM, 20L, &protocols); | |
if(res <= 0) { | |
return protos; | |
} | |
for(i = 0; i < res; i++) { | |
- if(protocols[i] == wm_atom[WMDelete]) | |
+ if(protocols[i] == wmatom[WMDelete]) | |
protos |= WM_PROTOCOL_DELWIN; | |
} | |
free((char *) protocols); | |
t@@ -184,7 +182,8 @@ main(int argc, char *argv[]) | |
for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) { | |
switch (argv[i][1]) { | |
case 'v': | |
- fprintf(stdout, "%s", version); | |
+ fprintf(stdout, "%s", | |
+ "dwm-"VERSION", (C)opyright MMVI Ansel… | |
exit(0); | |
break; | |
default: | |
t@@ -214,12 +213,12 @@ main(int argc, char *argv[]) | |
xerrorxlib = XSetErrorHandler(xerror); | |
/* init atoms */ | |
- wm_atom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); | |
- wm_atom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); | |
- net_atom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); | |
- net_atom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); | |
- XChangeProperty(dpy, root, net_atom[NetSupported], XA_ATOM, 32, | |
- PropModeReplace, (unsigned char *) net_atom, NetLast); | |
+ wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); | |
+ wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); | |
+ netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); | |
+ netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); | |
+ XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, | |
+ PropModeReplace, (unsigned char *) netatom, NetLast); | |
/* init cursors */ | |
cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr); |