mirror of
https://github.com/vale981/spectrwm
synced 2025-03-05 09:51:38 -05:00
Cycle through all workspaces (empty or not) with M-<Up> and M-<Down>.
Adapted from a diff by Splex <splecks@rejii.com> ok marco
This commit is contained in:
parent
5f4a3fbd1a
commit
1c354dfac0
6 changed files with 33 additions and 1 deletions
|
@ -401,6 +401,10 @@ wind_kill
|
||||||
ws_next
|
ws_next
|
||||||
.It Cm M- Ns Aq Cm Left
|
.It Cm M- Ns Aq Cm Left
|
||||||
ws_prev
|
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
|
.It Cm M-a
|
||||||
ws_prior
|
ws_prior
|
||||||
.It Cm M-S- Ns Aq Cm Right
|
.It Cm M-S- Ns Aq Cm Right
|
||||||
|
@ -514,6 +518,10 @@ is 1 through 10.
|
||||||
Switch to next workspace with a window in it.
|
Switch to next workspace with a window in it.
|
||||||
.It Cm ws_prev
|
.It Cm ws_prev
|
||||||
Switch to previous workspace with a window in it.
|
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
|
.It Cm ws_prior
|
||||||
Switch to last visited workspace.
|
Switch to last visited workspace.
|
||||||
.It Cm screen_next
|
.It Cm screen_next
|
||||||
|
|
18
scrotwm.c
18
scrotwm.c
|
@ -425,6 +425,8 @@ union arg {
|
||||||
#define SWM_ARG_ID_CYCLEWS_DOWN (41)
|
#define SWM_ARG_ID_CYCLEWS_DOWN (41)
|
||||||
#define SWM_ARG_ID_CYCLESC_UP (42)
|
#define SWM_ARG_ID_CYCLESC_UP (42)
|
||||||
#define SWM_ARG_ID_CYCLESC_DOWN (43)
|
#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_STACKINC (50)
|
||||||
#define SWM_ARG_ID_STACKDEC (51)
|
#define SWM_ARG_ID_STACKDEC (51)
|
||||||
#define SWM_ARG_ID_SS_ALL (60)
|
#define SWM_ARG_ID_SS_ALL (60)
|
||||||
|
@ -2145,6 +2147,7 @@ cyclews(struct swm_region *r, union arg *args)
|
||||||
{
|
{
|
||||||
union arg a;
|
union arg a;
|
||||||
struct swm_screen *s = r->s;
|
struct swm_screen *s = r->s;
|
||||||
|
int cycle_all = 0;
|
||||||
|
|
||||||
DNPRINTF(SWM_D_WS, "cyclews id %d "
|
DNPRINTF(SWM_D_WS, "cyclews id %d "
|
||||||
"in screen[%d]:%dx%d+%d+%d ws %d\n", args->id,
|
"in screen[%d]:%dx%d+%d+%d ws %d\n", args->id,
|
||||||
|
@ -2153,12 +2156,18 @@ cyclews(struct swm_region *r, union arg *args)
|
||||||
a.id = r->ws->idx;
|
a.id = r->ws->idx;
|
||||||
do {
|
do {
|
||||||
switch (args->id) {
|
switch (args->id) {
|
||||||
|
case SWM_ARG_ID_CYCLEWS_UP_ALL:
|
||||||
|
cycle_all = 1;
|
||||||
|
/* FALLTHROUGH */
|
||||||
case SWM_ARG_ID_CYCLEWS_UP:
|
case SWM_ARG_ID_CYCLEWS_UP:
|
||||||
if (a.id < SWM_WS_MAX - 1)
|
if (a.id < SWM_WS_MAX - 1)
|
||||||
a.id++;
|
a.id++;
|
||||||
else
|
else
|
||||||
a.id = 0;
|
a.id = 0;
|
||||||
break;
|
break;
|
||||||
|
case SWM_ARG_ID_CYCLEWS_DOWN_ALL:
|
||||||
|
cycle_all = 1;
|
||||||
|
/* FALLTHROUGH */
|
||||||
case SWM_ARG_ID_CYCLEWS_DOWN:
|
case SWM_ARG_ID_CYCLEWS_DOWN:
|
||||||
if (a.id > 0)
|
if (a.id > 0)
|
||||||
a.id--;
|
a.id--;
|
||||||
|
@ -2169,7 +2178,8 @@ cyclews(struct swm_region *r, union arg *args)
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
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;
|
continue;
|
||||||
if (cycle_visible == 0 && s->ws[a.id].r != NULL)
|
if (cycle_visible == 0 && s->ws[a.id].r != NULL)
|
||||||
continue;
|
continue;
|
||||||
|
@ -3692,6 +3702,8 @@ enum keyfuncid {
|
||||||
kf_ws_10,
|
kf_ws_10,
|
||||||
kf_ws_next,
|
kf_ws_next,
|
||||||
kf_ws_prev,
|
kf_ws_prev,
|
||||||
|
kf_ws_next_all,
|
||||||
|
kf_ws_prev_all,
|
||||||
kf_ws_prior,
|
kf_ws_prior,
|
||||||
kf_screen_next,
|
kf_screen_next,
|
||||||
kf_screen_prev,
|
kf_screen_prev,
|
||||||
|
@ -3778,6 +3790,8 @@ struct keyfunc {
|
||||||
{ "ws_10", switchws, {.id = 9} },
|
{ "ws_10", switchws, {.id = 9} },
|
||||||
{ "ws_next", cyclews, {.id = SWM_ARG_ID_CYCLEWS_UP} },
|
{ "ws_next", cyclews, {.id = SWM_ARG_ID_CYCLEWS_UP} },
|
||||||
{ "ws_prev", cyclews, {.id = SWM_ARG_ID_CYCLEWS_DOWN} },
|
{ "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} },
|
{ "ws_prior", priorws, {0} },
|
||||||
{ "screen_next", cyclescr, {.id = SWM_ARG_ID_CYCLESC_UP} },
|
{ "screen_next", cyclescr, {.id = SWM_ARG_ID_CYCLESC_UP} },
|
||||||
{ "screen_prev", cyclescr, {.id = SWM_ARG_ID_CYCLESC_DOWN} },
|
{ "screen_prev", cyclescr, {.id = SWM_ARG_ID_CYCLESC_DOWN} },
|
||||||
|
@ -4378,6 +4392,8 @@ setup_keys(void)
|
||||||
setkeybinding(MODKEY, XK_0, kf_ws_10, NULL);
|
setkeybinding(MODKEY, XK_0, kf_ws_10, NULL);
|
||||||
setkeybinding(MODKEY, XK_Right, kf_ws_next, NULL);
|
setkeybinding(MODKEY, XK_Right, kf_ws_next, NULL);
|
||||||
setkeybinding(MODKEY, XK_Left, kf_ws_prev, 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, XK_a, kf_ws_prior, NULL);
|
||||||
setkeybinding(MODKEY|ShiftMask, XK_Right, kf_screen_next, NULL);
|
setkeybinding(MODKEY|ShiftMask, XK_Right, kf_screen_next, NULL);
|
||||||
setkeybinding(MODKEY|ShiftMask, XK_Left, kf_screen_prev, NULL);
|
setkeybinding(MODKEY|ShiftMask, XK_Left, kf_screen_prev, NULL);
|
||||||
|
|
|
@ -30,6 +30,8 @@ bind[ws_9] = MOD+iacute
|
||||||
bind[ws_10] = MOD+eacute
|
bind[ws_10] = MOD+eacute
|
||||||
bind[ws_next] = MOD+Right
|
bind[ws_next] = MOD+Right
|
||||||
bind[ws_prev] = MOD+Left
|
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_next] = MOD+Shift+Right
|
||||||
bind[screen_prev] = MOD+Shift+Left
|
bind[screen_prev] = MOD+Shift+Left
|
||||||
bind[mvws_1] = MOD+Shift+plus
|
bind[mvws_1] = MOD+Shift+plus
|
||||||
|
|
|
@ -30,6 +30,8 @@ bind[ws_9] = MOD+9
|
||||||
bind[ws_10] = MOD+0
|
bind[ws_10] = MOD+0
|
||||||
bind[ws_next] = MOD+Right
|
bind[ws_next] = MOD+Right
|
||||||
bind[ws_prev] = MOD+Left
|
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_next] = MOD+Shift+Right
|
||||||
bind[screen_prev] = MOD+Shift+Left
|
bind[screen_prev] = MOD+Shift+Left
|
||||||
bind[mvws_1] = MOD+Shift+1
|
bind[mvws_1] = MOD+Shift+1
|
||||||
|
|
|
@ -30,6 +30,8 @@ bind[ws_9] = MOD+ccedilla
|
||||||
bind[ws_10] = MOD+agrave
|
bind[ws_10] = MOD+agrave
|
||||||
bind[ws_next] = MOD+Right
|
bind[ws_next] = MOD+Right
|
||||||
bind[ws_prev] = MOD+Left
|
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_next] = MOD+Shift+Right
|
||||||
bind[screen_prev] = MOD+Shift+Left
|
bind[screen_prev] = MOD+Shift+Left
|
||||||
bind[mvws_1] = MOD+Shift+ampersand
|
bind[mvws_1] = MOD+Shift+ampersand
|
||||||
|
|
|
@ -30,6 +30,8 @@ bind[ws_9] = MOD+9
|
||||||
bind[ws_10] = MOD+0
|
bind[ws_10] = MOD+0
|
||||||
bind[ws_next] = MOD+Right
|
bind[ws_next] = MOD+Right
|
||||||
bind[ws_prev] = MOD+Left
|
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_next] = MOD+Shift+Right
|
||||||
bind[screen_prev] = MOD+Shift+Left
|
bind[screen_prev] = MOD+Shift+Left
|
||||||
bind[mvws_1] = MOD+Shift+1
|
bind[mvws_1] = MOD+Shift+1
|
||||||
|
|
Loading…
Add table
Reference in a new issue