Adapted from a diff by Splex <splecks@rejii.com>
ok marco
ws_next
.It Cm M- Ns Aq Cm Left
ws_prev
ws_next
.It Cm M- Ns Aq Cm Left
ws_prev
+.It Cm M- Ns Aq Cm Up
+ws_next_all
+.It Cm M- Ns Aq Cm Down
+ws_prev_all
.It Cm M-a
ws_prior
.It Cm M-S- Ns Aq Cm Right
.It Cm M-a
ws_prior
.It Cm M-S- Ns Aq Cm Right
Switch to next workspace with a window in it.
.It Cm ws_prev
Switch to previous workspace with a window in it.
Switch to next workspace with a window in it.
.It Cm ws_prev
Switch to previous workspace with a window in it.
+.It Cm ws_next_all
+Switch to next workspace.
+.It Cm ws_prev_all
+Switch to previous workspace.
.It Cm ws_prior
Switch to last visited workspace.
.It Cm screen_next
.It Cm ws_prior
Switch to last visited workspace.
.It Cm screen_next
#define SWM_ARG_ID_CYCLEWS_DOWN (41)
#define SWM_ARG_ID_CYCLESC_UP (42)
#define SWM_ARG_ID_CYCLESC_DOWN (43)
#define SWM_ARG_ID_CYCLEWS_DOWN (41)
#define SWM_ARG_ID_CYCLESC_UP (42)
#define SWM_ARG_ID_CYCLESC_DOWN (43)
+#define SWM_ARG_ID_CYCLEWS_UP_ALL (44)
+#define SWM_ARG_ID_CYCLEWS_DOWN_ALL (45)
#define SWM_ARG_ID_STACKINC (50)
#define SWM_ARG_ID_STACKDEC (51)
#define SWM_ARG_ID_SS_ALL (60)
#define SWM_ARG_ID_STACKINC (50)
#define SWM_ARG_ID_STACKDEC (51)
#define SWM_ARG_ID_SS_ALL (60)
{
union arg a;
struct swm_screen *s = r->s;
{
union arg a;
struct swm_screen *s = r->s;
DNPRINTF(SWM_D_WS, "cyclews id %d "
"in screen[%d]:%dx%d+%d+%d ws %d\n", args->id,
DNPRINTF(SWM_D_WS, "cyclews id %d "
"in screen[%d]:%dx%d+%d+%d ws %d\n", args->id,
a.id = r->ws->idx;
do {
switch (args->id) {
a.id = r->ws->idx;
do {
switch (args->id) {
+ case SWM_ARG_ID_CYCLEWS_UP_ALL:
+ cycle_all = 1;
+ /* FALLTHROUGH */
case SWM_ARG_ID_CYCLEWS_UP:
if (a.id < SWM_WS_MAX - 1)
a.id++;
else
a.id = 0;
break;
case SWM_ARG_ID_CYCLEWS_UP:
if (a.id < SWM_WS_MAX - 1)
a.id++;
else
a.id = 0;
break;
+ case SWM_ARG_ID_CYCLEWS_DOWN_ALL:
+ cycle_all = 1;
+ /* FALLTHROUGH */
case SWM_ARG_ID_CYCLEWS_DOWN:
if (a.id > 0)
a.id--;
case SWM_ARG_ID_CYCLEWS_DOWN:
if (a.id > 0)
a.id--;
- if (cycle_empty == 0 && TAILQ_EMPTY(&s->ws[a.id].winlist))
+ if (!cycle_all &&
+ (cycle_empty == 0 && TAILQ_EMPTY(&s->ws[a.id].winlist)))
continue;
if (cycle_visible == 0 && s->ws[a.id].r != NULL)
continue;
continue;
if (cycle_visible == 0 && s->ws[a.id].r != NULL)
continue;
kf_ws_10,
kf_ws_next,
kf_ws_prev,
kf_ws_10,
kf_ws_next,
kf_ws_prev,
+ kf_ws_next_all,
+ kf_ws_prev_all,
kf_ws_prior,
kf_screen_next,
kf_screen_prev,
kf_ws_prior,
kf_screen_next,
kf_screen_prev,
{ "ws_10", switchws, {.id = 9} },
{ "ws_next", cyclews, {.id = SWM_ARG_ID_CYCLEWS_UP} },
{ "ws_prev", cyclews, {.id = SWM_ARG_ID_CYCLEWS_DOWN} },
{ "ws_10", switchws, {.id = 9} },
{ "ws_next", cyclews, {.id = SWM_ARG_ID_CYCLEWS_UP} },
{ "ws_prev", cyclews, {.id = SWM_ARG_ID_CYCLEWS_DOWN} },
+ { "ws_next_all", cyclews, {.id = SWM_ARG_ID_CYCLEWS_UP_ALL} },
+ { "ws_prev_all", cyclews, {.id = SWM_ARG_ID_CYCLEWS_DOWN_ALL} },
{ "ws_prior", priorws, {0} },
{ "screen_next", cyclescr, {.id = SWM_ARG_ID_CYCLESC_UP} },
{ "screen_prev", cyclescr, {.id = SWM_ARG_ID_CYCLESC_DOWN} },
{ "ws_prior", priorws, {0} },
{ "screen_next", cyclescr, {.id = SWM_ARG_ID_CYCLESC_UP} },
{ "screen_prev", cyclescr, {.id = SWM_ARG_ID_CYCLESC_DOWN} },
setkeybinding(MODKEY, XK_0, kf_ws_10, NULL);
setkeybinding(MODKEY, XK_Right, kf_ws_next, NULL);
setkeybinding(MODKEY, XK_Left, kf_ws_prev, NULL);
setkeybinding(MODKEY, XK_0, kf_ws_10, NULL);
setkeybinding(MODKEY, XK_Right, kf_ws_next, NULL);
setkeybinding(MODKEY, XK_Left, kf_ws_prev, NULL);
+ setkeybinding(MODKEY, XK_Up, kf_ws_next_all, NULL);
+ setkeybinding(MODKEY, XK_Down, kf_ws_prev_all, NULL);
setkeybinding(MODKEY, XK_a, kf_ws_prior, NULL);
setkeybinding(MODKEY|ShiftMask, XK_Right, kf_screen_next, NULL);
setkeybinding(MODKEY|ShiftMask, XK_Left, kf_screen_prev, NULL);
setkeybinding(MODKEY, XK_a, kf_ws_prior, NULL);
setkeybinding(MODKEY|ShiftMask, XK_Right, kf_screen_next, NULL);
setkeybinding(MODKEY|ShiftMask, XK_Left, kf_screen_prev, NULL);
bind[ws_10] = MOD+eacute
bind[ws_next] = MOD+Right
bind[ws_prev] = MOD+Left
bind[ws_10] = MOD+eacute
bind[ws_next] = MOD+Right
bind[ws_prev] = MOD+Left
+bind[ws_next_all] = MOD+Up
+bind[ws_prev_all] = MOD+Down
bind[screen_next] = MOD+Shift+Right
bind[screen_prev] = MOD+Shift+Left
bind[mvws_1] = MOD+Shift+plus
bind[screen_next] = MOD+Shift+Right
bind[screen_prev] = MOD+Shift+Left
bind[mvws_1] = MOD+Shift+plus
bind[ws_10] = MOD+0
bind[ws_next] = MOD+Right
bind[ws_prev] = MOD+Left
bind[ws_10] = MOD+0
bind[ws_next] = MOD+Right
bind[ws_prev] = MOD+Left
+bind[ws_next_all] = MOD+Up
+bind[ws_prev_all] = MOD+Down
bind[screen_next] = MOD+Shift+Right
bind[screen_prev] = MOD+Shift+Left
bind[mvws_1] = MOD+Shift+1
bind[screen_next] = MOD+Shift+Right
bind[screen_prev] = MOD+Shift+Left
bind[mvws_1] = MOD+Shift+1
bind[ws_10] = MOD+agrave
bind[ws_next] = MOD+Right
bind[ws_prev] = MOD+Left
bind[ws_10] = MOD+agrave
bind[ws_next] = MOD+Right
bind[ws_prev] = MOD+Left
+bind[ws_next_all] = MOD+Up
+bind[ws_prev_all] = MOD+Down
bind[screen_next] = MOD+Shift+Right
bind[screen_prev] = MOD+Shift+Left
bind[mvws_1] = MOD+Shift+ampersand
bind[screen_next] = MOD+Shift+Right
bind[screen_prev] = MOD+Shift+Left
bind[mvws_1] = MOD+Shift+ampersand
bind[ws_10] = MOD+0
bind[ws_next] = MOD+Right
bind[ws_prev] = MOD+Left
bind[ws_10] = MOD+0
bind[ws_next] = MOD+Right
bind[ws_prev] = MOD+Left
+bind[ws_next_all] = MOD+Up
+bind[ws_prev_all] = MOD+Down
bind[screen_next] = MOD+Shift+Right
bind[screen_prev] = MOD+Shift+Left
bind[mvws_1] = MOD+Shift+1
bind[screen_next] = MOD+Shift+Right
bind[screen_prev] = MOD+Shift+Left
bind[mvws_1] = MOD+Shift+1