# Simple Tiling [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ![GNOME Shell Version](https://img.shields.io/badge/GNOME%20Shell-3.38-blue) A lightweight, opinionated, and automatic tiling window manager for GNOME Shell 3.38. Simple-Tiling *A screenshot of the extension in action with a master window and a Fibonacci-tiled stack.* ## Introduction Simple Tiling is a GNOME Shell extension created for users who want a clean, predictable, and automatic tiling layout without the complexity of larger, more feature-heavy tiling extensions. It is designed to be simple to configure and intuitive to use, focusing on a core set of essential tiling features. This extension was built from the ground up to be stable and performant on **GNOME Shell 3.38**. ## Features * **Automatic Tiling:** Windows are automatically arranged into a master and stack layout without any manual intervention. * **Master & Fibonacci Stack Layout:** The first window becomes the "master," occupying the left half of the screen. All subsequent windows form a "stack" on the right half, which is tiled using a space-efficient Fibonacci-style algorithm. * **Tiling Lock:** The layout is strict by default. If you manually move a window with the mouse and drop it in an empty space, it will automatically "snap back" to its designated tile position, preserving the integrity of the layout. * **Interactive Window Swapping:** * **Drag & Drop:** Swap any two windows by simply dragging one and dropping it over the other. * **Keyboard Shortcuts:** A full set of keyboard shortcuts allows you to swap the focused window with the master or with its nearest neighbor in any direction (left, right, up, down). * **Configurable Gaps:** Easily configure inner and outer gaps by editing variables directly in the `extension.js` code to achieve your desired aesthetic. * **External Exception List:** Use a simple `exceptions.txt` file to list applications (by their `WM_CLASS`) that should be ignored by the tiling manager. * **Smart Pop-up Handling:** Windows on the exception list, as well as dialogs and other pop-ups, are automatically centered and kept "always on top" for a smooth workflow. ## Requirements Please note that this extension has been developed for a very specific environment: * **GNOME Shell Version:** **3.38** * **Session Type:** **X11** (Wayland is not supported). * **Monitor Setup:** **Single monitor only.** Multi-monitor support is not yet implemented. ## Installation #### From extensions.gnome.org (Recommended) *(Link to be added once the extension is published)* #### Manual Installation 1. **Clone the repository** into your local extensions directory: ```bash git clone https://github.com/Domoel/Simple-Tiling.git ``` 2. **Compile the GSettings schema.** This is a mandatory step for the keyboard shortcuts to work. ```bash cd ~/.local/share/gnome-shell/extensions/simple-tiling@domoel/ glib-compile-schemas schemas/ ``` 3. **Restart GNOME Shell.** Press `Alt` + `F2`, type `r`, and press `Enter`. 4. **Enable the extension** using the GNOME Extensions app or GNOME Tweaks. ## Configuration #### Keyboard Shortcuts All keyboard shortcuts can be configured through the standard GNOME Settings panel: 1. Open **Settings**. 2. Navigate to **Keyboard** -> **View and Customize Shortcuts**. 3. Scroll down to the **Custom Shortcuts** section at the bottom. 4. You will find all shortcuts for "Simple Tiling" listed there and can change them to your preference. #### Ignoring Applications (`exceptions.txt`) To prevent an application from being tiled, you can add its `WM_CLASS` to the `exceptions.txt` file in the extension's directory. * Each application's `WM_CLASS` should be on a new line. * Lines starting with `#` are treated as comments and are ignored. * The check is case-insensitive. To find an application's `WM_CLASS`, open a terminal and run the command `xprop WM_CLASS`. Your cursor will turn into a crosshair. Click on the window of the application you want to exclude. An Example of an exceptions.txt can be found in the repo.