Little Waders took the Plasma build and reported what a container cannot. A disc player on a machine with no optical drive, a clock nobody at the back of the room could read, a browser at half the size of the panel around it, and Parent Call with no broker to call. The broker is the same for every classroom, so it is a default now and not something to fill in room by room. classroom-migrate brings an existing room to the same place without touching its name, its username or its password, and Parent Call distinguishes a broker it cannot reach from one that was never set up: those send somebody to look at completely different things. The disc player's detection was right and ran too late — alongside the session rather than before it, and the panel is built from the layout the moment a session starts. It runs before the display manager now, and again from udev when a drive is plugged in. UI_SCALE had a ceiling of 1.5, which cannot express a 4K television; a clock pinned at 15 points, which is the same size at every scale; and a browser that was never told the number at all. All three are fixed and the room doubles together at 200%. This also brings 0.1.47's work into the repository, where it had only ever existed in a build directory under /tmp: the hidden display dialog, its authenticated writer, the polkit action, and the church's own wallpaper. One piece of it is deliberately left out. The custom volume display needed a shell package of our own, and with one selected plasmashell builds no panel at all — measured twice, with that build's own files, on a classroom that deletes its panel configuration at every login by design. The lab connected to the real church broker the moment the package defaulted to it. Nothing was left behind, which was checked, but the guard that should have stopped it had never worked: it used iptables, which the lab image does not have, and probed with /dev/tcp under dash, where that always fails. Both reported success. Co-Authored-By: Claude Opus 5 <[email protected]>
44 lines
1.8 KiB
Bash
Executable File
44 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# The room's ordinary browser: YouTube, and anywhere else a lesson goes.
|
|
#
|
|
# It is a full browser with a tab strip and an address bar, in the room's
|
|
# own profile, so the church YouTube sign-in survives reboots and updates.
|
|
# Wonder Ink is a separate application in a separate profile and is not
|
|
# reachable from this one.
|
|
#
|
|
# There is no launch/focus/minimise/restore logic here any more. The panel
|
|
# owns that: it knows this window by StartupWMClass and does the right
|
|
# thing with a click, including telling the teacher which of those four
|
|
# states the application is in.
|
|
#
|
|
# --hide-crash-restore-bubble is what suppresses "Restore pages? Chrome
|
|
# didn't shut down correctly" after a power cut. Note the switch name: the
|
|
# older --disable-session-crashed-bubble is not present in Chrome 152 at
|
|
# all, so it would have silently done nothing.
|
|
|
|
# Not Wonder Ink. Wonder Ink is its own application in its own profile,
|
|
# and a second way in through this window would put a teacher's lesson
|
|
# session in the room's shared browser profile — the exact leak the split
|
|
# exists to prevent.
|
|
HOME_PAGE='https://www.youtube.com/'
|
|
|
|
# One number for the whole room. Chrome on Wayland was measured not to
|
|
# follow the compositor's output scale on its own, so the 4K television
|
|
# got a browser at half the size of everything around it. Forcing the
|
|
# same number the display is scaled by is a statement of the same fact,
|
|
# not a second scaling: Chrome replaces its detected scale with this
|
|
# rather than multiplying by it.
|
|
SCALE="$(/usr/local/bin/classroom-ui-scale 2>/dev/null || echo 1)"
|
|
|
|
exec google-chrome \
|
|
--ozone-platform=wayland \
|
|
--force-device-scale-factor="$SCALE" \
|
|
--start-maximized \
|
|
--no-first-run \
|
|
--no-default-browser-check \
|
|
--password-store=basic \
|
|
--hide-crash-restore-bubble \
|
|
"${@:-$HOME_PAGE}"
|