Index | Thread | Search

From:
Walter Alejandro Iglesias <wai@roquesor.com>
Subject:
Re: cwm(1): add window-snap-center function
To:
Job Snijders <job@openbsd.org>
Cc:
tech@openbsd.org
Date:
Wed, 13 Aug 2025 15:27:28 +0200

Download raw body.

Thread
On Tue, Aug 12, 2025 at 09:01:52PM +0000, Job Snijders wrote:
> This adds 'window-snap-center' to the 'window-snap-*' family of
> functions. With this function users can center the window. Thoughts?

I like it. :-)

> 
> Index: calmwm.h
> ===================================================================
> RCS file: /cvs/xenocara/app/cwm/calmwm.h,v
> diff -u -p -r1.379 calmwm.h
> --- calmwm.h	20 Jul 2023 14:39:34 -0000	1.379
> +++ calmwm.h	12 Aug 2025 20:55:19 -0000
> @@ -55,6 +55,7 @@
>  #define CWM_LEFT		0x0004
>  #define CWM_RIGHT		0x0008
>  #define CWM_BIGAMOUNT		0x0010
> +#define CWM_CENTER		0x0020
>  #define CWM_UP_BIG		(CWM_UP | CWM_BIGAMOUNT)
>  #define CWM_DOWN_BIG		(CWM_DOWN | CWM_BIGAMOUNT)
>  #define CWM_LEFT_BIG		(CWM_LEFT | CWM_BIGAMOUNT)
> Index: conf.c
> ===================================================================
> RCS file: /cvs/xenocara/app/cwm/conf.c,v
> diff -u -p -r1.256 conf.c
> --- conf.c	20 Jul 2023 14:39:34 -0000	1.256
> +++ conf.c	12 Aug 2025 20:55:19 -0000
> @@ -102,6 +102,7 @@ static const struct {
>  	{ FUNC_CC(window-movetogroup-7, client_movetogroup, 7) },
>  	{ FUNC_CC(window-movetogroup-8, client_movetogroup, 8) },
>  	{ FUNC_CC(window-movetogroup-9, client_movetogroup, 9) },
> +	{ FUNC_CC(window-snap-center, client_snap, (CWM_CENTER)) },
>  	{ FUNC_CC(window-snap-up, client_snap, (CWM_UP)) },
>  	{ FUNC_CC(window-snap-down, client_snap, (CWM_DOWN)) },
>  	{ FUNC_CC(window-snap-right, client_snap, (CWM_RIGHT)) },
> Index: cwmrc.5
> ===================================================================
> RCS file: /cvs/xenocara/app/cwm/cwmrc.5,v
> diff -u -p -r1.78 cwmrc.5
> --- cwmrc.5	20 Jul 2023 14:39:34 -0000	1.78
> +++ cwmrc.5	12 Aug 2025 20:55:20 -0000
> @@ -401,6 +401,8 @@ pixels right.
>  Resize window 10 times
>  .Ar moveamount
>  pixels left.
> +.It window-snap-center
> +Snap window to center.
>  .It window-snap-up
>  Snap window to top edge.
>  .It window-snap-down
> Index: kbfunc.c
> ===================================================================
> RCS file: /cvs/xenocara/app/cwm/kbfunc.c,v
> diff -u -p -r1.175 kbfunc.c
> --- kbfunc.c	10 Apr 2024 19:38:22 -0000	1.175
> +++ kbfunc.c	12 Aug 2025 20:55:20 -0000
> @@ -320,6 +320,13 @@ kbfunc_client_snap(void *ctx, struct car
>  			    (cc->bwidth * 2);
>  			flags &= ~CWM_DOWN;
>  		}
> +		if (flags & CWM_CENTER) {
> +			cc->geom.x = area.x +
> +			    (area.w - cc->geom.w - cc->bwidth) / 2;
> +			cc->geom.y = area.y +
> +			    (area.h - cc->geom.h - cc->bwidth) / 2;
> +			flags &= ~CWM_CENTER;
> +		}
>  	}
>  	client_move(cc);
>  	client_ptr_inbound(cc, 1);
> 
> 

-- 
Walter