..is a gnome-shell extension that adds smart and user-friendly tiling window features to your gnome desktop, inspired by bluetile. It's still young, but here's what it can do for you:


shellshape demo

Try it Out

Note: This software is alpha, and this process not exactly bulletproof. It doesn't touch any system software (so it should be completely unable to break anything that a logout can't fix), but chances are high something will not work at this early stage. Thanks for your patience.

This is no ordinary shell extension, it requires a custom fork of the mutter window manager as well. You will need to install zero install, with sudo yum install zeroinstall-injector (debian users: sudo apt-get install zeroinstall-injector).

Once you've got zero install, you should be able to run shellshape itself using 0launch from the terminal. I advise running this from a virtual console, or from a terminal multiplexer like GNU screen or tmux so you can see what went wrong if it doesn't work:

Note: currently there is only a precompiled binary for x86_64 systems. If you have something else, you'll need to compile it yourself before running this command.

DISPLAY=:0 0launch -c --not-before=0.3 \
http://0install.net/2007/interfaces/ZeroInstall.xml \
http://gfxmonk.net/dist/0install/shellshape.xml --replace

You may need to press alt-f4 if you are presented with the "Oops! gnome shell encountered a problem" screen. You may also need to just try running it again if you get a segmentation violation error.

If that worked, congratulations! Have a look at the controls below and try it out. If not, you may want to try compiling it yourself.

Keyboard Shortcuts

Many shortcuts are the same as bluetile, except where functionality differs. Here's the full list:

Selecting layouts:
win+d switch current workspace to tiled mode
win+f switch current workspace to floating mode

Window navigation:
win+j, win-tab select next window
win+k, win-shift-tab select prev window
win+space select main window

Window manipulation:
win+shift+j swap with next window
win+shift+k swap with prev window
win+shift+space swap with main window

Tile management:
win+p tile (place) the current window
win+y untile (yank) the current window
win+shift+p adjust tile boundaries to fit window
win+, more windows in the master area
win+. less windows in the master area

Resizing tiles:
win+h shrink master area
win+l grow master area
win+u shrink a slave area
win+i grow a slave area

Resizing windows:
win+shift+h decrease window's width
win+shift+l increase window's width
win+shift+u decrease window's height
win+shift+i increase window's height
win+equal increase window's size
win+minus decrease window's size
win+z toggle window maximized state

Workspace actions:
win+alt+j go to workspace below
win+alt+k go to workspace above
win+alt+shift+j move window to workspace below
win+alt+shift+k move window to workspace above

Of course, you can still use your mouse to move / resize windows as you normally would in gnome. If you move a tiled window over another tile, their positions will swap.

Getting Back to Your Normal Shell

If anything went wrong (or when you just want your normal shell back), you can do so by running:

DISPLAY=:0 gnome-shell --replace

You can also just log out and back in, which will use your system's regular gnome-shell.

Compiling it Yourself

If you weren't able to run the precompiled version above, you might want to try compiling my mutter fork yourself. If you're up to the challenge, you will first need to fetch all the build depencies. Depending on your platform, this will be something like:

apt-get build-dep mutter # (ubuntu / debian)
yum install yum-utils; yum-builddep mutter # (fedora)
Once you have all the dependencies, you can run:
0launch -c \
http://0install.net/2006/interfaces/0compile.xml autocompile \
http://gfxmonk.net/dist/0install/shellshape-mutter.xml

If that worked, the first ("try it out") command should now work for you as it'll use your newly-compiled version of mutter.

If you still get errors, feel free to open an issue on the github issues page if it hasn't already been reported. Make sure you tell me what you tried and what errors you got, and I'll do my best to figure out what went wrong.

Using it Every Time You Log In

Is not recommended just yet. But if you dare, there are instructions in the README

Cleaning Up

The beauty of zero install is that it doesn't touch your system's global state or packages. You're running a fork of mutter without touching (or conflicting with) the system version. So there's nothing you need to uninstall. But if you're concerned about the the disk space, you can use 0store manage (or just remove everything under ~/.cache/0install.net/implementations/).

Get Involved

To get more information, help out or report a bug, please visit the github repository.


Brought to you by gfxmonk. If you like my stuff, feel free to flattr me.