The whole appliance UI is now configuration for a desktop Debian already ships: a Plasma 6.3 session with a colour scheme, a look and feel package that builds the bar, window rules, and KDE's own Kiosk restrictions. Two things were measured rather than assumed, and both changed a decision. Plasma restarts a crashed panel three times a minute and then gives up, which is the failure a classroom has already had. Four lines of systemd drop-in make it unconditional; the panel then survived eight SIGKILLs a second apart, back each time in 2.4s. Plasma draws a minimised task and a background task identically, so the five states the room needs cannot all be shown. Rather than write a task manager, the classroom removes minimise: clicking a launcher always means show me this. Co-Authored-By: Claude Opus 5 <[email protected]>
103 lines
2.8 KiB
Plaintext
103 lines
2.8 KiB
Plaintext
# The classroom's window manager.
|
|
#
|
|
# The shape of this file is the argument for the whole architecture: window
|
|
# stacking, minimising, dialog placement and full-screen media are settings
|
|
# here, not code somewhere in the classroom.
|
|
|
|
[Compositing][$i]
|
|
Enabled=true
|
|
# Let KWin choose between OpenGL and software rendering by itself. A
|
|
# classroom machine that loses acceleration after a kernel update should
|
|
# come up slower, not blank.
|
|
WindowsBlockCompositing=true
|
|
AllowTearing=false
|
|
LatencyPolicy=Medium
|
|
|
|
[Desktops][$i]
|
|
Number=1
|
|
Rows=1
|
|
# One desktop, so a teacher cannot land on an empty one and conclude the
|
|
# computer has lost their work.
|
|
|
|
[Windows][$i]
|
|
Placement=Centered
|
|
FocusPolicy=ClickToFocus
|
|
AutoRaise=false
|
|
DelayFocus=0
|
|
FocusStealingPreventionLevel=1
|
|
# A dialog belongs to the window that opened it and stays with it. This is
|
|
# what keeps a print dialog in front of the page it is printing without
|
|
# anything in the classroom arranging it.
|
|
SeparateScreenFocus=false
|
|
ActiveMouseScreen=false
|
|
TitlebarDoubleClickCommand=Maximize
|
|
MaximizeButtonLeftClickCommand=Maximize
|
|
MaximizeButtonMiddleClickCommand=Maximize
|
|
MaximizeButtonRightClickCommand=Maximize
|
|
|
|
[MouseBindings][$i]
|
|
CommandAllKey=Meta
|
|
CommandAll1=Move
|
|
CommandAll2=Nothing
|
|
CommandAll3=Nothing
|
|
CommandTitlebarWheel=Nothing
|
|
CommandAllWheel=Nothing
|
|
|
|
[TabBox][$i]
|
|
# No window switcher overlay. The bottom bar is the way between windows.
|
|
ShowTabBox=false
|
|
|
|
[Plugins][$i]
|
|
# Effects the classroom uses, and nothing else. Every line that is false is
|
|
# an effect that will not be loaded at all.
|
|
blurEnabled=true
|
|
contrastEnabled=true
|
|
kwin4_effect_fadeEnabled=true
|
|
kwin4_effect_translucencyEnabled=false
|
|
kwin4_effect_dialogparentEnabled=true
|
|
kwin4_effect_squashEnabled=true
|
|
kwin4_effect_maximizeEnabled=true
|
|
kwin4_effect_scaleEnabled=true
|
|
kwin4_effect_fullscreenEnabled=true
|
|
slidingpopupsEnabled=true
|
|
screenedgeEnabled=false
|
|
cubeEnabled=false
|
|
desktopgridEnabled=false
|
|
overviewEnabled=false
|
|
windowviewEnabled=false
|
|
wobblywindowsEnabled=false
|
|
magiclampEnabled=false
|
|
slideEnabled=false
|
|
zoomEnabled=false
|
|
mouseclickEnabled=false
|
|
showfpsEnabled=false
|
|
thumbnailasideEnabled=false
|
|
kwin4_effect_dimscreenEnabled=false
|
|
kwin4_effect_morphingpopupsEnabled=false
|
|
|
|
[Effect-blur][$i]
|
|
BlurStrength=8
|
|
NoiseStrength=2
|
|
|
|
[org.kde.kdecoration2][$i]
|
|
library=org.kde.breeze
|
|
theme=Breeze
|
|
# A pin and a close button, and nothing else.
|
|
#
|
|
# The pin is the Live View story: keeping a window above the others is a
|
|
# window-manager state, not a feature the classroom has to invent. There is
|
|
# deliberately no minimise button, because a minimised window is the one
|
|
# thing a teacher cannot see the state of — measured, not assumed. Double
|
|
# clicking the title bar still maximises, so nothing is unreachable.
|
|
ButtonsOnLeft=
|
|
ButtonsOnRight=FX
|
|
ShowToolTips=false
|
|
BorderSize=None
|
|
BorderSizeAuto=false
|
|
|
|
[Script-desktopchangeosd][$i]
|
|
Enabled=false
|
|
|
|
[Xwayland][$i]
|
|
Scale=1
|