Skip to content

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

License

Notifications You must be signed in to change notification settings

domferr/modernwindowmanager

Repository files navigation

Modern Window Manager

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 40 to 46 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!

This extension also provides all the functionalities of Windows 11 Snap Assistant and Windows PowerToys FancyZones.

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

Usage

Tiling System

When grabbing and moving a window, press CTRL key to show the tiling layout. When moving on a tile, it will highlight. Ungrab the window to place that window on the highlighted tile.

tiling_system.webm

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

Select a layout

Click on ModernWindowManager'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

Select multiple tiles

The layout is not strict. You can select multiple tiles too! Just hold SHIFT while using the tiling system.

multiple_selection.webm

Layout editor

LEFT CLICK to split a tile. LEFT CLICK + CTRL to split a tile vertically. RIGHT CLICK to delete a tile.

layout_editor.webm

Smart resize

You can resize adjacent tiled windows together!

recursive_resize.webm

It can be enabled/disabled from the preferences

Installation

Download the latest release. Extract the downloaded archive. Copy the folder to ~/.local/share/gnome-shell/extensions directory. You need to reload GNOME Shell afterwards (e.g. by logging out). Then you can enable the extension:

/usr/bin/gnome-extensions enable modernwindowmanager@ferrarodomenico.com

Currently, this extension is not on extensions.gnome.org. However, if you are interested we can publish it there. Let us know by opening a new issue!

Install via Source

Clone the repo then run npm i to install dependencies and then run npm run build to build the extension. To finally install the extension run

npm run install:extension

You can restart your GNOME shell e.g. logout then login, or restart in place with an alt-F2 and entering r (X11 only) and enable the extension. Enjoy it! To enable via the command line you can run

/usr/bin/gnome-extensions enable modernwindowmanager@ferrarodomenico.com

Uninstall ModernWindowManager

To uninstall, first disable the extension and then remove it. To disable via the command line you can run

/usr/bin/gnome-extensions disable modernwindowmanager@ferrarodomenico.com

Contributing

Feel free to submit issues and Pull Requests!