Hi, Here's an updated diff from Omar Polo's addition of group-last command to cwm. I've been using it without issues and it's really handy to be able to switch back to the previous workspace you were on with it.
Many thanks to Omar Polo for doing all the original work. I've just updated the diff so it applies cleanly. OK? Tom Index: calmwm.h =================================================================== RCS file: /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 10 Oct 2021 19:13:41 -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: /cvs/xenocara/app/cwm/conf.c,v retrieving revision 1.252 diff -u -p -r1.252 conf.c --- conf.c 16 Apr 2020 13:32:35 -0000 1.252 +++ conf.c 10 Oct 2021 19:13:41 -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: /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 10 Oct 2021 19:13:41 -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: /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 10 Oct 2021 19:13:41 -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: /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 10 Oct 2021 19:13:41 -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: /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 10 Oct 2021 19:13:41 -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);