Feature / [Settings] Shortcuts for movements on workspaces 1 to 10 (instead of 1 to 4)

Situation

Currently, in the Settings > Keyboard > (Keyboard shortcuts) View and Customize Shortcuts > Navigation, there is the possibility to customize movements to/between workspaces, from 1 to 4.

The shortcuts are often assigned to Super + <number> (where <number> is often 1, 2, 3, 4), such as:

  • Super + 1 is “Switch to workspace 1”
  • Super + Shift + 1 is “Move window to workspace 1”

Question

I wonder if it would be possible to add in the settings, customization for workspaces movements, 1 to 10, as there are 10 numbers on a traditional keyboard (1 to 9 and 0 aka workspace 10).

It would then be possible, for example, to assign:

  • Super + <i> to “Switch to workspace
  • Super + shift + <i> to “Move window to workspace

where <i> is one of theyboard number key 1,2,3,4,5,6,7,8,9,0, making it 10 possible workspaces

How to make it happen?

If this is a feature that could be welcome?

I wonder how to best get started with it?

I am available to open a PR on one of Gnome’s project, maybe:

Notes

  • it seems the maximum number of workspaces is 36 (via the settings GUI)
  • (new users can only put 3 links in a post)

Currently I’ve been using this bash script to have this behavior:

#!/usr/bin/env bash
# Sets workspaces 1‑10 and binds Super+1…9 and Super+0

set -e

NUM=10
echo "Setting number of workspaces to $NUM …"
gsettings set org.gnome.desktop.wm.preferences num-workspaces "$NUM"

# -------------------------------------------------
# Free Super+1..9 from the Shell's app switcher
# (otherwise they override workspace bindings)
# -------------------------------------------------
for i in {1..9}; do
    gsettings set org.gnome.shell.keybindings "switch-to-application-$i" "[]"
done

# ---------------------------------------------------------
# Define shortcuts for workspaces 1‑10 (Super+1..9, Super+0)
# ---------------------------------------------------------
SCHEMA="org.gnome.desktop.wm.keybindings"

for ws in {1..10}; do
    digit="$ws"
    if [ "$ws" -eq 10 ]; then
        digit=0
    fi

    switch_key="<Super>$digit"
    move_key="<Super><Shift>$digit"

    gsettings set "$SCHEMA" "switch-to-workspace-$ws" "['$switch_key']"
    gsettings set "$SCHEMA" "move-to-workspace-$ws" "['$move_key']"

    echo "Workspace $ws → Super+$digit (switch) / Super+Shift+$digit (move)"
done

echo "All shortcuts set. Use Super+<digit> to switch, Super+Shift+<digit> to move windows."