]> code.delx.au - spectrwm/commitdiff
Increase workspace hard limit to 22.
authorReginald Kennedy <rk@rejii.com>
Sat, 7 Apr 2012 17:59:41 +0000 (01:59 +0800)
committerReginald Kennedy <rk@rejii.com>
Sat, 7 Apr 2012 22:56:13 +0000 (06:56 +0800)
Add new keybindings for workspaces 11 through 22.
Defaults for ws_n and mvws_n are NOD+(F1-F12) and MOD+Shift+(F1-F12),
respectively.

Add a new configuration option 'workspace_limit' to make it possible for
the user to adjust the number of available workspaces.  Default is 10.

ok marco

spectrwm.1
spectrwm.c
spectrwm.conf
spectrwm_us.conf

index 67aa5513789dd40dece7c16497efc4fe9f666b29..f2df9c9855614a7b09c36e95203fe1be78ff188c 100644 (file)
@@ -241,6 +241,8 @@ Enable by setting to 1.
 .It Ic window_name_enabled
 Enable or disable displaying the window name in the status bar.
 Enable by setting to 1.
+.It Ic workspace_limit
+Set the total number of workspaces available.  Minimum is 1, maximum is 20.
 .El
 .Pp
 Colors need to be specified per the
@@ -343,7 +345,7 @@ Resize window while maintaining it centered
 .Pp
 The default key bindings are described below:
 .Pp
-.Bl -tag -width "M-j, M-<TAB>XXX" -offset indent -compact
+.Bl -tag -width "M-j, M-<TAB>XXXXXX" -offset indent -compact
 .It Cm M-S- Ns Aq Cm Return
 term
 .It Cm M-p
@@ -394,10 +396,10 @@ bar_toggle
 wind_del
 .It Cm M-S-x
 wind_kill
-.It Cm M- Ns Aq Ar n
-.Pf ws_ Ar n
-.It Cm M-S- Ns Aq Ar n
-.Pf mvws_ Ar n
+.It Cm M- Ns Aq Ar 1-9,0,F1-F12
+.Pf ws_ Aq Ar 1-22
+.It Cm M-S- Ns Aq Ar 1-9,0,F1-F12
+.Pf mvws_ Ns Aq Ar 1-22
 .It Cm M- Ns Aq Cm Right
 ws_next
 .It Cm M- Ns Aq Cm Left
@@ -516,13 +518,13 @@ Switch to workspace
 .Ar n ,
 where
 .Ar n
-is 1 through 10.
+is 1 through workspace_limit.
 .It Cm mvws_ Ns Ar n
 Move current window to workspace
 .Ar n ,
 where
 .Ar n
-is 1 through 10.
+is 1 through workspace_limit.
 .It Cm ws_next
 Switch to next workspace with a window in it.
 .It Cm ws_prev
index b527e918a8fbc316a16f7befb5d630811b9eebf7..9a61347ac0b692782f5aee43676092b8d525dd65 100644 (file)
@@ -446,7 +446,9 @@ enum        { SWM_S_COLOR_BAR, SWM_S_COLOR_BAR_BORDER, SWM_S_COLOR_BAR_FONT,
          SWM_S_COLOR_FOCUS, SWM_S_COLOR_UNFOCUS, SWM_S_COLOR_MAX };
 
 /* physical screen mapping */
