Marcus MERIGHI <[email protected]> writes:
> Hello,
>
> I just stumbled over this and thought it deserves a friendly ping.
>
> Marcus
thanks for the interest in the diff :)
here's the diff re-attached for convenience, I've been using it for
almost two years now! Quoting my original email:
> The attached patch adds a group-last command for cwm. Admittedly,
> group-last probably makes sense only in sticky group mode; all it does
> is switching to the last group.
>
> I haven't added a default keybinding, so to test you have to add
> something like this to your .cwmrc
>
> bind-key 4-Tab group-last
Cheers
Index: calmwm.h
===================================================================
RCS file: /home/cvs/xenocara/app/cwm/calmwm.h,v
retrieving revision 1.375
diff -u -p -r1.375 calmwm.h
--- calmwm.h 16 Apr 2020 13:32:35 -0000 1.375
+++ calmwm.h 26 Jan 2022 18:48:19 -0000
@@ -214,6 +214,7 @@ struct screen_ctx {
struct region_q regionq;
struct group_q groupq;
struct group_ctx *group_active;
+ int group_last;
Colormap colormap;
Visual *visual;
struct {
@@ -501,6 +502,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_last(void *, struct cargs *);
void kbfunc_group_close(void *, struct cargs *);
void kbfunc_group_cycle(void *, struct cargs *);
void kbfunc_group_toggle_all(void *, struct cargs *);
Index: conf.c
===================================================================
RCS file: /home/cvs/xenocara/app/cwm/conf.c,v
retrieving revision 1.253
diff -u -p -r1.253 conf.c
--- conf.c 19 Nov 2021 19:13:14 -0000 1.253
+++ conf.c 26 Jan 2022 18:48:19 -0000
@@ -139,6 +139,7 @@ static const struct {
{ FUNC_SC(group-cycle, group_cycle, (CWM_CYCLE_FORWARD)) },
{ FUNC_SC(group-rcycle, group_cycle, (CWM_CYCLE_REVERSE)) },
+ { FUNC_SC(group-last, group_last, 0) },
{ FUNC_SC(group-toggle-all, group_toggle_all, 0) },
{ FUNC_SC(group-toggle-1, group_toggle, 1) },
{ FUNC_SC(group-toggle-2, group_toggle, 2) },
Index: cwmrc.5
===================================================================
RCS file: /home/cvs/xenocara/app/cwm/cwmrc.5,v
retrieving revision 1.76
diff -u -p -r1.76 cwmrc.5
--- cwmrc.5 16 Apr 2020 13:32:35 -0000 1.76
+++ cwmrc.5 26 Jan 2022 18:48:19 -0000
@@ -273,6 +273,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-last
+Show only the last viewed group.
.It group-close-[n]
Close all windows in group n, where n is 1-9.
.It group-toggle-all
Index: group.c
===================================================================
RCS file: /home/cvs/xenocara/app/cwm/group.c,v
retrieving revision 1.137
diff -u -p -r1.137 group.c
--- group.c 27 Feb 2020 14:56:39 -0000 1.137
+++ group.c 26 Jan 2022 18:48:19 -0000
@@ -215,6 +215,9 @@ group_only(struct screen_ctx *sc, int id
{
struct group_ctx *gc;
+ if (sc->group_active->num != idx)
+ sc->group_last = sc->group_active->num;
+
TAILQ_FOREACH(gc, &sc->groupq, entry) {
if (gc->num == idx)
group_show(gc);
Index: kbfunc.c
===================================================================
RCS file: /home/cvs/xenocara/app/cwm/kbfunc.c,v
retrieving revision 1.170
diff -u -p -r1.170 kbfunc.c
--- kbfunc.c 20 Mar 2020 18:50:08 -0000 1.170
+++ kbfunc.c 26 Jan 2022 18:48:19 -0000
@@ -479,6 +479,14 @@ kbfunc_group_only(void *ctx, struct carg
}
void
+kbfunc_group_last(void *ctx, struct cargs *cargs)
+{
+ struct screen_ctx *sc = ctx;
+
+ group_only(ctx, sc->group_last);
+}
+
+void
kbfunc_group_toggle(void *ctx, struct cargs *cargs)
{
group_toggle(ctx, cargs->flag);
Index: screen.c
===================================================================
RCS file: /home/cvs/xenocara/app/cwm/screen.c,v
retrieving revision 1.97
diff -u -p -r1.97 screen.c
--- screen.c 24 Mar 2020 14:47:29 -0000 1.97
+++ screen.c 26 Jan 2022 18:48:19 -0000
@@ -53,6 +53,7 @@ screen_init(int which)
sc->visual = DefaultVisual(X_Dpy, sc->which);
sc->cycling = 0;
sc->hideall = 0;
+ sc->group_last = 1;
conf_screen(sc);