⚠️ UNDER DEVELOPMENT - This extension is currently in active development and not yet stable.
A GNOME Shell extension for window snapping.
- Edge-triggered snapping: Drag windows to screen edges to show the layout panel
- Keyboard shortcut support: Optional keyboard shortcut for quick access (disabled by default)
- Visual layout preview: See layout positions before applying them
- Layout history: Recently used layouts are highlighted for faster access
- Customizable preferences: Configure keyboard shortcuts through a native GNOME preferences UI
- GNOME Shell 46
- Node.js and npm (for development)
-
Install dependencies:
npm install
-
Build and install the extension:
npm run build npm run copy-files
-
Restart GNOME Shell:
- Xorg session: Press
Alt + F2, typer, and press Enter - Wayland session: Log out and log back in
- Xorg session: Press
-
Enable the extension:
gnome-extensions enable snappa@x7c1.github.io
After the initial setup, you can use the quick reload command:
npm run devThis will build, copy, and reload the extension without requiring a logout.
- Drag any window to a screen edge
- The layout panel appears at your cursor
- Click a layout button to snap the window
- Open preferences:
- Click the ⚙️ icon in the main panel footer, OR
- Right-click the extension in GNOME Extensions app → Preferences
- Click "Disabled" to set a keyboard shortcut
- Press your desired key combination (e.g.,
Super+Space) - Press the shortcut to open the main panel for the focused window
Note: Keyboard shortcut is disabled by default to avoid conflicts with existing keybindings.
- Development Workflow - Development best practices
- TypeScript Build Guide - How to build the extension
- Debugging and Logging - Debugging techniques and logging
npm run build- Development buildnpm run build:release- Release build (for distribution)npm run dev- Build, copy, and reload extensionnpm run reload- Reload extension via D-Busnpm run lint- Run Biome linternpm run format- Run Biome formatternpm run check- Run both linter and formatter
This project is licensed under the GNU General Public License v3.0 or later - see the LICENSE file for details.