abdul mateen

site reliability engineer  ·  dublin

form PR-02  ·  project PR-0002 · Desktop Extension

GNOME Tiling-Window Extension

An i3-style tiling window manager for GNOME Shell, written in GJS, and built out of plain dislike for the window management it replaces. Windows are held in a binary space-partitioning container tree, so every split is a node and an arrangement is one structure rather than a set of remembered positions. That tree is serialized, which is what lets a layout survive a shell restart instead of being rebuilt by hand each session. Floating windows sit inside the same tree rather than beside it as a special case, panes are navigated with vim-style keybindings, and tiles can be rearranged by dragging. Written alongside contributions to other open-source projects.

PR-05.0

Demo

recorded walkthrough

PR-05.1

Architecture

as-built specification

frontend
GNOME Shell (GJS)
also
Binary space-partitioning container tree · Layout serialization and restore · Vim-style keybindings · Floating and tiled windows in one tree · Drag-and-drop tile rearrangement
PR-05.2

Revision Log

change history

revnote
ALayout serialization added so arrangements survive a shell restart
BFloating-window handling folded into the tiling tree

period  ·  Mar 2026 – Jul 2026

built at  ·  Self-Driven Project

PR-05.3

Key Features

itemised

  • i3-style tiling built on a binary space-partitioning container tree
  • Serialization and restore of window layouts across restarts
  • Floating windows handled alongside tiled ones
  • Vim-style keyboard navigation between panes
  • Drag-and-drop rearrangement of tiles
PR-05.4

Skills

technical & applied

stack

  • JavaScript (GJS)
  • GNOME Shell
  • Binary Space Partitioning
  • Window Management
  • Open Source

gained

  • Tree Data Structures
  • State Serialization & Restore
  • Keyboard Interaction Design
  • Drag-and-Drop Handling
  • Reading an Unfamiliar Codebase

demonstrated

  • Open-Source Collaboration
  • Reverse Engineering
  • User-Centred Design
  • Persistence