all repos — dwm @ 95e8d12b7189d4cd01b8ae8ecebfa5835a1809e6

my dwm build

made fullscreen apps working fine in floating mode (there is no sane way to make them work in tiled mode, thus I switch to floating mode if I run such kind of app), also fixed the xterm issue reported by Sander
arg@10ksloc.org unknown
Wed, 02 Aug 2006 16:32:05 +0200
commit

95e8d12b7189d4cd01b8ae8ecebfa5835a1809e6

parent

a55f0e12fe5c1205f4d3e40c164fd087224fad7a

9 files changed, 92 insertions(+), 79 deletions(-)

jump to
M client.cclient.c

@@ -3,7 +3,6 @@ * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

* See LICENSE file for license details. */ #include "dwm.h" - #include <stdlib.h> #include <string.h> #include <X11/Xatom.h>

@@ -219,7 +218,7 @@ c->w = c->tw = wa->width;

c->h = wa->height; c->th = bh; - c->border = 1; + c->border = 0; setsize(c); if(c->h != sh && c->y < bh)

@@ -254,8 +253,7 @@ settags(c);

if(!c->isfloat) c->isfloat = trans || (c->maxw && c->minw && - c->maxw == c->minw && c->maxh == c->minh) - || (c->w == sw && c->h == sh); + c->maxw == c->minw && c->maxh == c->minh); settitle(c); arrange(NULL);

@@ -271,7 +269,7 @@ resize(Client *c, Bool sizehints, Corner sticky)

{ int bottom = c->y + c->h; int right = c->x + c->w; - XConfigureEvent e; + /*XConfigureEvent e;*/ XWindowChanges wc; if(sizehints) {

@@ -302,21 +300,11 @@ wc.x = c->x;

wc.y = c->y; wc.width = c->w; wc.height = c->h; - wc.border_width = 1; - XConfigureWindow(dpy, c->win, - CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); - - e.type = ConfigureNotify; - e.event = c->win; - e.window = c->win; - e.x = c->x; - e.y = c->y; - e.width = c->w; - e.height = c->h; - e.border_width = c->border; - e.above = None; - e.override_redirect = False; - XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e); + if(c->w == sw && c->h == sh) + wc.border_width = 0; + else + wc.border_width = 1; + XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); XSync(dpy, False); }

@@ -403,8 +391,8 @@ ow = sel->w;

oh = sel->h; sel->x = sx; sel->y = sy + bh; - sel->w = sw - 2 * sel->border; - sel->h = sh - 2 * sel->border - bh; + sel->w = sw - 2; + sel->h = sh - 2 - bh; higher(sel); resize(sel, False, TopLeft);
M config.arg.hconfig.arg.h

@@ -3,15 +3,6 @@ * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

* See LICENSE file for license details. */ -#define DEFMODE dotile /* dofloat */ -#define FONT "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*" -#define BGCOLOR "#0a2c2d" -#define FGCOLOR "#ddeeee" -#define BORDERCOLOR "#176164" -#define MODKEY Mod1Mask -#define NUMLOCKMASK Mod2Mask -#define MASTERW 52 /* percent */ - enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; #define TAGS \ char *tags[TLast] = { \

@@ -21,7 +12,16 @@ [Tnet] = "net", \

[Twork] = "work", \ [Tmisc] = "misc", \ }; + +#define DEFMODE dotile /* dofloat */ #define DEFTAG Tdev +#define FONT "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*" +#define BGCOLOR "#0a2c2d" +#define FGCOLOR "#ddeeee" +#define BORDERCOLOR "#176164" +#define MODKEY Mod1Mask +#define NUMLOCKMASK Mod2Mask +#define MASTERW 52 /* percent */ #define KEYS \ const char *browse[] = { "firefox", NULL }; \
M config.hconfig.h

@@ -3,15 +3,6 @@ * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

* See LICENSE file for license details. */ -#define DEFMODE dotile /* dofloat */ -#define FONT "fixed" -#define BGCOLOR "#666699" -#define FGCOLOR "#eeeeee" -#define BORDERCOLOR "#9999CC" -#define MODKEY Mod1Mask -#define NUMLOCKMASK Mod2Mask -#define MASTERW 52 /* percent */ - enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; #define TAGS \ char *tags[TLast] = { \

@@ -21,7 +12,16 @@ [Tnet] = "net", \

[Twork] = "work", \ [Tmisc] = "misc", \ }; + +#define DEFMODE dotile /* dofloat */ #define DEFTAG Tdev +#define FONT "fixed" +#define BGCOLOR "#666699" +#define FGCOLOR "#eeeeee" +#define BORDERCOLOR "#9999CC" +#define MODKEY Mod1Mask +#define NUMLOCKMASK Mod2Mask +#define MASTERW 52 /* percent */ #define KEYS \ const char *term[] = { "xterm", NULL }; \
M draw.cdraw.c

