X-Git-Url: https://jasonwoof.com/gitweb/?p=dwm.git;a=blobdiff_plain;f=dwm.c;h=319619248e73d6a06341b0541562af1a1d4d7a03;hp=dc9f31800a171d738ae9be2844622a024f66ec04;hb=a5572a6547873c1296066496e2c7346245ac2a18;hpb=9e9918ad967382660aea6bd7e9634f5995de04e0 diff --git a/dwm.c b/dwm.c index dc9f318..3196192 100644 --- a/dwm.c +++ b/dwm.c @@ -211,6 +211,7 @@ static void setmfact(const Arg *arg); 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); @@ -363,6 +364,9 @@ applyrules(Client *c) { && (!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); @@ -1200,8 +1204,13 @@ manage(Window w, XWindowAttributes *wa) { 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; @@ -1269,8 +1278,11 @@ maprequest(XEvent *e) { 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); } @@ -1795,6 +1807,14 @@ sigchld(int unused) { } 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) { @@ -1809,9 +1829,6 @@ spawn(const Arg *arg) { } 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));