On Tue, Apr 11, 2017 at 06:00:21PM +0200, Gerrit Meyerheim wrote: > Hi @tech, > > The way cwm(1) currently implements tiling (off by default) is > corresponding to this for vtile, > > --------------------------------- > | | | > | | 1 | > | | | > | M ----------------- > | | | > | | 2 | > | | | > --------------------------------- > > <-------------> > w > > where 'w' is the original horizontal size of the master client when > vtile was invoked. The analogous is true for htile and vertical height. > > While this approach gives the greatest flexibility (as one can define > the size of the master area for each invocation of vtile) I most often > find myself wanting the following behaviour when using tiling, > > --------------------------------- > | | | > | | 1 | > | | | > | M ----------------- > | | | > | | 2 | > | | | > --------------------------------- > > <-------------> > w > > where 'w' is "0.5 x horizontal widht of the screen" for vtile and the > analogous for htile and height. > > The attached patch tries to implement this (replacing the current > approach). Of course, there would also be the possibility of having an > additional function (e.g. client_htile_half etc.). > > Thoughts?
I'd prefer that as well... Not sure what the others think. > > Best > > Gerrit > > > Index: client.c > =================================================================== > RCS file: /cvs/xenocara/app/cwm/client.c,v > retrieving revision 1.234 > diff -u -p -r1.234 client.c > --- client.c 6 Feb 2017 18:10:28 -0000 1.234 > +++ client.c 10 Apr 2017 12:23:48 -0000 > @@ -982,6 +982,7 @@ client_htile(struct client_ctx *cc) > cc->flags &= ~CLIENT_HMAXIMIZED; > cc->geom.x = area.x; > cc->geom.y = area.y; > + cc->geom.h = (area.h - (cc->bwidth * 2)) / 2; > cc->geom.w = area.w - (cc->bwidth * 2); > client_resize(cc, 1); > client_ptrwarp(cc); > @@ -1042,6 +1043,7 @@ client_vtile(struct client_ctx *cc) > cc->geom.x = area.x; > cc->geom.y = area.y; > cc->geom.h = area.h - (cc->bwidth * 2); > + cc->geom.w = (area.w - (cc->bwidth * 2)) / 2; > client_resize(cc, 1); > client_ptrwarp(cc); > > Index: cwmrc.5 > =================================================================== > RCS file: /cvs/xenocara/app/cwm/cwmrc.5,v > retrieving revision 1.66 > diff -u -p -r1.66 cwmrc.5 > --- cwmrc.5 15 Jan 2017 21:07:44 -0000 1.66 > +++ cwmrc.5 10 Apr 2017 12:23:48 -0000 > @@ -324,11 +324,13 @@ Vertically maximize current window (gap > .It window-hmaximize > Horizontally maximize current window (gap + border honored). > .It window-htile > -Current window is placed at the top of the screen and maximized > -horizontally, other windows in its group share remaining screen space. > +Current window is placed at the top of the screen, maximized > +horizontally and resized to half of the vertical screen space. Other > +windows in its group share remaining screen space. > .It window-vtile > -Current window is placed on the left of the screen and maximized > -vertically, other windows in its group share remaining screen space. > +Current window is placed on the left of the screen, maximized vertically > +and resized to half of the horizontal screen space. Other windows in its > +group share remaining screen space. > .It window-move > Move current window. > .It window-resize > -- Antoine
