Files
Classroom_Desktop/config/plasma/xdg/kwinrc
T
ekklesiaandClaude Opus 5 87b55761c6 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]>
2026-09-10 08:35:12 -05:00

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