Repository navigation
Reimplementation/target architecture - #45
Merged
Merged
Conversation
Replace the controller-centric implementation with three layers: - lib/domain: pure tiling state (TilingState, slot lists per workspace and monitor, immutable window records), layout model, topology, entry-slot capacity rule, override and hotplug policies - lib/app: Engine as the only writer of the state, Reconciler as the only issuer of window commands (frame-synced, compares intended state with Mutter's facts), DragSession building a preview state - lib/shell: thin adapters for Mutter signals, windows, monitors, GSettings, keybindings and the drag indicator Behaviour: windows open directly in their tile, overflow windows float and are promoted when a slot frees up, external moves and resizes are reverted, evacuated windows return only to the same physical monitor (EDID), state survives the lock screen (unlock-dialog session mode), an invalid layout JSON suspends tiling without losing state. Supported GNOME Shell versions are 49 and 50. The swap transition setting and port-monitor shortcuts are removed, prefs-only modules move to prefs/, the JSON editor validates before saving and the "Moving to Workspace" shortcut group is dropped from the preferences. AGENTS.md is no longer tracked.
ESLint enforces layer boundaries (domain and app free of GNOME imports, inward-only dependencies, prefs limited to domain and utils) and the extensions.gnome.org review guidelines (no Gtk in the Shell process, no Shell libraries in prefs, no timeouts, no legacy imports, no feature sniffing, no console). max-params and a local max-returns rule are enabled at 4. Fixes the findings: prefs calls the surface shortcut-inhibit API directly and logs through Logger, onWindowMoved is split into helpers, and ScreenEstate takes a rect object.
KonstantinMerkel
force-pushed
the
reimplementation/target-architecture
branch
from
October 19, 2026 16:24
bb72d7a to
74b873f
Compare
The drag keeps no copy of the tiling state. Its preview is the live state plus the candidate drop, rebuilt when the pointer moves or the state's version changes, so windows opening or closing during a drag are tiled right away and the drop is checked against the live state: a target that filled up mid-drag makes the dropped window floating.
KonstantinMerkel
force-pushed
the
reimplementation/target-architecture
branch
from
October 19, 2026 16:47
74b873f to
ac628cd
Compare
A size change that answers a request settles it with the actual frame, so the pass it used to schedule could never issue a command.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.