Introduction
Introduction Statistics Contact Development Disclaimer Help
tremoved the _DWM_PROPERTIES handling, reverted ban/unban to XMoveWindow(), and…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 36672d0401299a5230b516ca4575365d9f45dd35
parent b18e6840152b300f2db8ff8dca16aee0839f864b
Author: Anselm R. Garbe <[email protected]>
Date: Wed, 22 Aug 2007 19:01:05 +0200
removed the _DWM_PROPERTIES handling, reverted ban/unban to XMoveWindow(), and …
Diffstat:
M client.c | 50 +++++------------------------…
M config.mk | 4 ++--
M dwm.h | 8 ++------
M event.c | 8 +++-----
M main.c | 6 ++----
M screen.c | 48 +++++------------------------…
6 files changed, 23 insertions(+), 101 deletions(-)
---
diff --git a/client.c b/client.c
t@@ -1,14 +1,11 @@
/* See LICENSE file for copyright and license details. */
#include "dwm.h"
#include <stdlib.h>
-#include <string.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
/* static */
-static char buf[128];
-
static void
attachstack(Client *c) {
c->snext = stack;
t@@ -102,10 +99,8 @@ void
ban(Client *c) {
if(c->isbanned)
return;
- XUnmapWindow(dpy, c->win);
- setclientstate(c, IconicState);
+ XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
c->isbanned = True;
- c->unmapped++;
}
void
t@@ -181,21 +176,6 @@ killclient(const char *arg) {
XKillClient(dpy, sel->win);
}
-Bool
-getprops(Client *c) {
- unsigned int i;
- Bool result = False;
-
- if(gettextprop(c->win, dwmprops, buf, sizeof buf)) {
- for(i = 0; i < ntags && i < sizeof buf - 1 && buf[i] != '\0'; …
- if((c->tags[i] = buf[i] == '1'))
- result = True;
- if(i < sizeof buf - 1 && buf[i] != '\0')
- c->isfloating = buf[i] == '1';
- }
- return result;
-}
-
void
manage(Window w, XWindowAttributes *wa) {
unsigned int i;
t@@ -242,15 +222,14 @@ manage(Window w, XWindowAttributes *wa) {
if(t)
for(i = 0; i < ntags; i++)
c->tags[i] = t->tags[i];
- if(!getprops(c))
- applyrules(c);
+ applyrules(c);
if(!c->isfloating)
c->isfloating = (rettrans == Success) || c->isfixed;
- setprops(c);
attach(c);
attachstack(c);
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); /* some window…
ban(c);
+ XMapWindow(dpy, c->win);
arrange();
}
t@@ -318,29 +297,15 @@ resize(Client *c, int x, int y, int w, int h, Bool sizeh…
}
void
-setprops(Client *c) {
- unsigned int i;
-
- for(i = 0; i < ntags && i < sizeof buf - 1; i++)
- buf[i] = c->tags[i] ? '1' : '0';
- if(i < sizeof buf - 1)
- buf[i++] = c->isfloating ? '1' : '0';
- buf[i] = '\0';
- XChangeProperty(dpy, c->win, dwmprops, XA_STRING, 8,
- PropModeReplace, (unsigned char *)buf, i);
-}
-
-void
unban(Client *c) {
if(!c->isbanned)
return;
- XMapWindow(dpy, c->win);
- setclientstate(c, NormalState);
+ XMoveWindow(dpy, c->win, c->x, c->y);
c->isbanned = False;
}
void
-unmanage(Client *c, long state) {
+unmanage(Client *c) {
XWindowChanges wc;
wc.border_width = c->oldborder;
t@@ -353,14 +318,13 @@ unmanage(Client *c, long state) {
if(sel == c)
focus(NULL);
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
- setclientstate(c, state);
+ setclientstate(c, WithdrawnState);
free(c->tags);
free(c);
XSync(dpy, False);
XSetErrorHandler(xerror);
XUngrabServer(dpy);
- if(state != NormalState)
- arrange();
+ arrange();
}
void
diff --git a/config.mk b/config.mk
t@@ -20,8 +20,8 @@ LIBS = -L/usr/lib -lc -L${X11LIB} -lX11
# flags
CFLAGS = -Os ${INCS} -DVERSION=\"${VERSION}\"
LDFLAGS = -s ${LIBS}
-#CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\"
-#LDFLAGS = -g ${LIBS}
+CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\"
+LDFLAGS = -g ${LIBS}
# Solaris
#CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
diff --git a/dwm.h b/dwm.h
t@@ -48,7 +48,6 @@ struct Client {
int rx, ry, rw, rh; /* revert geometry */
int basew, baseh, incw, inch, maxw, maxh, minw, minh;
int minax, maxax, minay, maxay;
- int unmapped;
long flags;
unsigned int border, oldborder;
Bool isbanned, isfixed, ismax, isfloating;
t@@ -81,7 +80,7 @@ extern int wax, way, wah, waw; /* win…
extern unsigned int bh, blw, bpos; /* bar height, bar layout la…
extern unsigned int ntags, numlockmask; /* number of tags, numl…
extern void (*handler[LASTEvent])(XEvent *); /* event handler */
-extern Atom dwmprops, wmatom[WMLast], netatom[NetLast];
+extern Atom wmatom[WMLast], netatom[NetLast];
extern Bool selscreen, *seltags; /* seltags is array of Bool */
extern Client *clients, *sel, *stack; /* global client list and…
extern Cursor cursor[CurLast];
t@@ -96,13 +95,11 @@ void configure(Client *c); /* send syntheti…
void detach(Client *c); /* detaches c from global clien…
void focus(Client *c); /* focus c if visible && !NULL, …
void killclient(const char *arg); /* kill sel nicely */
-Bool getprops(Client *c); /* gets client properties */
void manage(Window w, XWindowAttributes *wa); /* manage new client */
void resize(Client *c, int x, int y,
int w, int h, Bool sizehints); /* resize with given coo…
-void setprops(Client *c); /* sets client properties */
void unban(Client *c); /* unbans c */
-void unmanage(Client *c, long state); /* unmanage c */
+void unmanage(Client *c); /* unmanage c */
void updatesizehints(Client *c); /* update the size hint variables of c…
void updatetitle(Client *c); /* update the name of c */
t@@ -131,7 +128,6 @@ void initlayouts(void); /* initiali…
Bool isarrange(void (*func)()); /* returns True if func is the …
Bool isfloating(void); /* returns True if floating layo…
Bool isvisible(Client *c); /* returns True if client is visible…
-void getdwmprops(void); /* gets dwm properties */
Client *nexttiled(Client *c); /* returns tiled successor of c */
void restack(void); /* restores z layers of all clients…
void setlayout(const char *arg); /* sets layout, NULL means next layout…
diff --git a/event.c b/event.c
t@@ -221,7 +221,7 @@ destroynotify(XEvent *e) {
XDestroyWindowEvent *ev = &e->xdestroywindow;
if((c = getclient(ev->window)))
- unmanage(c, WithdrawnState);
+ unmanage(c);
}
static void
t@@ -332,10 +332,8 @@ unmapnotify(XEvent *e) {
Client *c;
XUnmapEvent *ev = &e->xunmap;
- if((c = getclient(ev->window)) && (ev->event == root)) {
- if(ev->send_event || c->unmapped-- == 0)
- unmanage(c, WithdrawnState);
- }
+ if((c = getclient(ev->window)))
+ unmanage(c);
}
/* extern */
diff --git a/main.c b/main.c
t@@ -20,7 +20,7 @@ int screen, sx, sy, sw, sh, wax, way, waw, wah;
unsigned int bh, ntags;
unsigned int bpos = BARPOS;
unsigned int numlockmask = 0;
-Atom dwmprops, wmatom[WMLast], netatom[NetLast];
+Atom wmatom[WMLast], netatom[NetLast];
Bool *seltags;
Bool selscreen = True;
Client *clients = NULL;
t@@ -42,7 +42,7 @@ cleanup(void) {
close(STDIN_FILENO);
while(stack) {
unban(stack);
- unmanage(stack, NormalState);
+ unmanage(stack);
}
if(dc.font.set)
XFreeFontSet(dpy, dc.font.set);
t@@ -165,7 +165,6 @@ setup(void) {
XSetWindowAttributes wa;
/* init atoms */
- dwmprops = XInternAtom(dpy, "_DWM_PROPERTIES", False);
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
wmatom[WMName] = XInternAtom(dpy, "WM_NAME", False);
t@@ -231,7 +230,6 @@ setup(void) {
XSetFont(dpy, dc.gc, dc.font.xfont->fid);
/* multihead support */
selscreen = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
- getdwmprops();
}
/*
diff --git a/screen.c b/screen.c
t@@ -3,8 +3,6 @@
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
-#include <X11/Xatom.h>
#include <X11/Xutil.h>
/* static */
t@@ -28,7 +26,6 @@ typedef struct {
TAGS
RULES
-static char buf[512];
static unsigned int nrules = 0;
static unsigned int nlayouts = 0;
static unsigned int ltidx = 0; /* default */
t@@ -53,19 +50,6 @@ floating(void) { /* default floating layout */
resize(c, c->x, c->y, c->w, c->h, True);
}
-static void
-setdwmprops(void) {
- unsigned int i;
-
- for(i = 0; i < ntags && i < sizeof buf - 1; i++)
- buf[i] = seltags[i] ? '1' : '0';
- if(i < sizeof buf - 1)
- buf[i++] = (char)ltidx + '0';
- buf[i] = '\0';
- XChangeProperty(dpy, root, dwmprops, XA_STRING, 8,
- PropModeReplace, (unsigned char *)buf, i);
-}
-
LAYOUTS
/* extern */
t@@ -74,6 +58,7 @@ unsigned int blw = 0;
void
applyrules(Client *c) {
+ static char buf[512];
unsigned int i, j;
regmatch_t tmp;
Bool matched = False;
t@@ -215,20 +200,6 @@ isvisible(Client *c) {
return False;
}
-void
-getdwmprops(void) {
- unsigned int i;
-
- if(gettextprop(root, dwmprops, buf, sizeof buf)) {
- for(i = 0; i < ntags && i < sizeof buf - 1 && buf[i] != '\0'; …
- seltags[i] = buf[i] == '1';
- if(i < sizeof buf - 1 && buf[i] != '\0') {
- if((unsigned int)(buf[i] - '0') < nlayouts)
- ltidx = buf[i] - '0';
- }
- }
-}
-
Client *
nexttiled(Client *c) {
for(; c && (c->isfloating || !isvisible(c)); c = c->next);
t@@ -266,15 +237,17 @@ restack(void) {
void
setlayout(const char *arg) {
- int i;
+ unsigned int i;
if(!arg) {
if(++ltidx == nlayouts)
ltidx = 0;;
}
else {
- i = atoi(arg);
- if(i < 0 || i >= nlayouts)
+ for(i = 0; i < nlayouts; i++)
+ if(arg == layouts[i].symbol)
+ break;
+ if(i == nlayouts)
return;
ltidx = i;
}
t@@ -282,7 +255,6 @@ setlayout(const char *arg) {
arrange();
else
drawstatus();
- setdwmprops();
}
void
t@@ -296,7 +268,6 @@ tag(const char *arg) {
i = idxoftag(arg);
if(i >= 0 && i < ntags)
sel->tags[i] = True;
- setprops(sel);
arrange();
}
t@@ -315,10 +286,8 @@ togglefloating(const char *arg) {
if(!sel || isfloating())
return;
sel->isfloating = !sel->isfloating;
- if(sel->isfloating) {
+ if(sel->isfloating)
resize(sel, sel->x, sel->y, sel->w, sel->h, True);
- setprops(sel);
- }
arrange();
}
t@@ -352,7 +321,6 @@ toggletag(const char *arg) {
for(j = 0; j < ntags && !sel->tags[j]; j++);
if(j == ntags)
sel->tags[i] = True;
- setprops(sel);
arrange();
}
t@@ -365,7 +333,6 @@ toggleview(const char *arg) {
for(j = 0; j < ntags && !seltags[j]; j++);
if(j == ntags)
seltags[i] = True; /* cannot toggle last view */
- setdwmprops();
arrange();
}
t@@ -404,6 +371,5 @@ view(const char *arg) {
i = idxoftag(arg);
if(i >= 0 && i < ntags)
seltags[i] = True;
- setdwmprops();
arrange();
}
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.