feat: take the last of sway out of the classroom

The DVD player was the only thing still speaking a compositor the room
no longer runs. It asked sway's tree whether VLC's window had really
gone fullscreen, because VLC reports playing while its window is still
the black startup one the loading cover exists to hide.

VLC's own status was measured as a replacement and is not one: it
reports fullscreen true in the same 250ms poll as playing, because the
flag is the option it was started with and not a report about its
window. So the cover is held for a floor and capped by the deadline that
was already there, and the compositor is not asked anything.

Focus-or-launch went the same way. The session already takes an
exclusive lock, so a second one cannot start, and bringing an existing
one to the front is the panel's job.

classroom-window, classroom_sway and classroom_chrome are gone with it —
the last of them was reachable from nothing at all.

DVD also moves out of the status row, where it sat beside the clock as
though a disc were a machine reading. It is an application: it is in the
row with Wonder Ink and the browser, and classroom-provision removes it
from the layout on a machine with no optical drive, which retires
DVD_ENABLED. A computer that moves between rooms takes its drive with
it; nobody remembers to edit a file when it does.

The panel is rebuilt from the package at every login now. Plasma keeps
whatever panel it first built, so an update could change the bar in the
package and never change it in a room — measured, with an icon that
outlived the file it came from. Editing the live panel configuration was
tried instead and destroyed the panel, because the shell owns that file.
Removing it before the shell starts is safe and makes the desktop
stateless.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
ekklesia
2026-09-10 13:00:50 -05:00
co-authored by Claude Opus 5
parent 18cf0249dd
commit d2d30d6b0c
25 changed files with 402 additions and 737 deletions
@@ -2,12 +2,13 @@
Type=Application
Name=DVD
Comment=Play the disc in the drive
Exec=/usr/local/bin/classroom-dvd
Exec=/usr/local/bin/classroom-dvd toggle
Icon=media-optical-dvd
Terminal=false
Categories=AudioVideo;Player;
StartupNotify=true
StartupWMClass=vlc
# Never in a menu or a launcher by itself. The DVD appears when a disc is
# in the drive, through Plasma's own device notifier, and goes away with it.
NoDisplay=true
# Indexable, because the panel resolves its launcher through the
# applications index. There is no application menu in this classroom for
# it to clutter.
NoDisplay=false
@@ -73,9 +73,14 @@ leftGap.writeConfig("expanding", true);
// story. This applet is the reason the classroom stops writing a dock.
var tasks = panel.addWidget("org.kde.plasma.icontasks");
tasks.currentConfigGroup = ["General"];
// The DVD line is rewritten by classroom-provision to match the machine:
// a room with no optical drive has it removed, so no teacher is offered a
// disc player that cannot exist. Between the marker comments, and nowhere
// else, so the edit is a line replacement and not a parse.
tasks.writeConfig("launchers", [
"applications:ekklesia-wonderink.desktop",
"applications:google-chrome.desktop"
"applications:google-chrome.desktop",
/* CLASSROOM-DVD-LAUNCHER */ "applications:ekklesia-dvd.desktop"
].join(","));
// Every window gets its own button. Teachers should never have to open a
// group to find out that a second window exists.
@@ -110,7 +115,7 @@ rightGap.writeConfig("expanding", true);
// RIGHT — status.
//
// Four ordinary applets straight on the bar, and no system tray around
// Three ordinary applets straight on the bar, and no system tray around
// them. A tray is a container that discovers whatever is installed and
// then hides most of it behind an arrow; measured in the lab it collected
// battery, brightness, clipboard, keyboard layout, camera, vaults and
@@ -120,11 +125,6 @@ rightGap.writeConfig("expanding", true);
panel.addWidget("org.kde.plasma.networkmanagement");
panel.addWidget("org.kde.plasma.volume");
// Present only while there is something in a drive. Plasma's own Solid
// device notifier is what makes the DVD appear with the disc and leave
// with it, so nothing in the classroom polls for media.
panel.addWidget("org.kde.plasma.devicenotifier");
panel.addWidget("org.kde.plasma.notifications");
var clock = panel.addWidget("org.kde.plasma.digitalclock");