Introduction
Introduction Statistics Contact Development Disclaimer Help
tseparated setup stuff into main.c:setup() - this makes main() more readable - …
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit b5159dfd2f552696b049b95e0d368a2c33a1002a
parent 07c2659806e95499b4a258ff1961e61c541f50b3
Author: Anselm R. Garbe <[email protected]>
Date: Wed, 23 Aug 2006 10:21:57 +0200
separated setup stuff into main.c:setup() - this makes main() more readable
Diffstat:
M dwm.h | 20 ++++++++------------
M main.c | 181 ++++++++++++++++-------------…
M view.c | 2 +-
3 files changed, 104 insertions(+), 99 deletions(-)
---
diff --git a/dwm.h b/dwm.h
t@@ -11,15 +11,10 @@
#define MOUSEMASK (BUTTONMASK | PointerMotionMask)
#define PROTODELWIN 1
-typedef union Arg Arg;
-typedef struct Client Client;
-typedef struct DC DC;
-typedef struct Fnt Fnt;
-
-union Arg {
+typedef union {
const char *cmd;
int i;
-};
+} Arg;
/* atoms */
enum { NetSupported, NetWMName, NetLast };
t@@ -28,18 +23,18 @@ enum { WMProtocols, WMDelete, WMLast };
/* cursor */
enum { CurNormal, CurResize, CurMove, CurLast };
-/* windowcorners */
+/* window corners */
typedef enum { TopLeft, TopRight, BotLeft, BotRight } Corner;
-struct Fnt {
+typedef struct {
int ascent;
int descent;
int height;
XFontSet set;
XFontStruct *xfont;
-};
+} Fnt;
-struct DC { /* draw context */
+typedef struct { /* draw context */
int x, y, w, h;
unsigned long bg;
unsigned long fg;
t@@ -47,8 +42,9 @@ struct DC { /* draw context */
Drawable drawable;
Fnt font;
GC gc;
-};
+} DC;
+typedef struct Client Client;
struct Client {
char name[256];
int proto;
diff --git a/main.c b/main.c
t@@ -15,6 +15,22 @@
#include <X11/Xatom.h>
#include <X11/Xproto.h>
+/* extern */
+
+char stext[1024];
+Bool *seltag;
+int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
+unsigned int ntags, numlockmask;
+Atom wmatom[WMLast], netatom[NetLast];
+Bool running = True;
+Bool issel = True;
+Client *clients = NULL;
+Client *sel = NULL;
+Cursor cursor[CurLast];
+Display *dpy;
+DC dc = {0};
+Window root, barwin;
+
/* static */
static int (*xerrorxlib)(Display *, XErrorEvent *);
t@@ -62,6 +78,79 @@ scan()
XFree(wins);
}
+static void
+setup()
+{
+ int i, j;
+ unsigned int mask;
+ Window w;
+ XModifierKeymap *modmap;
+ XSetWindowAttributes wa;
+
+ /* init atoms */
+ 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);
+ cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
+ cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
+
+ modmap = XGetModifierMapping(dpy);
+ for (i = 0; i < 8; i++) {
+ for (j = 0; j < modmap->max_keypermod; j++) {
+ if(modmap->modifiermap[i * modmap->max_keypermod + j] …
+ numlockmask = (1 << i);
+ }
+ }
+ XFree(modmap);
+
+ wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | En…
+ wa.cursor = cursor[CurNormal];
+ XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
+
+ grabkeys();
+ initrregs();
+
+ for(ntags = 0; tags[ntags]; ntags++);
+ seltag = emallocz(sizeof(Bool) * ntags);
+ seltag[0] = True;
+
+ /* style */
+ dc.bg = getcolor(BGCOLOR);
+ dc.fg = getcolor(FGCOLOR);
+ dc.border = getcolor(BORDERCOLOR);
+ setfont(FONT);
+
+ sx = sy = 0;
+ sw = DisplayWidth(dpy, screen);
+ sh = DisplayHeight(dpy, screen);
+ mw = (sw * MASTERW) / 100;
+
+ bx = by = 0;
+ bw = sw;
+ dc.h = bh = dc.font.height + 4;
+ wa.override_redirect = 1;
+ wa.background_pixmap = ParentRelative;
+ wa.event_mask = ButtonPressMask | ExposureMask;
+ barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy,…
+ CopyFromParent, DefaultVisual(dpy, screen),
+ CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
+ XDefineCursor(dpy, barwin, cursor[CurNormal]);
+ XMapRaised(dpy, barwin);
+
+ dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, scree…
+ dc.gc = XCreateGC(dpy, root, 0, 0);
+
+ issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
+
+ strcpy(stext, "dwm-"VERSION);
+}
+
/*
* Startup Error handler to check if another window manager
* is already running.
t@@ -75,20 +164,6 @@ xerrorstart(Display *dsply, XErrorEvent *ee)
/* extern */
-char stext[1024];
-Bool *seltag;
-int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
-unsigned int ntags, numlockmask;
-Atom wmatom[WMLast], netatom[NetLast];
-Bool running = True;
-Bool issel = True;
-Client *clients = NULL;
-Client *sel = NULL;
-Cursor cursor[CurLast];
-Display *dpy;
-DC dc = {0};
-Window root, barwin;
-
int
getproto(Window w)
{
t@@ -153,12 +228,8 @@ xerror(Display *dpy, XErrorEvent *ee)
int
main(int argc, char *argv[])
{
- int i, j, xfd;
- unsigned int mask;
+ int r, xfd;
fd_set rd;
- Window w;
- XModifierKeymap *modmap;
- XSetWindowAttributes wa;
if(argc == 2 && !strncmp("-v", argv[1], 3)) {
fputs("dwm-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", std…
t@@ -189,70 +260,8 @@ main(int argc, char *argv[])
xerrorxlib = XSetErrorHandler(xerror);
XSync(dpy, False);
- /* init atoms */
- 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);
- cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
- cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
-
- modmap = XGetModifierMapping(dpy);
- for (i = 0; i < 8; i++) {
- for (j = 0; j < modmap->max_keypermod; j++) {
- if(modmap->modifiermap[i * modmap->max_keypermod + j] …
- numlockmask = (1 << i);
- }
- }
- XFree(modmap);
-
- wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | En…
- wa.cursor = cursor[CurNormal];
- XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
-
- grabkeys();
- initrregs();
-
- for(ntags = 0; tags[ntags]; ntags++);
- seltag = emallocz(sizeof(Bool) * ntags);
- seltag[0] = True;
-
- /* style */
- dc.bg = getcolor(BGCOLOR);
- dc.fg = getcolor(FGCOLOR);
- dc.border = getcolor(BORDERCOLOR);
- setfont(FONT);
-
- sx = sy = 0;
- sw = DisplayWidth(dpy, screen);
- sh = DisplayHeight(dpy, screen);
- mw = (sw * MASTERW) / 100;
-
- bx = by = 0;
- bw = sw;
- dc.h = bh = dc.font.height + 4;
- wa.override_redirect = 1;
- wa.background_pixmap = ParentRelative;
- wa.event_mask = ButtonPressMask | ExposureMask;
- barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy,…
- CopyFromParent, DefaultVisual(dpy, screen),
- CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
- XDefineCursor(dpy, barwin, cursor[CurNormal]);
- XMapRaised(dpy, barwin);
-
- dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, scree…
- dc.gc = XCreateGC(dpy, root, 0, 0);
-
- strcpy(stext, "dwm-"VERSION);
+ setup();
drawstatus();
-
- issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
-
scan();
/* main event loop, also reads status text from stdin */
t@@ -264,10 +273,10 @@ main(int argc, char *argv[])
if(readin)
FD_SET(STDIN_FILENO, &rd);
FD_SET(xfd, &rd);
- i = select(xfd + 1, &rd, NULL, NULL, NULL);
- if((i == -1) && (errno == EINTR))
+ r = select(xfd + 1, &rd, NULL, NULL, NULL);
+ if((r == -1) && (errno == EINTR))
continue;
- if(i > 0) {
+ if(r > 0) {
if(readin && FD_ISSET(STDIN_FILENO, &rd)) {
readin = NULL != fgets(stext, sizeof(stext), s…
if(readin)
t@@ -277,7 +286,7 @@ main(int argc, char *argv[])
drawstatus();
}
}
- else if(i < 0)
+ else if(r < 0)
eprint("select failed\n");
procevent();
}
diff --git a/view.c b/view.c
t@@ -195,7 +195,7 @@ restack()
void
togglemode(Arg *arg)
{
- arrange = arrange == dofloat ? dotile : dofloat;
+ arrange = (arrange == dofloat) ? dotile : dofloat;
if(sel)
arrange(NULL);
else
You are viewing proxied material from mx1.adamsgaard.dk. 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.