How To Install Pop Shell Window Tiling Extension On Ubuntu 20.04, 20.10 Or 21.04, Fedora 32, 33 Or 34, Debian Bullseye Or Sid, And Arch Linux Or Manjaro

Pop!_OS 20.04 was released today, and probably the best new feature is the addition of Pop Shell, which features advanced tiling window management for the GNOME desktop.

But this is not just for Pop!_OS. If you use GNOME Shell 3.36 or 3.38 (edit: it also supports GNOME 40 now), you can give Pop Shell a try right now. This article explains how to install it on Ubuntu 21.04, 20.10 or 20.04, Fedora 32, 33 or 34, Debian Bullseye or Sid, and Arch Linux / Manjaro. 

[[Edit]] The extension now works with GNOME Shell 3.38 and thus, with Ubuntu 20.10 and Fedora 33, among others.

[[Edit 2]] Pop Shell now supports GNOME 40.

Pop Shell auto-tiling
Pop Shell with auto-tiling enabled on my Ubuntu 20.04 desktop, using an ultra-wide monitor

First, a bit more about Pop Shell. This is a short summary of Pop Shell. For a lot more, including the motivation behind creating it, a feature overview, and in-depth usage, please see the Pop Shell documentation.

This GNOME Shell extension is described as "a keyboard-driven layer for GNOME Shell which allows for quick and sensible navigation and management of windows", and it has two modes: stacking and auto-tile, so users can choose what they need. Switching between these two modes can be done from the extension menu from the top bar: disable the Tile Windows option and you'll be using the stacking mode.

In stacking (floating) mode, windows are allowed to overlap like on a traditional desktop, while in auto-tile mode, Pop Shell provides a tiling window manager experience where windows are automatically tiled.

Even when using stacking mode with Pop Shell though, you get some optional tiling window management features, like a grid-based display in which you can move and resize windows, snap to grid, window focus switching using the keyboard, and more.

Pop Shell launcher
Pop Shell Launcher

Pop Shell also comes with its own launcher (Super + /). This can be used not only to launch applications, but also to switch between windows (highlighting the selected application in the grid), execute commands directly or in a terminal, and it even has a calculator mode.

Pop Shell extension menu top bar
Pop Shell extension menu

From the Pop Shell menu from the top bar you can set the size of the gap between windows, toggle showing window tiles, and if Pop Shell should show active window hints (a border that's yellow by default), as well as allow you to change the hint color.

Pop Shell extension settings
Pop Shell extension settings

In the extension settings, which can be accessed using GNOME Tweaks or the new Extensions application, you'll find a few more options:

  • Snap to Grid (for the stacking mode: it enables window snapping to the grid when using the mouse to move and resize them)
  • Toggle smart gaps
  • Set the desired log level (for debugging purposes)
  • Change the size of both inner and outer gaps

The Pop Shell tiling window extension project page continues to show a message saying that this is in beta, but since Pop!_OS 20.04 includes this by default, I guess it's safe to say it's quite stable by now. 

This is a video by System76 presenting the Pop Shell auto-tiling feature on Pop!_OS 20.04:



Another very interesting tiling GNOME Shell extension is Material Shell, but it's quite buggy right now.

How to install Pop OS Shell (tiling window extension) on Ubuntu 20.04, 20.10 or 21.04, Fedora 32, 33 or 34, Debian Bullseye Or Sid, and Arch Linux / Manjaro


I have to remind you that Pop Shell only works with GNOME Shell 3.36, 3.38 and 40, so make sure you use this before proceeding.

It's also very important to note that installing Pop Shell will change some GNOME keyboard shortcuts (it's not just those mentioned on the Pop Shell page, but also others like workspace switching, moving a window to a different workspace, etc. - you can see those in the Pop Shell Shortcuts screenshot further down in this article). 

If you decide you no longer want to use this tiling window extension, you'll need to reset all GNOME keyboard shortcuts (there's a Reset All button in Settings -> Keyboard shortcuts, in the header bar; this resets all GNOME keyboard shortcuts but not custom shortcuts, which are shown at the bottom of the Settings -> Keyboard shortcuts window).

Pop Shell running in a Fedora 32 vm

Pop Shell tiling on Manjaro (running in a vm, that's why the screen is small)

Now let's install Pop Shell. Besides GNOME Shell 3.36, 3.38 or 40, you'll also need TypeScript 3.8 and GNU Make to build it, and Git to get the latest Pop Shell extension code from GitHub. Install these as follows:

  • Ubuntu 20.04, 20.10 or 21.04 / Debian Bullseye (testing) or Sid (unstable) since only these have GNOME Shell 3.36+:
sudo apt install node-typescript make git

  • Fedora 32:
sudo dnf install nodejs npm make git
 
The dnf install command doesn't contain nodejs-typescript because Fedora 32 has a very old version of this package, so to install TypeScript 3.8 you have 3 options: install it using NVM, use the script from the second part of this article to get npm to install global packages without root, or run npm -g typescript as root - I don't recommend the latter).

  • Fedora 33 or 34: the extension is now in the Fedora repositories so you can install it from there (skip the rest of instructions to install it from source from below):
