How kurapikanlight/smart-arrow-tiling works
Smart Arrow Tiling is a GNOME Shell extension for keyboard-driven and drag-and-drop window tiling. Its main workflow routes keyboard commands or drag drops through the extension controller, updates per-monitor/workspace slot state, computes geometry, and applies it to windows; resizing and window removal update that state too. The snap overlay previews layouts using the shared layout engine. README-described settings and shortcut restoration are represented at the controller boundary. Evidence is limited to the README and sampled excerpts, so unsampled internal calls are omitted.
Main entry points: extension.js Extension controller · snapOverlay.js Snap overlay · layout.js Slot transitions · org.gnome.shell.extensions.smart-arrow-tiling.gschema.xml Extension settings
Components 10
User interaction
- Keyboard commands
extension.js - Drag and resize
extension.js - Snap overlay
snapOverlay.js
Layout and tiling
- Slot transitions
layout.js - Tile geometry
layout.js
GNOME integration
- Extension controller
extension.js - Tracked window state
extension.js - GNOME Shell
- Extension settings
schemas/org.gnome.shell.extensions.smart-arrow-tiling.gschema.xml
Other components
- User
Connections 13
- User → Keyboard commands: presses shortcuts
README.md - User → Drag and resize: drags or resizes
README.md - Keyboard commands → Extension controller: dispatches commands
extension.js - Drag and resize → Extension controller: handles grabs
extension.js - Extension controller → Slot transitions: transitions slots
layout.js - Extension controller → Tile geometry: computes window bounds
extension.js - Extension controller → Tracked window state: tracks windows
extension.js - Extension controller → Snap overlay: updates and destroys
extension.js - Snap overlay → Slot transitions: evaluates preview layouts
snapOverlay.js - Snap overlay → Tile geometry: computes previews
snapOverlay.js - Extension controller → GNOME Shell: registers bindings and moves windows
extension.js - Extension controller → Extension settings: reads settings
- User → Snap overlay: chooses drop zone
README.md