Files
Classroom_Desktop/docs/ui-scale.md
T
ekklesiaandClaude Opus 5 428eb27a74 feat: scale the shell to the room's television
A 32" panel a few feet from the children and a 65" set across a hall
want the same design at different sizes. UI_SCALE in device.conf now
sets that, and nobody has to edit CSS or source to tune a room.

The stylesheet and the notification config become templates carrying
measurement tokens. classroom-dock resolves the stylesheet in memory at
startup; classroom-notifications resolves the notification config into
the session's runtime directory and execs mako on it, so the process is
still just mako and everything that looks for it by name still finds it.
Neither template is rewritten on disk, so an update cannot lose a room's
setting and a room cannot drift from the packaged design.

Dock height and the reserved strip, corner radii, padding, button size,
spacing, every icon, the clock and its inset, and the notification
geometry all follow the scale. Colours, translucency and the hairline
borders do not: those are the design, not the size.

At UI_SCALE=1.0 the rendered stylesheet is byte-identical to the one the
shell used before any of this existed, which is the property worth
keeping. Values outside 0.8 to 1.5 are clamped and anything that is not
a number falls back to 1.0, so a typo in device.conf cannot produce an
unusable classroom.

Device configuration moves into a shared module, since the dock and the
notification daemon now have to agree about what a setting means.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-04 21:33:09 -05:00

61 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# UI scale
Every classroom gets the same design at a size that suits its TV. A 32"
panel a few feet from the children and a 65" set across a hall want
different sizes of the same dock, not different docks.
## Changing it
Edit `/etc/ekklesia-classroom/device.conf` on that endpoint:
```
UI_SCALE=1.25
```
Then restart the classroom shell:
```
sudo systemctl restart getty@tty1
```
That ends the session and the autologin brings it straight back with the
new size. A reboot does the same thing. Nothing else needs touching, and
no CSS or source file is ever edited to change a room's size.
## Values
| UI_SCALE | Roughly |
| --- | --- |
| 0.8 | Small or close-up panel |
| 1.0 | Default. 1080p classroom TV, 32–50" |
| 1.25 | Large room, or a set viewed from further back |
| 1.5 | 65"+ |
Anything outside 0.8–1.5 is clamped to that range, and anything that is
not a number at all falls back to 1.0, so a typo in device.conf cannot
produce an unusable shell.
## What it scales
- Dock height, and the reserved strip at the bottom of the screen
- Dock corner radius, padding and the spacing between buttons
- Button size, padding and corner radius
- Every dock icon
- Clock text size, padding, corner radius and its inset from the edge
- Notification width, height, padding, margin, corner radius, text size
and icon size
Colours, translucency and the hairline borders do not scale: those are
the design, not the size. At `UI_SCALE=1.0` the rendered stylesheet is
byte-identical to the one the shell used before scaling existed.
## How it works
`/etc/ekklesia-classroom/dock/style.css.in` and
`/etc/ekklesia-classroom/mako/config.in` are templates carrying
measurement tokens. `classroom-dock` resolves the stylesheet in memory at
startup; `classroom-notifications` resolves the notification config into
the session's runtime directory and hands it to mako. Neither template is
ever rewritten on disk, so an update cannot lose a room's setting and a
room's setting cannot drift from the packaged design.