# 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

# The network applet reads this one before it draws its own settings
# button and its "Configure Network Connections…" entry — see
# main.qml, which calls
# KAuthorized.authorizeControlModule("kcm_networkmanagement").
#
# This is only the first of two layers, and on its own it would be
# security theatre. The applet ALSO puts "Show Network's QR Code" and
# "Configure…" on every saved wireless connection as contextual actions,
# and neither of those consults this key — measured on Plasma 6.3. The QR
# code contains the pre-shared key. What actually refuses them is the
# polkit rule in org.ekklesia.classroom.network.rules, which answers at
# NetworkManager rather than in a menu. This key is here so that a teacher
# is not shown doors that will not open.
[KDE Control Module Restrictions][$i]
kcm_networkmanagement=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]
# Sized for a television, not a desk.
#
# Everything Plasma draws is measured in grid units, and a grid unit is
# the height of this font: the notification card's width, its padding,
# its icon and its buttons all come from here. There is no setting that
# makes a notification larger on its own, and the supported lever is this
# one — which is also the reason it is used rather than a replacement
# notification plasmoid.
#
# Measured at 100% in the lab: Breeze's 10 point gives a card about 350
# by 110 pixels with title text a volunteer at the back of the room
# cannot read; 15 point gives about 410 by 145 with a title that carries.
# The bar does not change, because its height is fixed and the clock
# sizes itself to it.
#
# At 200% the display scale doubles all of it again, so a 4K television
# gets the same card at twice the size without a second number.
font=Noto Sans,15,-1,5,50,0,0,0,0,0
smallestReadableFont=Noto Sans,13,-1,5,50,0,0,0,0,0
menuFont=Noto Sans,15,-1,5,50,0,0,0,0,0
toolBarFont=Noto Sans,15,-1,5,50,0,0,0,0,0
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
# One key, marked immutable on its own rather than by freezing the group.
#
# This is the name plasmashell reads to decide which layout script builds a
# panel for a session that has none, so it decides whether the room comes
# up as the classroom or as stock Plasma. A migrated machine reached this
# experiment with a user profile that had been through other desktops, and
# a user's own kdeglobals sits ahead of every system directory in the
# cascade. Immutable here means no leftover profile, and no stray write by
# a settings dialog that does not exist in this room anyway, can answer
# that question differently. The palette below stays writable, because
# classroom-theme is allowed to change it.
LookAndFeelPackage[$i]=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
