static void setup(void);
static void showhide(Client *c);
static void sigchld(int unused);
+static void kbspawn(const Arg *arg);
static void spawn(const Arg *arg);
static void tag(const Arg *arg);
static void tagmon(const Arg *arg);
&& (!r->instance || strstr(instance, r->instance)))
{
c->isfloating = r->isfloating;
+ if(r->isfloating) {
+ c->x = -1; c->y = -2; // secret code for centered
+ }
c->tags |= r->tags;
c->screen_hog = r->screen_hog;
for(m = mons; m && m->num != r->monitor; m = m->next);
applyrules(c);
}
/* geometry */
- c->x = c->oldx = wa->x;
- c->y = c->oldy = wa->y;
+ if(c->x == -1 && c->y == -2) { // secret code for centered
+ c->x = c->oldx = (c->mon->ww - wa->width) / 2;
+ c->y = c->oldy = (c->mon->wh - wa->height) / 2;
+ } else {
+ c->x = c->oldx = wa->x;
+ c->y = c->oldy = wa->y;
+ }
c->w = c->oldw = wa->width;
c->h = c->oldh = wa->height;
c->oldbw = wa->border_width;
if(!XGetWindowAttributes(dpy, ev->window, &wa))
return;
- if(wa.override_redirect)
+ if(wa.override_redirect) {
+ key_buffer_len = 0;
+ key_buffering = False;
return;
+ }
if(!wintoclient(ev->window))
manage(ev->window, &wa);
}
}
void
+kbspawn(const Arg *arg) {
+ key_buffering = True;
+ key_buffer_len = 0;
+ grab_typing_keys();
+ spawn(arg);
+}
+
+void
spawn(const Arg *arg) {
int tag = 0, i;
if(arg->v == termcmd) {
}
if(arg->v == dmenucmd)
dmenumon[0] = '0' + selmon->num;
- key_buffering = True;
- key_buffer_len = 0;
- grab_typing_keys();
if(fork() == 0) {
if(dpy)
close(ConnectionNumber(dpy));