#include <X11/extensions/Xinerama.h>
#endif /* XINERAMA */
-#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask)
-#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))
+#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask)
+#define ALLMODMASK (Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask)
+#define ALLMASK (ShiftMask | ControlMask | ALLMODMASK)
+#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & ALLMASK)
#define ISVISIBLE(C) ((C->tags & C->mon->tagset[C->mon->seltags]))
#define LENGTH(X) (sizeof X / sizeof X[0])
#ifndef MAX
/* function declarations */
static void applyrules(struct client *c);
-static Bool applysizehints(struct client *c, int *x, int *y, int *w, int *h, Bool interact);
+static Bool applysizehints(struct client *c, int *x, int *y,
+ int *w, int *h, Bool interact);
static void arrange(struct monitor *m);
static void arrangemon(struct monitor *m);
static void attach(struct client *c);
static struct monitor *dirtomon(int dir);
static void drawbar(struct monitor *m);
static void drawbars(void);
-static void drawsquare(Bool filled, Bool empty, Bool invert, unsigned long col[ColLast]);
-static void drawtext(const char *text, unsigned long col[ColLast], Bool invert);
+static void drawsquare(Bool filled, Bool empty, Bool invert,
+ unsigned long col[ColLast]);
+static void drawtext(const char *text, unsigned long col[ColLast],
+ Bool invert);
#ifndef M10K
static void enternotify(XEvent *e);
#endif /* ! M10K */
static void restack(struct monitor *m);
static void run(void);
static void scan(void);
-static Bool sendevent(Window w, Atom proto, int m, long d0, long d1, long d2, long d3, long d4);
+static Bool sendevent(Window w, Atom proto, int m, long d0,
+ long d1, long d2, long d3, long d4);
static void sendmon(struct client *c, struct monitor *m);
static void setclientstate(struct client *c, long state);
static void setfocus(struct client *c);
void arrangemon(struct monitor *m)
{
- strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol);
+ strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof(m->ltsymbol));
if(m->lt[m->sellt]->arrange) {
m->lt[m->sellt]->arrange(m);
}
for(i = 0; i < LENGTH(buttons); i++) {
- if(click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button
- && CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state)) {
- buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg);
+ if(click == buttons[i].click && buttons[i].func &&
+ buttons[i].button == ev->button &&
+ CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state)) {
+ buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ?
+ &arg : &buttons[i].arg);
}
}
void cleanup(void)
{
- union arg a = {.ui = ~0};
- struct layout foo = { "", NULL };
+ struct layout foo;
struct monitor *m;
+ union arg a;
int i;
+ a.ui = ~0;
+ foo.symbol = "";
+ foo.arrange = NULL;
+
view(&a);
selmon->lt[selmon->sellt] = &foo;
- for(m = mons; m; m = m->next)
- while(m->stack)
+
+ for(m = mons; m; m = m->next) {
+ while(m->stack) {
unmanage(m->stack, False);
+ }
+ }
+
XUngrabKey(dpy, AnyKey, AnyModifier, root);
XFreePixmap(dpy, dc.drawable);
+
for(i = ColBorder; i < ColLast; i++) {
- XftColorFree(dpy, DefaultVisual(dpy, screen), DefaultColormap(dpy, screen), dc.xft.norm + i);
- XftColorFree(dpy, DefaultVisual(dpy, screen), DefaultColormap(dpy, screen), dc.xft.sel + i);
+ XftColorFree(dpy, DefaultVisual(dpy, screen),
+ DefaultColormap(dpy, screen),
+ dc.xft.norm + i);
+ XftColorFree(dpy, DefaultVisual(dpy, screen),
+ DefaultColormap(dpy, screen),
+ dc.xft.sel + i);
}
+
XftDrawDestroy(dc.xft.drawable);
g_object_unref(dc.font.layout);
XFreeGC(dpy, dc.gc);
XFreeCursor(dpy, cursor[CurNormal]);
XFreeCursor(dpy, cursor[CurResize]);
XFreeCursor(dpy, cursor[CurMove]);
+
while(mons) {
cleanupmon(mons);
}
XSync(dpy, False);
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
+
+ return;
}
void cleanupmon(struct monitor *mon)
{
struct monitor *m;
- if(mon == mons)
+ if(mon == mons) {
mons = mons->next;
- else {
+ } else {
for(m = mons; m && m->next != mon; m = m->next);
m->next = mon->next;
}
+
XUnmapWindow(dpy, mon->barwin);
XDestroyWindow(dpy, mon->barwin);
free(mon);
+
+ return;
}
void clearurgent(struct client *c)
wmh->flags &= ~XUrgencyHint;
XSetWMHints(dpy, c->win, wmh);
XFree(wmh);
+
+ return;
}
void clientmessage(XEvent *e)
XClientMessageEvent *cme = &e->xclient;
struct client *c = wintoclient(cme->window);
- if(cme->window == systray->win && cme->message_type == netatom[NetSystemTrayOP]) {
+ if(cme->window == systray->win &&
+ cme->message_type == netatom[NetSystemTrayOP]) {
/* add systray icons */
if(cme->data.l[1] == SYSTEM_TRAY_REQUEST_DOCK) {
- if(!(c = (struct client*)calloc(1, sizeof(*c))))
+ c = (struct client*)calloc(1, sizeof(*c));
+
+ if(!c) {
die("fatal: could not malloc() %u bytes\n", sizeof(*c));
+ }
+
c->win = cme->data.l[2];
c->mon = selmon;
c->next = systray->icons;
c->isfloating = True;
/* reuse tags field as mapped status */
c->tags = 1;
+
updatesizehints(c);
updatesystrayicongeom(c, wa.width, wa.height);
XAddToSaveSet(dpy, c->win);
- XSelectInput(dpy, c->win, StructureNotifyMask | PropertyChangeMask | ResizeRedirectMask);
+ XSelectInput(dpy, c->win, StructureNotifyMask |
+ PropertyChangeMask | ResizeRedirectMask);
XReparentWindow(dpy, c->win, systray->win, 0, 0);
+
/* use parents background pixmap */
swa.background_pixmap = ParentRelative;
swa.background_pixel = dc.norm[ColBG];
- XChangeWindowAttributes(dpy, c->win, CWBackPixmap|CWBackPixel, &swa);
- sendevent(c->win, netatom[Xembed], StructureNotifyMask, CurrentTime,
- XEMBED_EMBEDDED_NOTIFY, 0 , systray->win, XEMBED_EMBEDDED_VERSION);
+ XChangeWindowAttributes(dpy, c->win,
+ CWBackPixmap | CWBackPixel,
+ &swa);
+
+ sendevent(c->win, netatom[Xembed], StructureNotifyMask,
+ CurrentTime, XEMBED_EMBEDDED_NOTIFY, 0,
+ systray->win, XEMBED_EMBEDDED_VERSION);
+
/* FIXME not sure if I have to send these events, too */
- sendevent(c->win, netatom[Xembed], StructureNotifyMask, CurrentTime,
- XEMBED_FOCUS_IN, 0 , systray->win, XEMBED_EMBEDDED_VERSION);
- sendevent(c->win, netatom[Xembed], StructureNotifyMask, CurrentTime,
- XEMBED_WINDOW_ACTIVATE, 0 , systray->win, XEMBED_EMBEDDED_VERSION);
- sendevent(c->win, netatom[Xembed], StructureNotifyMask, CurrentTime,
- XEMBED_MODALITY_ON, 0 , systray->win, XEMBED_EMBEDDED_VERSION);
+ sendevent(c->win, netatom[Xembed], StructureNotifyMask,
+ CurrentTime, XEMBED_FOCUS_IN, 0,
+ systray->win, XEMBED_EMBEDDED_VERSION);
+ sendevent(c->win, netatom[Xembed], StructureNotifyMask,
+ CurrentTime, XEMBED_WINDOW_ACTIVATE, 0,
+ systray->win, XEMBED_EMBEDDED_VERSION);
+ sendevent(c->win, netatom[Xembed], StructureNotifyMask,
+ CurrentTime, XEMBED_MODALITY_ON, 0,
+ systray->win, XEMBED_EMBEDDED_VERSION);
+
resizebarwin(selmon);
updatesystray();
setclientstate(c, NormalState);
}
if(cme->message_type == netatom[NetWMState]) {
- if(cme->data.l[1] == netatom[NetWMFullscreen] || cme->data.l[2] == netatom[NetWMFullscreen]) {
- setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD */
- || (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen)));
+ if(cme->data.l[1] == netatom[NetWMFullscreen] ||
+ cme->data.l[2] == netatom[NetWMFullscreen]) {
+ int fs;
+
+ fs = cme->data.l[0] == 1 /* _NET_WM_STATE_ADD */ ||
+ (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ &&
+ !c->isfullscreen);
+
+ setfullscreen(c, fs);
}
} else if(cme->message_type == netatom[NetActiveWindow]) {
if(!ISVISIBLE(c)) {
XFreePixmap(dpy, dc.drawable);
}
- dc.drawable = XCreatePixmap(dpy, root, screen_width,
- bar_height, DefaultDepth(dpy, screen));
+ dc.drawable = XCreatePixmap(dpy, root, screen_width, bar_height,
+ DefaultDepth(dpy, screen));
XftDrawChange(dc.xft.drawable, dc.drawable);
updatebars();
{
struct client *c;
struct monitor *m;
- XConfigureRequestEvent *ev = &e->xconfigurerequest;
+ XConfigureRequestEvent *ev;
XWindowChanges wc;
+ ev = &e->xconfigurerequest;
+
if((c = wintoclient(ev->window))) {
if(ev->value_mask & CWBorderWidth) {
c->border.w = ev->border_width;
c->geom.h = ev->height;
}
- if((c->geom.x + c->geom.w) > m->geom.x + m->geom.w && c->isfloating) {
- c->geom.x = m->geom.x + (m->geom.w / 2 - client_get_width(c) / 2); /* center in x direction */
- }
- if((c->geom.y + c->geom.h) > m->geom.y + m->geom.h && c->isfloating) {
- c->geom.y = m->geom.y + (m->geom.h / 2 - client_get_height(c) / 2); /* center in y direction */
+ if(c->isfloating) {
+ if((c->geom.x + c->geom.w) > m->geom.x + m->geom.w) {
+ /* center in x direction */
+ c->geom.x = m->geom.x +
+ (m->geom.w / 2 - client_get_width(c) / 2);
+ }
+ if((c->geom.y + c->geom.h) > m->geom.y + m->geom.h) {
+ /* center in y direction */
+ c->geom.y = m->geom.y +
+ (m->geom.h / 2 - client_get_height(c) / 2);
+ }
}
- if((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight))) {
+
+ if((ev->value_mask & (CWX|CWY)) &&
+ !(ev->value_mask & (CWWidth|CWHeight))) {
configure(c);
}
if(ISVISIBLE(c)) {
- XMoveResizeWindow(dpy, c->win, c->geom.x, c->geom.y, c->geom.w, c->geom.h);
+ XMoveResizeWindow(dpy, c->win, c->geom.x, c->geom.y,
+ c->geom.w, c->geom.h);
}
} else {
configure(c);
{
struct monitor *m;
- if(!(m = (struct monitor *)calloc(1, sizeof(*m)))) {
+ m = (struct monitor *)calloc(1, sizeof(*m));
+
+ if(!m) {
die("fatal: could not malloc() %u bytes\n", sizeof(*m));
}
- m->tagset[0] = m->tagset[1] = 1;
+ m->tagset[0] = 1;
+ m->tagset[1] = 1;
m->mfact = mfact;
m->nmaster = nmaster;
m->topbar = topbar;
m->lt[0] = &layouts[0];
m->lt[1] = &layouts[1 % LENGTH(layouts)];
+
strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
return(m);
}
}
- XCopyArea(dpy, dc.drawable, m->barwin, dc.gc, 0, 0, m->win_geom.w, bar_height, 0, 0);
+ XCopyArea(dpy, dc.drawable, m->barwin, dc.gc, 0, 0,
+ m->win_geom.w, bar_height, 0, 0);
XSync(dpy, False);
return;
XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]);
x = (dc.font.ascent + dc.font.descent + 2) / 4;
if(filled) {
- XFillRectangle(dpy, dc.drawable, dc.gc, dc.geom.x + 1, dc.geom.y + 1, x + 1, x + 1);
+ XFillRectangle(dpy, dc.drawable, dc.gc,
+ dc.geom.x + 1, dc.geom.y + 1,
+ x + 1, x + 1);
} else if(empty) {
- XDrawRectangle(dpy, dc.drawable, dc.gc, dc.geom.x + 1, dc.geom.y + 1, x, x);
+ XDrawRectangle(dpy, dc.drawable, dc.gc,
+ dc.geom.x + 1, dc.geom.y + 1,
+ x, x);
}
return;
int i, x, y, h, len, olen;
XSetForeground(dpy, dc.gc, col[invert ? ColFG : ColBG]);
- XFillRectangle(dpy, dc.drawable, dc.gc, dc.geom.x, dc.geom.y, dc.geom.w, dc.geom.h);
+ XFillRectangle(dpy, dc.drawable, dc.gc,
+ dc.geom.x, dc.geom.y,
+ dc.geom.w, dc.geom.h);
if(!text) {
return;
dc.w is adjusted to the width of the status text and not the other way around) */
for(len = MIN(olen, sizeof buf); len && textnw(text, len) > dc.geom.w - h; len--);
- if(!len) {
+ if(len <= 0) {
return;
}
}
pango_xft_render_layout(dc.xft.drawable,
- (col == dc.norm ? dc.xft.norm : dc.xft.sel) + (invert ? ColBG : ColFG),
+ (col == dc.norm ? dc.xft.norm : dc.xft.sel) +
+ (invert ? ColBG : ColFG),
dc.font.layout, x * PANGO_SCALE, y * PANGO_SCALE);
if(text == stext && statusmarkup) {
/* clear markup attributes */
struct monitor *m;
XCrossingEvent *ev = &e->xcrossing;
- if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) {
+ if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) &&
+ ev->window != root) {
return;
}
unsigned long n, extra;
Atom real;
- if(XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState],
- &real, &format, &n, &extra, (unsigned char **)&p) != Success) {
+ if(XGetWindowProperty(dpy, w, wmatom[WMState], 0L,
+ 2L, False, wmatom[WMState],
+ &real, &format, &n, &extra,
+ (unsigned char **)&p) != Success) {
return -1;
}
if(name.encoding == XA_STRING) {
strncpy(text, (char *)name.value, size - 1);
} else {
- if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success && n > 0 && *list) {
+ if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success &&
+ n > 0 && *list) {
strncpy(text, *list, size - 1);
XFreeStringList(list);
}
updatenumlockmask();
{
unsigned int i, j;
- unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
+ unsigned int modifiers[] = { 0, LockMask, numlockmask,
+ numlockmask | LockMask };
+
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
+
if(focused) {
for(i = 0; i < LENGTH(buttons); i++) {
if(buttons[i].click == ClkClientWin) {
XGrabButton(dpy, buttons[i].button,
buttons[i].mask | modifiers[j],
c->win, False, BUTTONMASK,
- GrabModeAsync, GrabModeSync, None, None);
+ GrabModeAsync, GrabModeSync,
+ None, None);
}
}
}
updatenumlockmask();
{
unsigned int i, j;
- unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
+ unsigned int modifiers[] = { 0, LockMask, numlockmask,
+ numlockmask | LockMask };
KeyCode code;
XUngrabKey(dpy, AnyKey, AnyModifier, root);
+
for(i = 0; i < LENGTH(keys); i++) {
if((code = XKeysymToKeycode(dpy, keys[i].keysym))) {
for(j = 0; j < LENGTH(modifiers); j++) {
/* only fix client y-offset, if the client center might cover the bar */
c->geom.y = MAX(c->geom.y, (c->mon->by == c->mon->geom.y &&
(c->geom.x + (c->geom.w / 2) >= c->mon->win_geom.x) &&
- (c->geom.x + (c->geom.w / 2) < c->mon->win_geom.x + c->mon->win_geom.w)) ? bar_height : c->mon->geom.y);
+ (c->geom.x + (c->geom.w / 2) < c->mon->win_geom.x +
+ c->mon->win_geom.w)) ? bar_height : c->mon->geom.y);
c->border.w = borderpx;
wc.border_width = c->border.w;
updatewindowtype(c);
updatesizehints(c);
updatewmhints(c);
- XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
+ XSelectInput(dpy, w, EnterWindowMask | FocusChangeMask |
+ PropertyChangeMask | StructureNotifyMask);
grabbuttons(c, False);
if(!c->isfloating) {
attach(c);
attachstack(c);
- XMoveResizeWindow(dpy, c->win, c->geom.x + 2 * screen_width, c->geom.y, c->geom.w, c->geom.h); /* some windows require this */
+
+ /* some windows require this */
+ XMoveResizeWindow(dpy, c->win, c->geom.x + 2 * screen_width,
+ c->geom.y, c->geom.w, c->geom.h);
setclientstate(c, NormalState);
if (c->mon == selmon) {
ny <= selmon->win_geom.y + selmon->win_geom.h) {
if(abs(selmon->win_geom.x - nx) < snap) {
nx = selmon->win_geom.x;
- } else if(abs((selmon->win_geom.x + selmon->win_geom.w) - (nx + client_get_width(c))) < snap) {
- nx = selmon->win_geom.x + selmon->win_geom.w - client_get_width(c);
+ } else if(abs((selmon->win_geom.x + selmon->win_geom.w) -
+ (nx + client_get_width(c))) < snap) {
+ nx = selmon->win_geom.x + selmon->win_geom.w -
+ client_get_width(c);
}
if(abs(selmon->win_geom.y - ny) < snap) {
ny = selmon->win_geom.y;
- } else if(abs((selmon->win_geom.y + selmon->win_geom.h) - (ny + client_get_height(c))) < snap) {
- ny = selmon->win_geom.y + selmon->win_geom.h - client_get_height(c);
+ } else if(abs((selmon->win_geom.y + selmon->win_geom.h) -
+ (ny + client_get_height(c))) < snap) {
+ ny = selmon->win_geom.y + selmon->win_geom.h -
+ client_get_height(c);
}
if(!c->isfloating && selmon->lt[selmon->sellt]->arrange &&
- (abs(nx - c->geom.x) > snap || abs(ny - c->geom.y) > snap)) {
+ (abs(nx - c->geom.x) > snap ||
+ abs(ny - c->geom.y) > snap)) {
togglefloating(NULL);
}
}
return;
}
- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->geom.w + c->border.w - 1, c->geom.h + c->border.w - 1);
+ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0,
+ c->geom.w + c->border.w - 1,
+ c->geom.h + c->border.w - 1);
do {
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
nw = MAX(ev.xmotion.x - ocx - 2 * c->border.w + 1, 1);
nh = MAX(ev.xmotion.y - ocy - 2 * c->border.w + 1, 1);
if(c->mon->win_geom.x + nw >= selmon->win_geom.x &&
- c->mon->win_geom.x + nw <= selmon->win_geom.x + selmon->win_geom.w &&
+ c->mon->win_geom.x + nw <= (selmon->win_geom.x +
+ selmon->win_geom.w) &&
c->mon->win_geom.y + nh >= selmon->win_geom.y &&
- c->mon->win_geom.y + nh <= selmon->win_geom.y + selmon->win_geom.h)
- {
+ c->mon->win_geom.y + nh <= (selmon->win_geom.y +
+ selmon->win_geom.h)) {
if(!c->isfloating && selmon->lt[selmon->sellt]->arrange
- && (abs(nw - c->geom.w) > snap || abs(nh - c->geom.h) > snap))
+ && (abs(nw - c->geom.w) > snap ||
+ abs(nh - c->geom.h) > snap)) {
togglefloating(NULL);
+ }
}
- if(!selmon->lt[selmon->sellt]->arrange || c->isfloating)
+ if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) {
resize(c, c->geom.x, c->geom.y, nw, nh, True);
+ }
+
break;
}
} while(ev.type != ButtonRelease);
- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->geom.w + c->border.w - 1, c->geom.h + c->border.w - 1);
+ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0,
+ c->geom.w + c->border.w - 1,
+ c->geom.h + c->border.w - 1);
XUngrabPointer(dpy, CurrentTime);
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
}
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->geom.w / 2, c->geom.h / 2);
- sendevent(c->win, wmatom[WMTakeFocus], NoEventMask, wmatom[WMTakeFocus], CurrentTime, 0, 0, 0);
+ sendevent(c->win, wmatom[WMTakeFocus], NoEventMask,
+ wmatom[WMTakeFocus], CurrentTime, 0, 0, 0);
return;
}
void setfullscreen(struct client *c, Bool fullscreen)
{
if(fullscreen) {
- XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32,
- PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
+ XChangeProperty(dpy, c->win, netatom[NetWMState],
+ XA_ATOM, 32, PropModeReplace,
+ (unsigned char*)&netatom[NetWMFullscreen], 1);
c->isfullscreen = True;
c->oldstate = c->isfloating;
c->border.oldw = c->border.w;
c->border.w = 0;
c->isfloating = True;
- resizeclient(c, c->mon->geom.x, c->mon->geom.y, c->mon->geom.w, c->mon->geom.h);
+ resizeclient(c, c->mon->geom.x, c->mon->geom.y,
+ c->mon->geom.w, c->mon->geom.h);
XRaiseWindow(dpy, c->win);
} else {
XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32,
selmon->lt[selmon->sellt] = (struct layout*)arg->v;
}
- strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
+ strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol,
+ sizeof(selmon->ltsymbol));
if(selmon->sel) {
arrange(selmon);
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
netatom[NetSystemTray] = XInternAtom(dpy, "_NET_SYSTEM_TRAY_S0", False);
netatom[NetSystemTrayOP] = XInternAtom(dpy, "_NET_SYSTEM_TRAY_OPCODE", False);
- netatom[NetSystemTrayOrientation] = XInternAtom(dpy, "_NET_SYSTEM_TRAY_ORIENTATION", False);
+ netatom[NetSystemTrayOrientation] = XInternAtom(dpy,
+ "_NET_SYSTEM_TRAY_ORIENTATION",
+ False);
netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
- netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
+ netatom[NetWMWindowTypeDialog] = XInternAtom(dpy,
+ "_NET_WM_WINDOW_TYPE_DIALOG",
+ False);
xatom[Manager] = XInternAtom(dpy, "MANAGER", False);
xatom[Xembed] = XInternAtom(dpy, "_XEMBED", False);
xatom[XembedInfo] = XInternAtom(dpy, "_XEMBED_INFO", False);
dc.sel[ColBorder] = getcolor(selbordercolor, dc.xft.sel + ColBorder);
dc.sel[ColBG] = getcolor(selbgcolor, dc.xft.sel + ColBG);
dc.sel[ColFG] = getcolor(selfgcolor, dc.xft.sel + ColFG);
- dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bar_height, DefaultDepth(dpy, screen));
- dc.xft.drawable = XftDrawCreate(dpy, dc.drawable, DefaultVisual(dpy, screen), DefaultColormap(dpy, screen));
+ dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen),
+ bar_height, DefaultDepth(dpy, screen));
+ dc.xft.drawable = XftDrawCreate(dpy, dc.drawable, DefaultVisual(dpy, screen),
+ DefaultColormap(dpy, screen));
dc.gc = XCreateGC(dpy, root, 0, NULL);
XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
updatesystray();
PropModeReplace, (unsigned char *) netatom, NetLast);
/* select for events */
wa.cursor = cursor[CurNormal];
- wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask|PointerMotionMask
- |EnterWindowMask|LeaveWindowMask|StructureNotifyMask|PropertyChangeMask;
+ wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | ButtonPressMask |
+ PointerMotionMask | EnterWindowMask | LeaveWindowMask | StructureNotifyMask |
+ PropertyChangeMask;
XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa);
XSelectInput(dpy, root, wa.event_mask);
grabkeys();
if(ISVISIBLE(c)) { /* show clients top down */
XMoveWindow(dpy, c->win, c->geom.x, c->geom.y);
- if((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen) {
+ if((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) &&
+ !c->isfullscreen) {
resize(c, c->geom.x, c->geom.y, c->geom.w, c->geom.h, False);
}
c->incw = 0;
c->inch = 0;
- resize(c, x, m->win_geom.y, w + extraw - border, m->win_geom.h - border, False);
+ resize(c, x, m->win_geom.y, w + extraw - border,
+ m->win_geom.h - border, False);
/*
* Since all clients are horizontally aligned and the
c->incw = 0;
c->inch = 0;
- resize(c, m->win_geom.x, y, m->win_geom.w - border, h + extrah - border, False);
+ resize(c, m->win_geom.x, y, m->win_geom.w - border,
+ h + extrah - border, False);
y += client_get_height(c);
extrah = 0;
}
for(m = mons; m; m = m->next) {
w = m->win_geom.w - getsystraywidth();
- m->barwin = XCreateWindow(dpy, root, m->win_geom.x, m->by, w, bar_height, 0, DefaultDepth(dpy, screen),
+ m->barwin = XCreateWindow(dpy, root, m->win_geom.x, m->by,
+ w, bar_height, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
}
for(i = 0, m = mons; i < nn && m; m = m->next, i++) {
- if(i >= n || (unique[i].x_org != m->geom.x || unique[i].y_org != m->geom.y ||
- unique[i].width != m->geom.w || unique[i].height != m->geom.h)) {
+ if(i >= n || (unique[i].x_org != m->geom.x ||
+ unique[i].y_org != m->geom.y ||
+ unique[i].width != m->geom.w ||
+ unique[i].height != m->geom.h)) {
dirty = True;
m->num = i;
m->geom.x = unique[i].x_org;
m->geom.w = unique[i].width;
m->geom.h = unique[i].height;
- memcpy(&(m->win_geom), &(m->geom), sizeof(m->win_geom));
+ memcpy(&(m->win_geom), &(m->geom),
+ sizeof(m->win_geom));
updatebarpos(m);
}
for(i = 0; i < 8; i++) {
for(j = 0; j < modmap->max_keypermod; j++) {
- if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) {
+ if(modmap->modifiermap[i * modmap->max_keypermod + j] ==
+ XKeysymToKeycode(dpy, XK_Num_Lock)) {
numlockmask = (1 << i);
}
}
if(i->geom.w == i->geom.h) {
i->geom.w = bar_height;
} else {
- i->geom.w = (int) ((float)bar_height * ((float)i->geom.w / (float)i->geom.h));
+ i->geom.w = (int) ((float)bar_height * ((float)i->geom.w /
+ (float)i->geom.h));
}
i->geom.h = bar_height;
die("fatal: could not malloc() %u bytes\n", sizeof(*systray));
}
- systray->win = XCreateSimpleWindow(dpy, root, x, selmon->by, w, bar_height, 0, 0, dc.sel[ColBG]);
+ systray->win = XCreateSimpleWindow(dpy, root, x, selmon->by,
+ w, bar_height, 0, 0, dc.sel[ColBG]);
wa.event_mask = ButtonPressMask | ExposureMask;
wa.override_redirect = True;
wa.background_pixmap = ParentRelative;
wa.background_pixel = dc.norm[ColBG];
XSelectInput(dpy, systray->win, SubstructureNotifyMask);
- XChangeProperty(dpy, systray->win, netatom[NetSystemTrayOrientation], XA_CARDINAL, 32,
- PropModeReplace, (unsigned char *)&systrayorientation, 1);
- XChangeWindowAttributes(dpy, systray->win, CWEventMask|CWOverrideRedirect|CWBackPixel|CWBackPixmap, &wa);
+ XChangeProperty(dpy, systray->win, netatom[NetSystemTrayOrientation],
+ XA_CARDINAL, 32, PropModeReplace,
+ (unsigned char *)&systrayorientation, 1);
+ XChangeWindowAttributes(dpy, systray->win,
+ CWEventMask | CWOverrideRedirect |
+ CWBackPixel | CWBackPixmap, &wa);
XMapRaised(dpy, systray->win);
XSetSelectionOwner(dpy, netatom[NetSystemTray], systray->win, CurrentTime);
if(XGetSelectionOwner(dpy, netatom[NetSystemTray]) == systray->win) {
- sendevent(root, xatom[Manager], StructureNotifyMask, CurrentTime, netatom[NetSystemTray], systray->win, 0, 0);
+ sendevent(root, xatom[Manager], StructureNotifyMask,
+ CurrentTime, netatom[NetSystemTray],
+ systray->win, 0, 0);
XSync(dpy, False);
} else {
fprintf(stderr, "dwm: unable to obtain system tray.\n");
XMapRaised(dpy, i->win);
w += systrayspacing;
i->geom.x = w;
- XMoveResizeWindow(dpy, i->win, i->geom.x, 0, i->geom.w, i->geom.h);
+ XMoveResizeWindow(dpy, i->win, i->geom.x, 0,
+ i->geom.w, i->geom.h);
w += i->geom.w;
if(i->mon != selmon) {