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);
 

Reply via email to