-#define SWM_WS_MAX             (10)
+#define SWM_WS_MAX             (22)    /* hard limit */
+int            workspace_limit = 10;   /* soft limit */
+
 struct swm_screen {
        int                     idx;    /* screen index */
        struct swm_region_list  rl;     /* list of regions on this screen */
@@ -1402,11 +1404,11 @@ bar_urgent(char *s, ssize_t sz)
        if (urgent_enabled == 0)
                return;
 
-       for (i = 0; i < SWM_WS_MAX; i++)
+       for (i = 0; i < workspace_limit; i++)
                urgent[i] = 0;
 
        for (i = 0; i < ScreenCount(display); i++)
-               for (j = 0; j < SWM_WS_MAX; j++)
+               for (j = 0; j < workspace_limit; j++)
                        TAILQ_FOREACH(win, &screens[i].ws[j].winlist, entry) {
                                wmh = XGetWMHints(display, win->id);
                                if (wmh == NULL)
@@ -1418,7 +1420,7 @@ bar_urgent(char *s, ssize_t sz)
                        }
 
        strlcat(s, "* ", sz);
-       for (i = 0; i < SWM_WS_MAX; i++) {
+       for (i = 0; i < workspace_limit; i++) {
                if (urgent[i])
                        snprintf(b, sizeof b, "%d ", i + 1);
                else
@@ -1847,7 +1849,7 @@ unmap_all(void)
        int                     i, j;
 
        for (i = 0; i < ScreenCount(display); i++)
-               for (j = 0; j < SWM_WS_MAX; j++)
+               for (j = 0; j < workspace_limit; j++)
                        TAILQ_FOREACH(win, &screens[i].ws[j].winlist, entry)
                                unmap_window(win);
 }
@@ -1936,7 +1938,7 @@ find_unmanaged_window(Window id)
        int                     i, j;
 
        for (i = 0; i < ScreenCount(display); i++)
-               for (j = 0; j < SWM_WS_MAX; j++)
+               for (j = 0; j < workspace_limit; j++)
                        TAILQ_FOREACH(win, &screens[i].ws[j].unmanagedlist,
                            entry)
                                if (id == win->id)
@@ -1953,7 +1955,7 @@ find_window(Window id)
        unsigned int            nc;
 
        for (i = 0; i < ScreenCount(display); i++)
-               for (j = 0; j < SWM_WS_MAX; j++)
+               for (j = 0; j < workspace_limit; j++)
                        TAILQ_FOREACH(win, &screens[i].ws[j].winlist, entry)
                                if (id == win->id)
                                        return (win);
@@ -1970,7 +1972,7 @@ find_window(Window id)
 
        /* look for parent */
        for (i = 0; i < ScreenCount(display); i++)
-               for (j = 0; j < SWM_WS_MAX; j++)
+               for (j = 0; j < workspace_limit; j++)
                        TAILQ_FOREACH(win, &screens[i].ws[j].winlist, entry)
                                if (wpr == win->id)
                                        return (win);
@@ -2058,7 +2060,7 @@ kill_refs(struct ws_win *win)
 
        for (i = 0; i < ScreenCount(display); i++)
                TAILQ_FOREACH(r, &screens[i].rl, entry)
-                       for (x = 0; x < SWM_WS_MAX; x++) {
+                       for (x = 0; x < workspace_limit; x++) {
                                ws = &r->s->ws[x];
                                if (win == ws->focus)
                                        ws->focus = NULL;
@@ -2080,7 +2082,7 @@ validate_win(struct ws_win *testwin)
 
        for (i = 0; i < ScreenCount(display); i++)
                TAILQ_FOREACH(r, &screens[i].rl, entry)
-                       for (x = 0; x < SWM_WS_MAX; x++) {
+                       for (x = 0; x < workspace_limit; x++) {
                                ws = &r->s->ws[x];
                                TAILQ_FOREACH(win, &ws->winlist, entry)
                                        if (win == testwin)
@@ -2099,7 +2101,7 @@ validate_ws(struct workspace *testws)
        /* validate all ws */
        for (i = 0; i < ScreenCount(display); i++)
                TAILQ_FOREACH(r, &screens[i].rl, entry)
-                       for (x = 0; x < SWM_WS_MAX; x++) {
+                       for (x = 0; x < workspace_limit; x++) {
                                ws = &r->s->ws[x];
                                if (ws == testws)
                                        return (0);
@@ -2167,7 +2169,7 @@ unfocus_all(void)
        DNPRINTF(SWM_D_FOCUS, "unfocus_all\n");
 
        for (i = 0; i < ScreenCount(display); i++)
-               for (j = 0; j < SWM_WS_MAX; j++)
+               for (j = 0; j < workspace_limit; j++)
                        TAILQ_FOREACH(win, &screens[i].ws[j].winlist, entry)
                                unfocus_win(win);
 }
@@ -2249,6 +2251,9 @@ switchws(struct swm_region *r, union arg *args)
        if (!(r && r->s))
                return;
 
+       if (wsid >= workspace_limit)
+               return;
+
        this_r = r;
        old_ws = this_r->ws;
        new_ws = &this_r->s->ws[wsid];
@@ -2311,7 +2316,7 @@ cyclews(struct swm_region *r, union arg *args)
                        cycle_all = 1;
                        /* FALLTHROUGH */
                case SWM_ARG_ID_CYCLEWS_UP:
-                       if (a.id < SWM_WS_MAX - 1)
+                       if (a.id < workspace_limit - 1)
                                a.id++;
                        else
                                a.id = 0;
@@ -2323,7 +2328,7 @@ cyclews(struct swm_region *r, union arg *args)
                        if (a.id > 0)
                                a.id--;
                        else
-                               a.id = SWM_WS_MAX - 1;
+                               a.id = workspace_limit - 1;
                        break;
                default:
                        return;
@@ -3239,6 +3244,9 @@ send_to_ws(struct swm_region *r, union arg *args)
        unsigned char           ws_idx_str[SWM_PROPLEN];
        union arg               a;
 
+       if (wsid >= workspace_limit)
+               return;
+
        if (r && r->ws && r->ws->focus)
                win = r->ws->focus;
        else
@@ -3437,7 +3445,7 @@ search_workspace(struct swm_region *r, union arg *args)
        if ((lfile = fdopen(select_list_pipe[1], "w")) == NULL)
                return;
 
-       for (i = 0; i < SWM_WS_MAX; i++) {
+       for (i = 0; i < workspace_limit; i++) {
                ws = &r->s->ws[i];
                if (ws == NULL)
                        continue;
@@ -3605,7 +3613,7 @@ search_resp_search_workspace(char *resp, unsigned long len)
        p = strchr(q, ':');
        if (p != NULL)
                *p = '\0';
-       ws_idx = strtonum(q, 1, SWM_WS_MAX, &errstr);
+       ws_idx = strtonum(q, 1, workspace_limit, &errstr);
        if (errstr) {
                DNPRINTF(SWM_D_MISC, "workspace idx is %s: %s",
                    errstr, q);
@@ -4184,6 +4192,18 @@ enum keyfuncid {
        kf_ws_8,
        kf_ws_9,
        kf_ws_10,
+       kf_ws_11,
+       kf_ws_12,
+       kf_ws_13,
+       kf_ws_14,
+       kf_ws_15,
+       kf_ws_16,
+       kf_ws_17,
+       kf_ws_18,
+       kf_ws_19,
+       kf_ws_20,
+       kf_ws_21,
+       kf_ws_22,
        kf_ws_next,
        kf_ws_prev,
        kf_ws_next_all,
@@ -4201,6 +4221,18 @@ enum keyfuncid {
        kf_mvws_8,
        kf_mvws_9,
        kf_mvws_10,
+       kf_mvws_11,
+       kf_mvws_12,
+       kf_mvws_13,
+       kf_mvws_14,
+       kf_mvws_15,
+       kf_mvws_16,
+       kf_mvws_17,
+       kf_mvws_18,
+       kf_mvws_19,
+       kf_mvws_20,
+       kf_mvws_21,
+       kf_mvws_22,
        kf_bar_toggle,
        kf_wind_kill,
        kf_wind_del,
@@ -4276,6 +4308,18 @@ struct keyfunc {
        { "ws_8",               switchws,       {.id = 7} },
        { "ws_9",               switchws,       {.id = 8} },
        { "ws_10",              switchws,       {.id = 9} },
+       { "ws_11",              switchws,       {.id = 10} },
+       { "ws_12",              switchws,       {.id = 11} },
+       { "ws_13",              switchws,       {.id = 12} },
+       { "ws_14",              switchws,       {.id = 13} },
+       { "ws_15",              switchws,       {.id = 14} },
+       { "ws_16",              switchws,       {.id = 15} },
+       { "ws_17",              switchws,       {.id = 16} },
+       { "ws_18",              switchws,       {.id = 17} },
+       { "ws_19",              switchws,       {.id = 18} },
+       { "ws_20",              switchws,       {.id = 19} },
+       { "ws_21",              switchws,       {.id = 20} },
+       { "ws_22",              switchws,       {.id = 21} },
        { "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} },
@@ -4293,6 +4337,18 @@ struct keyfunc {
        { "mvws_8",             send_to_ws,     {.id = 7} },
        { "mvws_9",             send_to_ws,     {.id = 8} },
        { "mvws_10",            send_to_ws,     {.id = 9} },
+       { "mvws_11",            send_to_ws,     {.id = 10} },
+       { "mvws_12",            send_to_ws,     {.id = 11} },
+       { "mvws_13",            send_to_ws,     {.id = 12} },
+       { "mvws_14",            send_to_ws,     {.id = 13} },
+       { "mvws_15",            send_to_ws,     {.id = 14} },
+       { "mvws_16",            send_to_ws,     {.id = 15} },
+       { "mvws_17",            send_to_ws,     {.id = 16} },
+       { "mvws_18",            send_to_ws,     {.id = 17} },
+       { "mvws_19",            send_to_ws,     {.id = 18} },
+       { "mvws_20",            send_to_ws,     {.id = 19} },
+       { "mvws_21",            send_to_ws,     {.id = 20} },
+       { "mvws_22",            send_to_ws,     {.id = 21} },
        { "bar_toggle",         bar_toggle,     {0} },
        { "wind_kill",          wkill,          {.id = SWM_ARG_ID_KILLWINDOW} },
        { "wind_del",           wkill,          {.id = SWM_ARG_ID_DELETEWINDOW} },
@@ -4886,6 +4942,18 @@ setup_keys(void)
        setkeybinding(MODKEY,           XK_8,           kf_ws_8,        NULL);
        setkeybinding(MODKEY,           XK_9,           kf_ws_9,        NULL);
        setkeybinding(MODKEY,           XK_0,           kf_ws_10,       NULL);
+       setkeybinding(MODKEY,           XK_F1,          kf_ws_11,       NULL);
+       setkeybinding(MODKEY,           XK_F2,          kf_ws_12,       NULL);
+       setkeybinding(MODKEY,           XK_F3,          kf_ws_13,       NULL);
+       setkeybinding(MODKEY,           XK_F4,          kf_ws_14,       NULL);
+       setkeybinding(MODKEY,           XK_F5,          kf_ws_15,       NULL);
+       setkeybinding(MODKEY,           XK_F6,          kf_ws_16,       NULL);
+       setkeybinding(MODKEY,           XK_F7,          kf_ws_17,       NULL);
+       setkeybinding(MODKEY,           XK_F8,          kf_ws_18,       NULL);
+       setkeybinding(MODKEY,           XK_F9,          kf_ws_19,       NULL);
+       setkeybinding(MODKEY,           XK_F10,         kf_ws_20,       NULL);
+       setkeybinding(MODKEY,           XK_F11,         kf_ws_21,       NULL);
+       setkeybinding(MODKEY,           XK_F12,         kf_ws_22,       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);
@@ -4903,6 +4971,18 @@ setup_keys(void)
        setkeybinding(MODKEY|ShiftMask, XK_8,           kf_mvws_8,      NULL);
        setkeybinding(MODKEY|ShiftMask, XK_9,           kf_mvws_9,      NULL);
        setkeybinding(MODKEY|ShiftMask, XK_0,           kf_mvws_10,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F1,          kf_mvws_11,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F2,          kf_mvws_12,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F3,          kf_mvws_13,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F4,          kf_mvws_14,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F5,          kf_mvws_15,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F6,          kf_mvws_16,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F7,          kf_mvws_17,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F8,          kf_mvws_18,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F9,          kf_mvws_19,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F10,         kf_mvws_20,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F11,         kf_mvws_21,     NULL);
+       setkeybinding(MODKEY|ShiftMask, XK_F12,         kf_mvws_22,     NULL);
        setkeybinding(MODKEY,           XK_b,           kf_bar_toggle,  NULL);
        setkeybinding(MODKEY,           XK_Tab,         kf_focus_next,  NULL);
        setkeybinding(MODKEY|ShiftMask, XK_Tab,         kf_focus_prev,  NULL);
@@ -5197,8 +5277,8 @@ setup_quirks(void)
 
 enum   { SWM_S_BAR_DELAY, SWM_S_BAR_ENABLED, SWM_S_BAR_BORDER_WIDTH,
          SWM_S_STACK_ENABLED, SWM_S_CLOCK_ENABLED, SWM_S_CLOCK_FORMAT,
-         SWM_S_CYCLE_EMPTY, SWM_S_CYCLE_VISIBLE, SWM_S_SS_ENABLED,
-         SWM_S_TERM_WIDTH, SWM_S_TITLE_CLASS_ENABLED,
+         SWM_S_CYCLE_EMPTY, SWM_S_CYCLE_VISIBLE, SWM_S_WORKSPACE_LIMIT,
+         SWM_S_SS_ENABLED, SWM_S_TERM_WIDTH, SWM_S_TITLE_CLASS_ENABLED,
          SWM_S_TITLE_NAME_ENABLED, SWM_S_WINDOW_NAME_ENABLED, SWM_S_URGENT_ENABLED,
          SWM_S_FOCUS_MODE, SWM_S_DISABLE_BORDER, SWM_S_BORDER_WIDTH,
          SWM_S_BAR_FONT, SWM_S_BAR_ACTION, SWM_S_SPAWN_TERM,
@@ -5254,6 +5334,13 @@ setconfvalue(char *selector, char *value, int flags)
        case SWM_S_CYCLE_VISIBLE:
                cycle_visible = atoi(value);
                break;
+       case SWM_S_WORKSPACE_LIMIT:
+               workspace_limit = atoi(value);
+               if (workspace_limit > SWM_WS_MAX)
+                       workspace_limit = SWM_WS_MAX;
+               else if (workspace_limit < 1)
+                       workspace_limit = 1;
+               break;
        case SWM_S_SS_ENABLED:
                ss_enabled = atoi(value);
                break;
@@ -5376,7 +5463,7 @@ setautorun(char *selector, char *value, int flags)
        if (sscanf(value, "ws[%d]:%1023c", &ws_id, s) != 2)
                errx(1, "invalid autorun entry, should be 'ws[<idx>]:command'");
        ws_id--;
-       if (ws_id < 0 || ws_id >= SWM_WS_MAX)
+       if (ws_id < 0 || ws_id >= workspace_limit)
                errx(1, "autorun: invalid workspace %d", ws_id + 1);
 
        /*
@@ -5441,7 +5528,7 @@ setlayout(char *selector, char *value, int flags)
                    "<master_grow>:<master_add>:<stack_inc>:<always_raise>:"
                    "<type>'");
        ws_id--;
-       if (ws_id < 0 || ws_id >= SWM_WS_MAX)
+       if (ws_id < 0 || ws_id >= workspace_limit)
                errx(1, "layout: invalid workspace %d", ws_id + 1);
 
        if (!strcasecmp(s, "vertical"))
@@ -5515,6 +5602,7 @@ struct config_option configopt[] = {
        { "color_unfocus",              setconfcolor,   SWM_S_COLOR_UNFOCUS },
        { "cycle_empty",                setconfvalue,   SWM_S_CYCLE_EMPTY },
        { "cycle_visible",              setconfvalue,   SWM_S_CYCLE_VISIBLE },
+       { "workspace_limit",            setconfvalue,   SWM_S_WORKSPACE_LIMIT },
        { "dialog_ratio",               setconfvalue,   SWM_S_DIALOG_RATIO },
        { "verbose_layout",             setconfvalue,   SWM_S_VERBOSE_LAYOUT },
        { "modkey",                     setconfmodkey,  0 },
@@ -5832,7 +5920,8 @@ manage_window(Window id)
                p = NULL;
        } else if (prop && win->transient == 0) {
                DNPRINTF(SWM_D_PROP, "manage_window: get _SWM_WS: %s\n", prop);
-               ws_idx = strtonum((const char *)prop, 0, 9, &errstr);
+               ws_idx = strtonum((const char *)prop, 0, workspace_limit - 1,
+                   &errstr);
                if (errstr) {
                        DNPRINTF(SWM_D_EVENT, "manage_window: window: #%s: %s",
                            errstr, prop);
@@ -6634,7 +6723,7 @@ new_region(struct swm_screen *s, int x, int y, int w, int h)
 
        /* if we don't have a workspace already, find one */
        if (ws == NULL) {
-               for (i = 0; i < SWM_WS_MAX; i++)
+               for (i = 0; i < workspace_limit; i++)
                        if (s->ws[i].r == NULL) {
                                ws = &s->ws[i];
                                break;
@@ -6838,7 +6927,7 @@ setup_screens(void)
 
                /* init all workspaces */
                /* XXX these should be dynamically allocated too */
-               for (j = 0; j < SWM_WS_MAX; j++) {
+               for (j = 0; j < workspace_limit; j++) {
                        ws = &screens[i].ws[j];
                        ws->idx = j;
                        ws->name = NULL;
index 5e460d5ccbec3e03e143865fafe450ff2f29b936..69ae88396b8ff3d6e6edd0c1e533c1d8aff4e3f6 100644 (file)
@@ -1,11 +1,18 @@
 # PLEASE READ THE MAN PAGE BEFORE EDITING THIS FILE!
 # http://opensource.conformal.com/cgi-bin/man-cgi?spectrwm
-
-# colors for focussed and unfocussed window borders
 # NOTE: all colors in this file are in hex! see XQueryColor for examples
+
+# workspace_limit      = 22
+# focus_mode           = default
+
+# window decoration
+# border_width         = 1
 # color_focus          = red
 # color_unfocus                = rgb:88/88/88
 
+# Remove window border when bar is disabled and there is only one window in workspace
+# disable_border               = 1
+
 # bar settings
 # bar_enabled          = 1
 # bar_border_width     = 1
@@ -24,9 +31,6 @@
 # title_class_enabled  = 0
 # window_name_enabled  = 0
 # verbose_layout               = 1
-# focus_mode           = default
-# disable_border               = 1
-# border_width         = 1
 # urgent_enabled               = 1
 
 # spawn app
index f2ce3927bf4177c12b8d51d38848a18fde4ab43e..6b54d1c84aa0c2d7d945dbf270128738a1d00372 100644 (file)
@@ -29,6 +29,18 @@ bind[ws_7]           = MOD+7
 bind[ws_8]             = MOD+8
 bind[ws_9]             = MOD+9
 bind[ws_10]            = MOD+0
+bind[ws_11]            = MOD+F1
+bind[ws_12]            = MOD+F2
+bind[ws_13]            = MOD+F3
+bind[ws_14]            = MOD+F4
+bind[ws_15]            = MOD+F5
+bind[ws_16]            = MOD+F6
+bind[ws_17]            = MOD+F7
+bind[ws_18]            = MOD+F8
+bind[ws_19]            = MOD+F9
+bind[ws_20]            = MOD+F10
+bind[ws_21]            = MOD+F11
+bind[ws_22]            = MOD+F12
 bind[ws_next]          = MOD+Right
 bind[ws_prev]          = MOD+Left
 bind[ws_next_all]      = MOD+Up
@@ -46,6 +58,18 @@ bind[mvws_7]         = MOD+Shift+7
 bind[mvws_8]           = MOD+Shift+8
 bind[mvws_9]           = MOD+Shift+9
 bind[mvws_10]          = MOD+Shift+0
+bind[mvws_11]          = MOD+Shift+F1
+bind[mvws_12]          = MOD+Shift+F2
+bind[mvws_13]          = MOD+Shift+F3
+bind[mvws_14]          = MOD+Shift+F4
+bind[mvws_15]          = MOD+Shift+F5
+bind[mvws_16]          = MOD+Shift+F6
+bind[mvws_17]          = MOD+Shift+F7
+bind[mvws_18]          = MOD+Shift+F8
+bind[mvws_19]          = MOD+Shift+F9
+bind[mvws_20]          = MOD+Shift+F10
+bind[mvws_21]          = MOD+Shift+F11
+bind[mvws_22]          = MOD+Shift+F12
 bind[bar_toggle]       = MOD+b
 bind[focus_next]       = MOD+Tab
 bind[focus_prev]       = MOD+Shift+Tab