PaperWM
Tiled scrollable window management for GNOME Shell
Install / Use
/learn @paperwm/PaperWMREADME
PaperWM
PaperWM is a GNOME Shell extension which provides scrollable tiling of windows and per monitor workspaces. It's inspired by paper notebooks and tiling window managers.
While technically an extension it's to a large extent built on top of the Gnome desktop rather than merely extending it.
PaperWM aims to continually support current stable GNOME Shell versions (currently GNOME 47-49). Older versions of PaperWM can generally be installed on older GNOME Shell versions (see Install via Source for more information on targeting an older/EOL Gnome version).
New features and fixes aren't generally backported to older Gnome shell versions. Pull requests for fixes to older PaperWM versions (that run on previous Gnome versions) will be accepted if the submitter can help test and update related documentation.
Have questions or comments? Please ask on our Github Discussions board.
Installation
Install via extensions.gnome.org (recommended)
<img alt="Install it on extensions.gnome.org" src="media/get-it-on-ego.svg" width="150px">
Install via Source
Clone the repo and check out the branch for the GNOME Shell version you're running:
- 45-49 (currently developed/supported): https://github.com/paperwm/PaperWM/tree/release
- 42-44 (EOL): https://github.com/paperwm/PaperWM/tree/gnome-44
- 40-41 (EOL): https://github.com/paperwm/PaperWM/tree/gnome-40
- 3.28-3.38 (EOL): https://github.com/paperwm/PaperWM/tree/gnome-3.38
then run the make install
from the repository. The installer will create a link to the repo in
~/.local/share/gnome-shell/extensions. It will then ask if you want to enable PaperWM.
make install # install, load and enable paperwm
Running the extension will automatically install a user config file as described in User configuration & development.
➡️ You'll need to restart GNOME Shell after installing PaperWM, e.g. logout then login, or restart in place with an
alt-F2and enteringr(X11 only).After logging back in, you can then enable PaperWM via the
Extensionsapplication, or by running the following command from the command-line:
/usr/bin/gnome-extensions enable paperwm@paperwm.github.com
if you have run into issues, delete any older
paperwm@...symlinks from~/.local/share/gnome-shell/extensionsand re-run theinstall.shscript.
Uninstall PaperWM (if installed via source)
To uninstall simply run make uninstall.
Try without installing
This repo provides a lightweight VM based on NixOS to try PaperWM and aid with development. You can launch it if Nix is installed on your system using this command:
nix run .\#vm
Alternatively, the VM can also be launched with GPU acceleration, by installing NixGL first:
nixGLIntel nix run .\#vm -- -device virtio-gpu-gl -display gtk,gl=on
# or nixGLNvidia depending on your host GPU
Contributing
Users are encouraged to submit issues and Pull Requests!
➡️ Please ensure pull requests are based off, and submitted to, develop branch.
Pull requests submitted to the
releasebranch will not be accepted (but don't worry, if you accidentally submit a PR to thereleasebranch, the target branch will automatically be changed todevelopbranch).
Usage
Most functionality is available using a mouse, eg. activating a window at the edge of the monitor by clicking on it. Wayland support gestures (See the Touchpad Gestures section). PaperWM is designed to work work well with keyboard + mouse, trackpads etc.
Most keybindings start with the <kbd>Super</kbd> modifier (by default), which is usually the Windows key, or on mac keyboards it's the Command key. It's possible to modify the keyboard layout so that <kbd>Super</kbd> is switched with <kbd>Alt</kbd> making all the keybindings easier to reach. This can be done through Gnome Tweaks under Keyboard & Mouse ⟶ Additional Layout Options ⟶ Alt/Win key behavior ⟶ Left Alt is swapped with Left Win.
Most keybindings will grab the keyboard while <kbd>Super</kbd> is held down, only switching focus when <kbd>Super</kbd> is released. <kbd>Escape</kbd> will abort the navigation taking you back to the previously active window.
All PaperWM keybinds can be changed (and disabled) via PaperWM extension settings, which can be accessed through Extensions ⟶ PaperWM ⟶ Settings.
Window management and navigation is based around the three following concepts.
Scrollable window tiling

New windows are automatically tiled to the right of the active window (see here for dynamically changing the insertion position of new windows), taking up as much height as possible. <kbd>Super</kbd><kbd>Return</kbd> will open a new window of the same type as the active window.
Activating a window will ensure it's fully visible, scrolling the tiling if necessary. By default, pressing <kbd>Super</kbd><kbd>.</kbd> activates the window to the right. <kbd>Super</kbd><kbd>,</kbd> activates the window to the left. On a US keyboard these keys are intuitively marked by <kbd><</kbd> and <kbd>></kbd>, they are also ordered the same way on almost all keyboard layouts. Navigating around windows brings up the minimap as can be seen in the above screenshot. The minimap will stay visible as long as <kbd>Super</kbd> is continually being pressed.
Pressing <kbd>Super</kbd><kbd>I</kbd> will move the window to the right below the active window, tiling them vertically in a column. <kbd>Super</kbd><kbd>O</kbd> will do the opposite, pushing the bottom window out of the current column.
You can scroll the tiling by swiping the trackpad horizontally with three fingers (Wayland only), swiping the panel on a touch screen, or using the mouse scroll wheel on the topbar.
<kbd>Alt</kbd><kbd>Tab</kbd> is of course also available.
| Default window Keybindings | Can be changed in PaperWM extension settings |
| ------ | ------- |
| <kbd>Super</kbd><kbd>Return</kbd> or <kbd>Super</kbd><kbd>N</kbd> | Open a new windows (of the current application) |
| <kbd>Super</kbd><kbd>Backspace</kbd> | Close the active window |
| <kbd>Super</kbd><kbd>.</kbd> or <kbd>Super</kbd><kbd>,</kbd> | Switch to the next or previous window |
| <kbd>Super</kbd><kbd>Left</kbd> or <kbd>Super</kbd><kbd>Right</kbd> | Activate the window to the left or right |
| <kbd>Super</kbd><kbd>Up</kbd> or <kbd>Super</kbd><kbd>Down</kbd> | Activate the window above or below |
| <kbd>Super</kbd><kbd>Home</kbd> or <kbd>Super</kbd><kbd>End</kbd> | Activate the first or last window |
| Not set by default (set in extension settings) | Switch to the [second to eleventh] window |
| <kbd>Super</kbd><kbd>Tab</kbd> or <kbd>Alt</kbd><kbd>Tab</kbd> | Cycle through previously active windows |
| <kbd>Shift</kbd><kbd>Super</kbd><kbd>Tab</kbd> or <kbd>Shift</kbd><kbd>Alt</kbd><kbd>Tab</kbd> | Cycle through previously active windows (backward order) |
| <kbd>Ctrl</kbd><kbd>Alt</kbd><kbd>Tab</kbd> | Cycle through previously active scratch windows |
| <kbd>Shift</kbd><kbd>Ctrl</kbd><kbd>Alt</kbd><kbd>Tab</kbd> | Cycle through previously active scratch windows (backward order) |
| <kbd>Shift</kbd><kbd>Super</kbd><kbd>C</kbd> | Switch between window focus modes |
| <kbd>Shift</kbd><kbd>Super</kbd><kbd>W</kbd> | Switch between positions for creating/dropping new windows |
| Not set by default (set in extension settings) | Create/drop windows to the right of current window |
| Not set by default (set in extension settings) | Create/drop windows to the left of current window |
| Not set by default (set in extension settings) | Create/drop windows in vertical stack (down) |
| Not set by default (set in extension settings) | Create/drop windows in vertical stack (up) |
| Not set by default (set in extension settings) | Create/drop windows at start position |
| Not set by default (set in extension settings)
Related Skills
node-connect
331.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
81.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
331.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
81.5kCommit, push, and open a PR
