If you love the look of tiling window managers like i3, but don’t fancy giving up your creature comforts then keep an eye on Pop Shell — a new GNOME extension in development that has left me seriously impressed.

Pop Shell pitches itself as a “…keyboard-driven layer for GNOME Shell which allows for quick and sensible navigation and management of windows”.

Or to put it another way it’s i3-gaps, but for GNOME Shell, natively, with all the raw power that comes from that, namely fine-grained keyboard control PLUS all the niceties that of a full-bodied desktop environment too.

GNOME Shell Tiling Window Extension

Now tiling window extensions for GNOME Shell are not new.

Sterling efforts like Material Shell, gTile and ShellTile are great because they not only deliver on this oft-requested tiling functionality but they help to push the boundaries of what GNOME Shell can be made to do.

GNOME Shell already supports half-window tiling (aka window snapping) and there’s a setting to centre all new windows by default.

Work to add quarter tiling window management started back in 2017 but hasn’t (to me knowledge) advanced any further since.

But these “features” are mere crumbs compared to the ‘full loaf’ served up in proper tiling window managers like i3-wm and its ilk.

Now, part of me is confused as to why something as basic as window tiling is missing from GNOME Shell at all. I appreciate it’s perhaps a bit niche, but GNOME is a niche desktop environment itself. It’s also built by developers and used by a huge swathe of developers… The math should stack up here, right?

A considered approach

What I find most interesting about the work being done by the Pop!_OS folks — who don’t rate me or this site very highly — is how well thought out their approach is.

We’re not talking a quick proof-of-concept knocked together over a quiet weekend, or a small ‘itch scratch’ project birthed by a frustrated developer and thrown up on to a file server for whoever wants it.

No, this a considered attempt to, in their words, “advance the usability of the GNOME desktop” to better meet the needs of developers and users.

Y’know, the people who actually use GNOME Shell.

“Advanced tiling window management is a must for the desktop, so we’ve merged i3-like tiling window management with the GNOME desktop for the best of both worlds,” explains the readme attached to the Github project:

View Pop Shell on Github

The full treatise is well worth a read, particularly if (like me) you’re not currently using a tiling window manager (or similar extension) as the full text highlights things you might not otherwise consider/appreciate/factor in, and it explains corner cases preferring gaps, no gaps, auto-tiling, and more).

But it gets better.

Pop devs want to make the fruits of their labour as widely accessible as possible.

“By starting out as a shell extension, anyone using GNOME Shell can install this onto their system, without having to install a Pop-specific fork of GNOME on their system.”

THAT has me SUPER excited. If there’s one thing that can get fist thumping the table in support, it’s this kind of approach, i.e. when developers embrace the Linux community as it is, not as they want it to be.

It physically pains me when folks wall off their work so that it can only be admired in a specifically tended gardens.

Anyway, back to Pop Shell.

A Video of Pop Shell

Alex, aka BabyWogue, aka the weird anime robot voice guy from YouTube with a sizeable following and an uncanny ability to find cool stuff™ to demo, has put together a stonkingly good video on the current state of the Pop Shell’s code.

And without being needlessly capricious about it: this video really whets ones appetite…

If you don’t watch the video above for the demo of Pop Shell then watch it for Alex’s finessed editing skill as the timing is on point!

As for Pop Shell itself, well, the code is up on Github should you fancy taking it for a spin — though you’ll need GNOME 3.36.

Just heed the usual warnings and caveats about using early-access code, manually installing things from random repos, and the rest.