feat: give the classroom a desktop instead of a shell
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]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bfc7caf28f
commit
87b55761c6
@@ -0,0 +1,102 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user