|
|
@ -57,21 +57,6 @@ enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */ |
|
|
|
|
|
|
|
|
|
|
|
/* typedefs */ |
|
|
|
/* typedefs */ |
|
|
|
typedef struct Client Client; |
|
|
|
typedef struct Client Client; |
|
|
|
struct Client { |
|
|
|
|
|
|
|
char name[256]; |
|
|
|
|
|
|
|
int x, y, w, h; |
|
|
|
|
|
|
|
int rx, ry, rw, rh; /* revert geometry */ |
|
|
|
|
|
|
|
int basew, baseh, incw, inch, maxw, maxh, minw, minh; |
|
|
|
|
|
|
|
int minax, maxax, minay, maxay; |
|
|
|
|
|
|
|
long flags; |
|
|
|
|
|
|
|
unsigned int border, oldborder; |
|
|
|
|
|
|
|
Bool isbanned, isfixed, ismax, isfloating, wasfloating; |
|
|
|
|
|
|
|
Bool *tags; |
|
|
|
|
|
|
|
Client *next; |
|
|
|
|
|
|
|
Client *prev; |
|
|
|
|
|
|
|
Client *snext; |
|
|
|
|
|
|
|
Window win; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
typedef struct { |
|
|
|
int x, y, w, h; |
|
|
|
int x, y, w, h; |
|
|
@ -195,7 +180,7 @@ char stext[256]; |
|
|
|
double mwfact; |
|
|
|
double mwfact; |
|
|
|
int screen, sx, sy, sw, sh, wax, way, waw, wah; |
|
|
|
int screen, sx, sy, sw, sh, wax, way, waw, wah; |
|
|
|
int (*xerrorxlib)(Display *, XErrorEvent *); |
|
|
|
int (*xerrorxlib)(Display *, XErrorEvent *); |
|
|
|
unsigned int bh, bpos, ntags; |
|
|
|
unsigned int bh, bpos; |
|
|
|
unsigned int blw = 0; |
|
|
|
unsigned int blw = 0; |
|
|
|
unsigned int ltidx = 0; /* default */ |
|
|
|
unsigned int ltidx = 0; /* default */ |
|
|
|
unsigned int nlayouts = 0; |
|
|
|
unsigned int nlayouts = 0; |
|
|
@ -218,7 +203,6 @@ void (*handler[LASTEvent]) (XEvent *) = { |
|
|
|
Atom wmatom[WMLast], netatom[NetLast]; |
|
|
|
Atom wmatom[WMLast], netatom[NetLast]; |
|
|
|
Bool otherwm, readin; |
|
|
|
Bool otherwm, readin; |
|
|
|
Bool running = True; |
|
|
|
Bool running = True; |
|
|
|
Bool *seltags; |
|
|
|
|
|
|
|
Bool selscreen = True; |
|
|
|
Bool selscreen = True; |
|
|
|
Client *clients = NULL; |
|
|
|
Client *clients = NULL; |
|
|
|
Client *sel = NULL; |
|
|
|
Client *sel = NULL; |
|
|
@ -232,6 +216,26 @@ Regs *regs = NULL; |
|
|
|
/* configuration, allows nested code to access above variables */ |
|
|
|
/* configuration, allows nested code to access above variables */ |
|
|
|
#include "config.h" |
|
|
|
#include "config.h" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Statically define the number of tags. */ |
|
|
|
|
|
|
|
unsigned int ntags = sizeof tags / sizeof tags[0]; |
|
|
|
|
|
|
|
Bool seltags[sizeof tags / sizeof tags[0]] = {[0] = True}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct Client { |
|
|
|
|
|
|
|
char name[256]; |
|
|
|
|
|
|
|
int x, y, w, h; |
|
|
|
|
|
|
|
int rx, ry, rw, rh; /* revert geometry */ |
|
|
|
|
|
|
|
int basew, baseh, incw, inch, maxw, maxh, minw, minh; |
|
|
|
|
|
|
|
int minax, maxax, minay, maxay; |
|
|
|
|
|
|
|
long flags; |
|
|
|
|
|
|
|
unsigned int border, oldborder; |
|
|
|
|
|
|
|
Bool isbanned, isfixed, ismax, isfloating, wasfloating; |
|
|
|
|
|
|
|
Bool tags[sizeof tags / sizeof tags[0]]; |
|
|
|
|
|
|
|
Client *next; |
|
|
|
|
|
|
|
Client *prev; |
|
|
|
|
|
|
|
Client *snext; |
|
|
|
|
|
|
|
Window win; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/* functions*/ |
|
|
|
/* functions*/ |
|
|
|
void |
|
|
|
void |
|
|
|
applyrules(Client *c) { |
|
|
|
applyrules(Client *c) { |
|
|
@ -393,7 +397,6 @@ cleanup(void) { |
|
|
|
XFreeCursor(dpy, cursor[CurMove]); |
|
|
|
XFreeCursor(dpy, cursor[CurMove]); |
|
|
|
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); |
|
|
|
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); |
|
|
|
XSync(dpy, False); |
|
|
|
XSync(dpy, False); |
|
|
|
free(seltags); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
@ -1006,7 +1009,6 @@ manage(Window w, XWindowAttributes *wa) { |
|
|
|
XWindowChanges wc; |
|
|
|
XWindowChanges wc; |
|
|
|
|
|
|
|
|
|
|
|
c = emallocz(sizeof(Client)); |
|
|
|
c = emallocz(sizeof(Client)); |
|
|
|
c->tags = emallocz(ntags * sizeof(Bool)); |
|
|
|
|
|
|
|
c->win = w; |
|
|
|
c->win = w; |
|
|
|
c->x = wa->x; |
|
|
|
c->x = wa->x; |
|
|
|
c->y = wa->y; |
|
|
|
c->y = wa->y; |
|
|
@ -1467,9 +1469,6 @@ setup(void) { |
|
|
|
|
|
|
|
|
|
|
|
/* init tags */ |
|
|
|
/* init tags */ |
|
|
|
compileregs(); |
|
|
|
compileregs(); |
|
|
|
ntags = sizeof tags / sizeof tags[0]; |
|
|
|
|
|
|
|
seltags = emallocz(sizeof(Bool) * ntags); |
|
|
|
|
|
|
|
seltags[0] = True; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* init appearance */ |
|
|
|
/* init appearance */ |
|
|
|
dc.norm[ColBorder] = getcolor(NORMBORDERCOLOR); |
|
|
|
dc.norm[ColBorder] = getcolor(NORMBORDERCOLOR); |
|
|
@ -1703,7 +1702,6 @@ unmanage(Client *c) { |
|
|
|
focus(NULL); |
|
|
|
focus(NULL); |
|
|
|
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
|
|
|
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
|
|
|
setclientstate(c, WithdrawnState); |
|
|
|
setclientstate(c, WithdrawnState); |
|
|
|
free(c->tags); |
|
|
|
|
|
|
|
free(c); |
|
|
|
free(c); |
|
|
|
XSync(dpy, False); |
|
|
|
XSync(dpy, False); |
|
|
|
XSetErrorHandler(xerror); |
|
|
|
XSetErrorHandler(xerror); |
|
|
|