The room that prompted this had a television on HDMI with working PCM audio and nothing in the analog jack, and WirePlumber chose analog. A teacher who corrected it by hand then had to restart the browser before any sound came out. The policy is a pure function so it can be tested against that room rather than against a machine: an unavailable port is not a candidate, an analog port merely existing is not evidence of a cable, and an explicit AUDIO_OUTPUT overrides the lot. Twelve cases, the real room among them. The daemon follows PipeWire's own event stream rather than polling, and moves streams that are already playing, which is the part that stops a teacher having to close and reopen the browser. Co-Authored-By: Claude Opus 5 <[email protected]>
66 lines
2.1 KiB
Plaintext
66 lines
2.1 KiB
Plaintext
# Ekklesia Classroom session policy.
|
|
#
|
|
# Installed to /etc/xdg/kdeglobals, where it is the bottom of Plasma's
|
|
# configuration cascade. Every group is marked [$i] — immutable — so a
|
|
# teacher, a stray click or a misbehaving application cannot override it
|
|
# from the user's own configuration. This is KDE's own Kiosk mechanism:
|
|
# nothing here is achieved by deleting a binary or hiding a menu entry.
|
|
#
|
|
# Lifting a restriction for maintenance is a one-line edit to this file
|
|
# followed by a session restart, which is what makes the appliance
|
|
# serviceable rather than merely locked.
|
|
|
|
[KDE Action Restrictions][$i]
|
|
# No way to reach a shell, a command line, or an arbitrary program.
|
|
action/kdesktop_rmb=false
|
|
action/kwin_rmb=false
|
|
action/openwith=false
|
|
action/switch_user=false
|
|
action/start_new_session=false
|
|
action/lock_screen=false
|
|
run_command=false
|
|
shell_access=false
|
|
logout=false
|
|
# The desktop and the panel are a fixed part of the appliance.
|
|
editable_desktop_icons=false
|
|
editable_bookmarks=false
|
|
movable_toolbars=false
|
|
plasma/plasmashell/unlockedDesktop=false
|
|
plasma-desktop/scripting_console=false
|
|
# Nothing in the classroom should offer to file a bug or open a manual.
|
|
action/help_report_bug=false
|
|
action/help_about_kde=false
|
|
action/help_contents=false
|
|
|
|
# Not immutable. Marking this group [$i] froze the colour scheme so hard
|
|
# that `classroom-theme light` changed the running session and then lost
|
|
# the change at the next start — measured. These are defaults for a room
|
|
# that has no settings application anyway; the lock belongs on the
|
|
# restrictions above, not on the palette.
|
|
[General]
|
|
ColorScheme=EkklesiaDark
|
|
AccentColor=79,179,168
|
|
# The teacher's own words are not decoration: keep text rendering plain
|
|
# and readable rather than styled.
|
|
XftAntialias=true
|
|
XftHintStyle=hintslight
|
|
XftSubPixel=rgb
|
|
|
|
[KDE]
|
|
widgetStyle=Breeze
|
|
LookAndFeelPackage=org.ekklesia.classroom.desktop
|
|
SingleClick=false
|
|
AnimationDurationFactor=0.5
|
|
|
|
[Icons]
|
|
Theme=breeze-dark
|
|
|
|
[KFileDialog Settings][$i]
|
|
Allow Expansion=false
|
|
Automatically select filename extension=true
|
|
Show Bookmarks=false
|
|
Show Full Path=false
|
|
Show Inline Previews=false
|
|
Show Speedbar=false
|
|
Sort directories first=true
|