A GNOME Shell extension that arranges workspaces in a two-dimensional grid instead of a
single line, and lets you move around it with Ctrl+Alt+arrow keys in all four
directions.
Workspaces stay dynamic. GNOME still creates one as you fill the last and still removes the ones you empty; they are simply wrapped into rows of a configurable width, so the grid grows and shrinks by rows as you use it. There is always exactly one spare row at the end, which is the two-dimensional version of GNOME's rule of keeping one spare workspace.
Everything is flat. There is no cube, no rotation and no perspective — a workspace switch pans the viewport across the grid, and the overview lays the workspaces out as a plane around the active one.
- Mutter's workspace layout is switched to a real 2D grid, which is what makes
Ctrl+Alt+Up/Downnavigate between rows. Mutter has supported this since its Metacity days; nothing in GNOME Shell ever turns it on. - Workspace provisioning is taken over so the grid stays a full rectangle. Rows are added and removed at the end of the list, so an occupied workspace never changes index and therefore never changes cell.
- The overview pans across the grid in both axes, keeping the active workspace at its native size the way GNOME does.
- The thumbnail strip is replaced by a map of the grid, since a linear strip cannot show a shape that is not linear. Clicking a cell activates it; dropping a window on one moves the window there.
- The workspace switcher OSD is laid out as a grid for the same reason.
- Pressure barriers on all four screen edges, so dragging a window to any edge moves it to the neighbouring cell.
Touchpad gestures are GNOME's own and remain one-dimensional, which means sideways only.
Use Ctrl+Alt+Up/Down to change rows.
make installThen restart the shell — Alt+F2, then r. A real restart is required rather than
toggling the extension off and on: GJS caches ES modules, so a re-enable can still run the
previous version of the code.
make check syntax-checks the sources and validates the settings schema.
GNOME Shell 48. Tested on X11.
This project began as a fork of Desktop-Cube
by Simon Schneegans, and parts of it are still derived from that work — the extension
scaffolding, the preferences dialog, the pressure-barrier edge switching and the technique
of hooking into WorkspacesView and WorkspaceAnimationController to place the actors by
hand. The grid itself, the provisioning model, the minimap and the two-dimensional
overview are new. Files carry SPDX headers naming whichever of us holds copyright in them.
GPL-3.0-or-later. See LICENSE.