/* 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 prop[128];
-
static void
attachstack(Client *c) {
c->snext = stack;
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
XKillClient(dpy, sel->win);
}
-Bool
-getprops(Client *c) {
- unsigned int i;
- Bool result = False;
-
- if(gettextprop(c->win, dwmprops, prop, sizeof prop)) {
- for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
- if((c->tags[i] = prop[i] == '1'))
- result = True;
- if(i < sizeof prop - 1 && prop[i] != '\0')
- c->isfloating = prop[i] == '1';
- }
- return result;
-}
-
void
manage(Window w, XWindowAttributes *wa) {
unsigned int i;
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 windows require this */
ban(c);
+ XMapWindow(dpy, c->win);
arrange();
}
}
}
-void
-setprops(Client *c) {
- unsigned int i;
-
- for(i = 0; i < ntags && i < sizeof prop - 1; i++)
- prop[i] = c->tags[i] ? '1' : '0';
- if(i < sizeof prop - 1)
- prop[i++] = c->isfloating ? '1' : '0';
- prop[i] = '\0';
- XChangeProperty(dpy, c->win, dwmprops, XA_STRING, 8,
- PropModeReplace, (unsigned char *)prop, 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;
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