Kolu's canvas today lets you freely place tiles, but there's a recurring UX need for "put this tile next to that other tile, and move it when the other tile moves/resizes/is replaced in focus." Most concrete cases:
Doing this as a per-feature structural binding (e.g. browser-is-a-sub-panel-of-terminal) complects the paired tiles and fights canvas identity. Doing it as a general canvas capability keeps every tile a peer and makes the behavior reusable across terminal, browser, and any future tile type.
Proposal — pinned relative placement
- A tile can be "pinned" relative to another tile with a direction (right / left / above / below) and a size ratio.
- When the anchor tile moves, resizes, or gains focus (e.g. maximize), the pinned tile follows.
- Unpin at any time — the tile reverts to free canvas placement.
- Pin operations live on the canvas layer, not inside any specific tile's state. Tile types don't need to know about pinning.
Tiling-WM-inspired extensions (post-MVP)
- Snap-to-grid / snap-to-edges with magnet affordance.
- Master/stack layout preset (one big tile + column of small ones).
- Keyboard shortcuts to cycle pin direction (
Mod+Shift+L = pin right of active, etc.).
- Pin groups: a set of tiles that move together.
Non-goals initially
- Tabbed/stacked layouts (Kolu already has a chrome pill tree for navigation).
- Full i3/Sway compatibility.
- Programmatic pin via config file.
Motivating consumer
#633 (browser canvas tile) will be the first adopter. That issue intentionally ships without any placement behavior beyond "free canvas tile," trusting this feature to land generically rather than building a one-off binding between browser tiles and terminals.
Kolu's canvas today lets you freely place tiles, but there's a recurring UX need for "put this tile next to that other tile, and move it when the other tile moves/resizes/is replaced in focus." Most concrete cases:
Doing this as a per-feature structural binding (e.g. browser-is-a-sub-panel-of-terminal) complects the paired tiles and fights canvas identity. Doing it as a general canvas capability keeps every tile a peer and makes the behavior reusable across terminal, browser, and any future tile type.
Proposal — pinned relative placement
Tiling-WM-inspired extensions (post-MVP)
Mod+Shift+L= pin right of active, etc.).Non-goals initially
Motivating consumer
#633 (browser canvas tile) will be the first adopter. That issue intentionally ships without any placement behavior beyond "free canvas tile," trusting this feature to land generically rather than building a one-off binding between browser tiles and terminals.