dwm-floatrules-20210801-138b405.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-floatrules-20210801-138b405.diff (2313B)
       ---
            1 diff --git a/config.def.h b/config.def.h
            2 index a2ac963..e8c0978 100644
            3 --- a/config.def.h
            4 +++ b/config.def.h
            5 @@ -26,9 +26,9 @@ static const Rule rules[] = {
            6           *        WM_CLASS(STRING) = instance, class
            7           *        WM_NAME(STRING) = title
            8           */
            9 -        /* class      instance    title       tags mask     isfloating   monitor */
           10 -        { "Gimp",     NULL,       NULL,       0,            1,           -1 },
           11 -        { "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 },
           12 +        /* class      instance    title       tags mask     isfloating   monitor    float x,y,w,h         floatborderpx*/
           13 +        { "Gimp",     NULL,       NULL,       0,            1,           -1,        50,50,500,500,        5 },
           14 +        { "Firefox",  NULL,       NULL,       1 << 8,       0,           -1,        50,50,500,500,        5 },
           15  };
           16  
           17  /* layout(s) */
           18 diff --git a/dwm.c b/dwm.c
           19 index 5e4d494..a03ca15 100644
           20 --- a/dwm.c
           21 +++ b/dwm.c
           22 @@ -93,6 +93,8 @@ struct Client {
           23          int bw, oldbw;
           24          unsigned int tags;
           25          int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
           26 +        int floatborderpx;
           27 +        int hasfloatbw;
           28          Client *next;
           29          Client *snext;
           30          Monitor *mon;
           31 @@ -139,6 +141,8 @@ typedef struct {
           32          unsigned int tags;
           33          int isfloating;
           34          int monitor;
           35 +        int floatx, floaty, floatw, floath;
           36 +        int floatborderpx;
           37  } Rule;
           38  
           39  /* function declarations */
           40 @@ -300,6 +304,16 @@ applyrules(Client *c)
           41                  {
           42                          c->isfloating = r->isfloating;
           43                          c->tags |= r->tags;
           44 +                        if (r->floatborderpx >= 0) {
           45 +                                c->floatborderpx = r->floatborderpx;
           46 +                                c->hasfloatbw = 1;
           47 +                        }
           48 +                        if (r->isfloating) {
           49 +                                if (r->floatx >= 0) c->x = c->mon->mx + r->floatx;
           50 +                                if (r->floaty >= 0) c->y = c->mon->my + r->floaty;
           51 +                                if (r->floatw >= 0) c->w = r->floatw;
           52 +                                if (r->floath >= 0) c->h = r->floath;
           53 +                        }
           54                          for (m = mons; m && m->num != r->monitor; m = m->next);
           55                          if (m)
           56                                  c->mon = m;
           57 @@ -1282,7 +1296,10 @@ resizeclient(Client *c, int x, int y, int w, int h)
           58          c->oldy = c->y; c->y = wc.y = y;
           59          c->oldw = c->w; c->w = wc.width = w;
           60          c->oldh = c->h; c->h = wc.height = h;
           61 -        wc.border_width = c->bw;
           62 +        if (c->isfloating && c->hasfloatbw && !c->isfullscreen)
           63 +                wc.border_width = c->floatborderpx;
           64 +        else
           65 +                wc.border_width = c->bw;
           66          XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
           67          configure(c);
           68          XSync(dpy, False);
           69 -- 
           70 2.32.0
           71