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

Reply via email to