Layout and grid
How widgets are positioned, resized and snapped, and why a layout survives a change of monitor.
Positions are proportional, not pixel-based
A widget’s position and size are stored as fractions of the screen, not as pixel coordinates. A widget at x: 0.5 starts halfway across, whatever the display.
This is the reason a layout survives hardware changes. Open the same layout on a larger monitor and every widget renders proportionally larger, in the same relative arrangement. Nothing is clipped off the edge of a smaller screen and nothing huddles in one corner of a bigger one.
The two axes are treated independently, so a layout moved between screens of different aspect ratios stretches rather than being letterboxed. That’s a deliberate choice: preserving the arrangement matters more than preserving each widget’s exact shape.
Placing, moving, resizing
New widgets carry a default size in pixels, converted to a fraction of your current screen at the moment they land. A freshly-dropped widget is therefore a sensible physical size on any monitor, and only afterwards scales proportionally.
In edit mode each widget gets eight resize handles: four corners and four sides. A corner drags one edge on each axis; a side handle moves only its own edge, leaving the opposite edge and the entire other axis exactly where they were. Resizing never nudges the sides you weren’t touching.
Two constraints always apply:
- A minimum size of 64 pixels on the current screen, so a widget can’t be shrunk into nothing.
- Full containment: widgets are clamped on-screen during drag, resize and placement, so nothing can be pushed half off the display.
Snapping
A snap aid helps align widgets to each other and to the screen while you drag. Adjust the gap between widgets to taste; the value is stored per view.
Containers
Three container widgets change how their contents are laid out:
- Stack: several widgets share one frame, one visible at a time.
- Tabs: the same, with a visible tab strip to switch between them.
- Group: an area that moves and resizes as a unit, without re-laying out what’s inside it.
Containers do not nest inside one another. While you’re filling a container, the widget picker hides container types rather than offering a card that couldn’t be added.
Pop-out windows
Content and editing widgets can be opened in their own decorated desktop window. The widget keeps its physical size as it moves between the desktop layer and the window, so it doesn’t jump in scale when it pops out.
Where this is stored
Layouts are persisted per view on your machine, alongside the rest of your Themia configuration, and are included in export and import.