sudo dnf install gnome-shell-extension-pop-shell

  • Arch Linux / Manjaro: Pop Shell is available on AUR, so you can install the Pop Shell tiling window extension without any extra steps (there's no need for the build/install steps below).

Now you can get the Pop Shell code from GitHub, build and install it for the current user on your GNOME 3.36, 3.38 or 40 desktop using:

git clone https://github.com/pop-os/shell

cd shell

make local-install

After running this command, it will install some stuff and then ask you if the extension should override your default GNOME keyboard shortcuts - answer "y" (yes). After the extension is installed, your GNOME Shell session will be restarted, and you should see the Pop Shell icon on the top panel.

It's worth noting that auto-tiling is disabled by default, enable it from the Pop Shell icon from the top panel (toggle Tile Windows to ON).

Also, I don't recommend installing the Pop Shell extension DEB package from the Pop!_OS PPA on Debian / Ubuntu because that won't set the proper key bindings. Install the extension through the rebuild.sh script, so it sets the keyboard shortcuts to be used with Pop Shell.

Fix a few conflicting keyboard shortcuts


As I mentioned earlier, Pop Shell changes some GNOME keyboard shortcuts. This is done through the rebuild.sh script, which also installs the extension.

After using Pop Shell for a while, I noticed that some shortcuts are not changed by this script, so they are in conflict with some GNOME Shell keyboard shortcuts. While I only noticed 4, there might be more, so keep this in mind (and let me know in the comments if you find more!).

These conflicting shortcuts are Shift + Super + Up, Shift + Super + Down, Super + Up and Super + Down. For the first two, Pop Shell assigns these keyboard shortcuts for moving a window up or down one workspace, but they are also assigned by default (by GNOME) to move the window one monitor up or down. For Super + Up and Super + Down, Pop Shell assigns this to switching focus between windows (together the other directional keys), while GNOME Shell uses this for maximizing a window and restoring it.

Disabled keyboard shortcut GNOME Settings

So you'll want to go to Settings > Keyboard Shortcuts and disable (click on them, then when asked to enter a keyboard shortcut, press Backspace to disable that shortcut) the shortcuts for "Move window one monitor down", "Move window one monitor up", "Maximize window" and "Restore window".

Install Pop Shell Shortcuts (optional)


You may also want to install Pop Shell Shortcuts. This is a simple dialog that lists the Pop Shell keyboard shortcuts, which opens when you click on View All in the Pop Shell top bar menu, and it's optional. Even though it looks simple, it actually has more build dependencies than Pop Shell.

Alternatively, if you don't want to install it, you can save the screenshot below to have the Pop Shell keyboard shortcuts at hand (middle click it to open it at full size in a new browser tab, and save it from there):

Pop Shell keyboard shortcuts

It's worth noting that the Pop Shell shortcuts screenshots from its repository page is not up to date.

If you prefer to have this installed on your system (this way you can have both Pop Shell and Pop Shell Shortcuts installed at the same time, so their shortcuts will match -- in case they change later on), so you can open it from the Pop Shell top bar menu, proceed as follows.

For Ubuntu / Debian, you can either download the Pop Shell Shortcuts DEB from here (it has no dependencies), or build it yourself as follows.

Install the Pop Shell Shortcuts dependencies:

  • Ubuntu 20.04, 20.10 or 21.04 / Debian Bullseye (testing) or Sid (unstable):
sudo apt install cargo rustc libgtk-3-dev

  • Fedora 32, 33 or 34:
sudo dnf install cargo rust gtk3-devel

  • Arch Linux / Manjaro (edit: this is now available on AUR):
sudo pacman -S rust gtk3

Now clone the Pop Shell Shortcuts git repository, build and install it:

git clone https://github.com/pop-os/shell-shortcuts

cd shell-shortcuts

make

sudo make install

How to remove Pop Shell and reset the keyboard shortcuts


It's worth noting that these instructions are for removing Pop Shell installed as explain in this article, and not for removing it from Pop!_OS 20.04. This won't work on Pop!_OS 20.04, because the extension is not installed for the current user, but system-wide.

Don't like Pop Shell? No problem, let's remove it. Start by disabling the extension using GNOME Tweaks (on the Extensions tab) or the Extensions app. Then remove it by either going to ~/.local/share/gnome-shell/extensions and removing the pop-shell@system76.com folder using your file manager, or use the command that follows to remove it:

rm -r ~/.local/share/gnome-shell/extensions/pop-shell@system76.com

GNOME Settings reset keyboard shortcuts

You'll most probably also want to reset the GNOME keyboard shortcuts to their defaults. Open Settings, click on Keyboard Shortcuts in the sidebar, and you'll see a Reset All... button at the top of the window. Click it and the GNOME keyboard shortcuts will be reverted to their default values.

After this, restart GNOME Shell: press Alt + F2 and type r, then press the Enter key, or logout and relogin.

If you've installed the Pop Shell Shortcuts, you can remove this with:

sudo rm /usr/local/bin/pop-shell-shortcuts