@@ -3,7 +3,6 @@ * (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com>

* See LICENSE file for license details. */ #include "dwm.h" - #include <stdio.h> #include <string.h> #include <X11/Xlocale.h>
M dwm.hdwm.h

@@ -3,8 +3,8 @@ * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

* See LICENSE file for license details. */ -#include <X11/Xlib.h> #include CONFIG +#include <X11/Xlib.h> /* mask shorthands, used in event.c and client.c */ #define BUTTONMASK (ButtonPressMask | ButtonReleaseMask)

@@ -57,8 +57,8 @@ int x, y, w, h;

int tx, ty, tw, th; /* title */ int basew, baseh, incw, inch, maxw, maxh, minw, minh; int grav; - unsigned int border; long flags; + unsigned int border; Bool isfloat; Bool ismax; Client *next;
M event.cevent.c

@@ -3,7 +3,6 @@ * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

* See LICENSE file for license details. */ #include "dwm.h" - #include <stdlib.h> #include <X11/keysym.h> #include <X11/Xatom.h>

@@ -151,32 +150,60 @@ configurerequest(XEvent *e)

{ Client *c; XConfigureRequestEvent *ev = &e->xconfigurerequest; + XEvent synev; XWindowChanges wc; + unsigned long newmask; - ev->value_mask &= ~CWSibling; if((c = getclient(ev->window))) { gravitate(c, True); - if(ev->value_mask & CWX) - c->x = ev->x; - if(ev->value_mask & CWY) - c->y = ev->y; - if(ev->value_mask & CWWidth) - c->w = ev->width; - if(ev->value_mask & CWHeight) - c->h = ev->height; + if(c->isfloat) { + if(ev->value_mask & CWX) + c->x = ev->x; + if(ev->value_mask & CWY) + c->y = ev->y; + if(ev->value_mask & CWWidth) + c->w = ev->width; + if(ev->value_mask & CWHeight) + c->h = ev->height; + } if(ev->value_mask & CWBorderWidth) - c->border = 1; + c->border = ev->border_width; gravitate(c, False); + resize(c, True, TopLeft); - } - wc.x = ev->x; - wc.y = ev->y; - wc.width = ev->width; - wc.height = ev->height; - wc.border_width = 1; - XConfigureWindow(dpy, ev->window, - CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); + wc.x = c->x; + wc.y = c->y; + wc.width = c->w; + wc.height = c->h; + newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); + if(newmask) + XConfigureWindow(dpy, c->win, newmask, &wc); + else { + synev.type = ConfigureNotify; + synev.xconfigure.display = dpy; + synev.xconfigure.event = c->win; + synev.xconfigure.window = c->win; + synev.xconfigure.x = c->x; + synev.xconfigure.y = c->y; + synev.xconfigure.width = c->w; + synev.xconfigure.height = c->h; + synev.xconfigure.border_width = c->border; + synev.xconfigure.above = None; + /* Send synthetic ConfigureNotify */ + XSendEvent(dpy, c->win, True, NoEventMask, &synev); + } + } + else { + wc.x = ev->x; + wc.y = ev->y; + wc.width = ev->width; + wc.height = ev->height; + wc.border_width = ev->border_width; + wc.sibling = ev->above; + wc.stack_mode = ev->detail; + XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); + } XSync(dpy, False); }
M main.cmain.c

@@ -4,7 +4,6 @@ * See LICENSE file for license details.

*/ #include "dwm.h" - #include <errno.h> #include <stdio.h> #include <stdlib.h>

@@ -14,7 +13,6 @@ #include <sys/select.h>

#include <X11/cursorfont.h> #include <X11/Xatom.h> #include <X11/Xproto.h> - /* static */

@@ -165,6 +163,7 @@ {

int i; unsigned int mask; fd_set rd; + Bool readin = True; Window w; XEvent ev; XSetWindowAttributes wa;

@@ -251,7 +250,8 @@

/* main event loop, reads status text from stdin as well */ while(running) { FD_ZERO(&rd); - FD_SET(STDIN_FILENO, &rd); + if(readin) + FD_SET(STDIN_FILENO, &rd); FD_SET(ConnectionNumber(dpy), &rd); i = select(ConnectionNumber(dpy) + 1, &rd, 0, 0, 0);

@@ -267,11 +267,12 @@ if(handler[ev.type])

(handler[ev.type])(&ev); /* call handler */ } } - if(FD_ISSET(STDIN_FILENO, &rd)) { - if(!fgets(stext, sizeof(stext), stdin)) - break; + if(readin && FD_ISSET(STDIN_FILENO, &rd)) { + readin = NULL != fgets(stext, sizeof(stext), stdin); + if(readin) + stext[strlen(stext) - 1] = 0; else - stext[strlen(stext) - 1] = 0; + strcpy(stext, "broken pipe"); drawstatus(); } }
M tag.ctag.c

@@ -3,7 +3,6 @@ * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

* See LICENSE file for license details. */ #include "dwm.h" - #include <regex.h> #include <stdio.h> #include <string.h>

@@ -86,26 +85,26 @@ }

if(n == 1) { c->x = sx; c->y = sy + bh; - c->w = sw - 2 * c->border; - c->h = sh - 2 * c->border - bh; + c->w = sw - 2; + c->h = sh - 2 - bh; } else if(i == 0) { c->x = sx; c->y = sy + bh; - c->w = mw - 2 * c->border; - c->h = sh - 2 * c->border - bh; + c->w = mw - 2; + c->h = sh - 2 - bh; } else if(h > bh) { c->x = sx + mw; c->y = sy + (i - 1) * h + bh; - c->w = w - 2 * c->border; - c->h = h - 2 * c->border; + c->w = w - 2; + c->h = h - 2; } else { /* fallback if h < bh */ c->x = sx + mw; c->y = sy + bh; - c->w = w - 2 * c->border; - c->h = sh - 2 * c->border - bh; + c->w = w - 2; + c->h = sh - 2 - bh; } resize(c, False, TopLeft); i++;
M util.cutil.c

@@ -3,7 +3,6 @@ * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

* See LICENSE file for license details. */ #include "dwm.h" - #include <stdarg.h> #include <stdio.h> #include <stdlib.h>