This patch for cwm adds group-delete to delete all windows in a group. I usually end up with many disposable windows in a group, so this makes it easier to manage them.
The main function added is group_delete(struct screen_ctx *sc, int idx). Index: calmwm.h =================================================================== RCS file: /cvs/xenocara/app/cwm/calmwm.h,v retrieving revision 1.362 diff -u -p -r1.362 calmwm.h --- calmwm.h 8 Nov 2018 15:49:42 -0000 1.362 +++ calmwm.h 23 Jan 2019 08:09:36 -0000 @@ -451,6 +451,7 @@ int group_holds_only_sticky(struct gr void group_init(struct screen_ctx *, int); void group_movetogroup(struct client_ctx *, int); void group_only(struct screen_ctx *, int); +void group_delete(struct screen_ctx *, int); int group_restore(struct client_ctx *); void group_show(struct group_ctx *); void group_toggle_membership(struct client_ctx *); @@ -508,6 +509,7 @@ void kbfunc_client_toggle_group(void void kbfunc_client_movetogroup(void *, struct cargs *); void kbfunc_group_toggle(void *, struct cargs *); void kbfunc_group_only(void *, struct cargs *); +void kbfunc_group_delete(void *, struct cargs *); void kbfunc_group_cycle(void *, struct cargs *); void kbfunc_group_alltoggle(void *, struct cargs *); void kbfunc_menu_client(void *, struct cargs *); Index: conf.c =================================================================== RCS file: /cvs/xenocara/app/cwm/conf.c,v retrieving revision 1.242 diff -u -p -r1.242 conf.c --- conf.c 13 Nov 2018 17:37:13 -0000 1.242 +++ conf.c 23 Jan 2019 08:09:36 -0000 @@ -143,6 +143,15 @@ static const struct { { FUNC_SC(group-only-7, group_only, 7) }, { FUNC_SC(group-only-8, group_only, 8) }, { FUNC_SC(group-only-9, group_only, 9) }, + { FUNC_SC(group-delete-1, group_delete, 1) }, + { FUNC_SC(group-delete-2, group_delete, 2) }, + { FUNC_SC(group-delete-3, group_delete, 3) }, + { FUNC_SC(group-delete-4, group_delete, 4) }, + { FUNC_SC(group-delete-5, group_delete, 5) }, + { FUNC_SC(group-delete-6, group_delete, 6) }, + { FUNC_SC(group-delete-7, group_delete, 7) }, + { FUNC_SC(group-delete-8, group_delete, 8) }, + { FUNC_SC(group-delete-9, group_delete, 9) }, { FUNC_SC(pointer-move-up, ptrmove, (CWM_UP)) }, { FUNC_SC(pointer-move-down, ptrmove, (CWM_DOWN)) }, Index: cwmrc.5 =================================================================== RCS file: /cvs/xenocara/app/cwm/cwmrc.5,v retrieving revision 1.70 diff -u -p -r1.70 cwmrc.5 --- cwmrc.5 29 Dec 2017 20:03:46 -0000 1.70 +++ cwmrc.5 23 Jan 2019 08:09:37 -0000 @@ -288,6 +288,8 @@ menu. Toggle visibility of group n, where n is 1-9. .It group-only-[n] Show only group n, where n is 1-9, hiding other groups. +.It group-delete-[n] +Delete windows in group n, where n is 1-9. .It group-toggle-all Toggle visibility of all groups. .It window-group Index: group.c =================================================================== RCS file: /cvs/xenocara/app/cwm/group.c,v retrieving revision 1.128 diff -u -p -r1.128 group.c --- group.c 23 Jan 2018 13:48:49 -0000 1.128 +++ group.c 23 Jan 2019 08:09:37 -0000 @@ -250,6 +250,24 @@ group_only(struct screen_ctx *sc, int id } void +group_delete(struct screen_ctx *sc, int idx) +{ + struct group_ctx *gc; + struct client_ctx *cc; + + if (idx < 0 || idx >= Conf.ngroups) + return; + + TAILQ_FOREACH(gc, &sc->groupq, entry) { + if (gc->num == idx) { + TAILQ_FOREACH(cc, &gc->clientq, group_entry) { + XKillClient(X_Dpy, cc->win); + } + } + } +} + +void group_cycle(struct screen_ctx *sc, int flags) { struct group_ctx *newgc, *oldgc, *showgroup = NULL; Index: kbfunc.c =================================================================== RCS file: /cvs/xenocara/app/cwm/kbfunc.c,v retrieving revision 1.159 diff -u -p -r1.159 kbfunc.c --- kbfunc.c 29 Dec 2017 20:03:46 -0000 1.159 +++ kbfunc.c 23 Jan 2019 08:09:37 -0000 @@ -440,6 +440,12 @@ kbfunc_group_only(void *ctx, struct carg } void +kbfunc_group_delete(void *ctx, struct cargs *cargs) +{ + group_delete(ctx, cargs->flag); +} + +void kbfunc_group_cycle(void *ctx, struct cargs *cargs) { group_cycle(ctx, cargs->flag);