SkillAgentSearch skills...

Tilingshell

Extend Gnome Shell with advanced tiling window management. Supports multiple monitors, Windows 11 Snap Assistant, Fancy Zones, customised tiling layouts and more.

Install / Use

/learn @domferr/Tilingshell

README

<img src="https://raw.githubusercontent.com/domferr/tilingshell/main/logo.png" align="right" width="76"/>

release kofi patreon

Tiling Shell

This is a Gnome Shell extension implementing modern windows tiling system by extending GNOME's default 2 columns to any layout you want! Can be installed on Gnome Shells from 42 to 49 on X11 and Wayland: the most recent GNOME Shell is supported, and older releases will include all the features and bug fixes!

  • 🤩 First and only extension that provides Windows 11's snap assistant
  • 🖥️🖥️ multiple monitors support, even with different scaling factors!
  • ⚙️ Manage, edit, create and delete layouts with a built-in editor
  • 💡 Layouts are not strict, you can span multiple tiles if you want
  • 🚀 Automatically sets the same UI of your GNOME theme, for a seamless integration!
<div align="center"> <a href="https://extensions.gnome.org/extension/7065/tiling-shell/" > <img src="https://img.shields.io/badge/Install%20from-extensions.gnome.org-4A86CF?style=for-the-badge&logo=Gnome&logoColor=white"/> </a> </div> <img src="https://github.com/domferr/tilingshell/blob/main/doc/horiz_summary.jpg" align="center"/> <details> <summary><span align="center">See here the video overview</span></summary>

https://github.com/user-attachments/assets/2905f0a1-ecd4-47b5-a6bc-59f91716e685

</details>

Have issues, you want to suggest a new feature or contribute? Please open a new issue!

Usage

| ⬇️ Tiling System | ⬇️ Snap Assistant | ⬇️ Select a layout | ⬇️ Select multiple tiles | |:---|:---|:---|:---| | ⬇️ Layout editor | ⬇️ Smart resize | ⬇️ Tile with Keyboard | ⬇️ Edge Tiling | | ⬇️ Tiling Buttons | ⬇️ Per-workspace layout | ⬇️ Auto-tiling | ⬇️ Tiling context menu | | ⬇️ Smart border radius | ⬇️ Windows Suggestions

🎉🎉 Tiling Shell's AWESOME Supporters!

Thank you to the :star2: amazing <a href="https://patreon.com/domferr"><img src="https://img.shields.io/badge/Patreons-F96854?logo=patreon&logoColor=white)" height="14px"/><a/> and everyone who donated on <a href="https://ko-fi.com/domferr"><img src="https://img.shields.io/badge/_Ko--fi-794bc4?logo=ko-fi&logoColor=white" height="14px"/><a/>! :medal_sports:Sean, Markus Huggler, Kostja Palović, Mike Empey, Miguel and Jesse Dhillon on Patreon:medal_sports: and Zorin OS, Nick, thy-fi, iatanas0v, Chris, wbezs, DaneshManoharan, Tamas, Ivan Banha and many more on Ko-fi! You are on a mission to make Linux window management better for everyone!

Tiling System

When grabbing and moving a window, press <kbd>CTRL</kbd> key to show the tiling layout (you can choose another key from the preferences). When moving on a tile, it will highlight. Ungrab the window to place that window on the highlighted tile.

tiling_system.webm

This extension and the tiling system also implements Windows PowerToys FancyZones!

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Snap Assistant

When grabbing and moving a window, the snap assistant will be available on top of the screen. Move the window near it to activate the snap assistant. While still grabbing the window, move your mouse to the tile you are interested in. By stopping grabbing the window will be tiled to the selected tile!

snap_assistant.webm

Snap Assistant's sensibility can be customized from the preferences.

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Select a layout

Click on Tiling Shell's panel indicator and the available layouts will be shown. Select the one you prefer by clicking on it. That layout will be applied to every monitor in case you have more than one.

layout_selection.webm

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Select multiple tiles

The layout is not strict. You can select multiple tiles too! Just hold <kbd>ALT</kbd> while using the tiling system (you can choose another key from the preferences).

multiple_selection.webm

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Layout editor

| Split a tile | Split a tile vertically | Delete a tile | Save, close the editor or open the menu | |:---:|:---:|:---:|:---:| | <kbd>LEFT CLICK</kbd> | <kbd>LEFT CLICK</kbd> + <kbd>CTRL</kbd> | <kbd>RIGHT CLICK</kbd> | Click the Tiling Shell's icon <img src="https://github.com/domferr/tilingshell/assets/14203981/13e27ec1-6a5d-420f-a87f-8f3df0b34c92" width=96 /> on the panel. |

layout_editor.webm

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Smart resize

You can resize adjacent tiled windows together!

Resizing tiled windows

It can be enabled/disabled from the preferences

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Tile with Keyboard

Move window through the tiles using keyboard shortcuts (<kbd>SUPER</kbd>+<kbd></kbd>/<kbd></kbd>/<kbd></kbd>/<kbd></kbd>). They can be customized from the preferences!

Tile with Keyboard Video

It can be enabled/disabled from the preferences

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Edge Tiling

You can tile a window by moving it to the edge.

Screencast from 2024-06-22 22-12-22.webm

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Tiling Buttons

Right-click on a window to use the auto-tile buttons and the snap assistant from there! The auto-tile buttons allow you to tile to the leftmost or rightmost empty tile, based on your selected layout. The "Move to best tile" button suggests tiling to the nearest empty tile to the center of the screen.

Screencast from 2024-07-13 18-21-57.webm

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Per-workspace layout

You can select your favorite layout for each workspace of each monitor.

per-workspace

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Auto-tiling

When a window is created, it is automatically moved to the best tile according to where other windows are tiled and the current layout. This is disabled by default and can be enabled in the preferences.

automatic_tiling

Export and import layouts

Tiling Shell supports importing and exporting its layouts to a JSON file. With this you can create your own custom layouts without the built-in graphical editor, or share your layouts with others! If you are interested into knowing more about the contents of the layout file check the official documentation.

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Tiling context menu

Right-click on a window to use the auto-tile buttons and the snap assistant from there! These buttons allow you to tile to the leftmost or rightmost empty tile, based on your selected layout. The "Move to best tile" button suggests tiling to the nearest empty tile to the center of the screen.

<p align="center"><img src="https://github.com/user-attachments/assets/d660779a-7549-4858-b149-59edad076483" width=520/></p> <p align="center">Check the demonstration video to see it in action!</p>

Screencast from 2024-07-13 18-21-57.webm

The original idea was to show the snap assistant when hovering the maximize button (as it is done on Windows 11). Unfortunately, GNOME doesn't let us handle the hovering of the maximize button or add another button near it...

<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>

Smart border radius

In GNOME, different windows may have different border radius. Drawing a border around the focused window is hard because it is not possible to know the window border radius. All the existing extensions just draw a border with a static value, making the UI less polished. Tiling Shell, dynamically computes the focused window border radius at runtime. Moreover, if you have an extension or anything else who customize the border radius, the focused window border radius adapts as well! This c

Related Skills

View on GitHub
GitHub Stars1.8k
CategoryCustomer
Updated7h ago
Forks79

Languages

TypeScript

Security Score

100/100

Audited on Mar 23, 2026

No findings