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?

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

Reply via email to