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.h8 Nov 2018 15:49:42 - 1.362
+++ calmwm.h23 Jan 2019 08:09:36 -
@@ -451,6 +451,7 @@ int group_holds_only_sticky(struct gr
voidgroup_init(struct screen_ctx *, int);
voidgroup_movetogroup(struct client_ctx *, int);
voidgroup_only(struct screen_ctx *, int);
+voidgroup_delete(struct screen_ctx *, int);
int group_restore(struct client_ctx *);
voidgroup_show(struct group_ctx *);
voidgroup_toggle_membership(struct client_ctx *);
@@ -508,6 +509,7 @@ void
kbfunc_client_toggle_group(void
voidkbfunc_client_movetogroup(void *, struct cargs *);
voidkbfunc_group_toggle(void *, struct cargs *);
voidkbfunc_group_only(void *, struct cargs *);
+voidkbfunc_group_delete(void *, struct cargs *);
voidkbfunc_group_cycle(void *, struct cargs *);
voidkbfunc_group_alltoggle(void *, struct cargs *);
voidkbfunc_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 - 1.242
+++ conf.c 23 Jan 2019 08:09:36 -
@@ -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 - 1.70
+++ cwmrc.5 23 Jan 2019 08:09:37 -
@@ -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 - 1.128
+++ group.c 23 Jan 2019 08:09:37 -
@@ -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, >groupq, entry) {
+ if (gc->num == idx) {
+ TAILQ_FOREACH(cc, >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.c29 Dec 2017 20:03:46 - 1.159
+++ kbfunc.c23 Jan 2019 08:09:37 -
@@ -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);