# Window rules. # # There are three: video, the Parent Call card, and the presentation surface. # # Everything else the classroom used to arrange by hand is ordinary window # manager behaviour and needs no rule: a dialog stays in front of the window # that opened it, a window a page opens floats over the browser instead of # resizing it, and a print dialog is the window in front. # # There is deliberately no rule that maximises the browser. A rule can only # match a window class, and Chrome gives its main window and every window a # page opens the same one — matching on it maximised the lesson's popup to # the whole display, which is the behaviour this architecture exists to # stop. Chrome can tell them apart, so `--start-maximized` in the launcher # does it: the first window fills the screen, later ones keep the size the # page asked for. Arranging that from outside the browser is what the old # 314-line window arbiter was doing. [General] count=3 rules=classroom-video,classroom-parent-call,classroom-presentation [classroom-video] Description=Video is an appliance screen, not a window # VLC reports its class as "Vlc", and KWin's matching is case sensitive — # measured on a running session, where a lower-case substring rule matched # nothing at all and said so nowhere. wmclass=(?i)vlc wmclassmatch=3 wmclasscomplete=false noborder=true noborderrule=2 [classroom-parent-call] Description=Parent Call is a quick action, not a window wmclass=classroom-parent-call wmclassmatch=1 wmclasscomplete=false # It is not an application, so it does not belong in the row of them. The # button that opened it is already in the bar. skiptaskbar=true skiptaskbarrule=2 skipswitcher=true skipswitcherrule=2 skippager=true skippagerrule=2 # In front of the lesson a teacher was reading when they pressed the # button, rather than behind it. above=true aboverule=2 [classroom-presentation] Description=A presentation is the whole display, not a large window # The library and Quick Look have the same Wayland app id, so the stable # presenter title is part of this match. Matching the app alone would make # every Presentations window fullscreen. wmclass=ekklesia-presentations wmclassmatch=1 wmclasscomplete=false title=Presenting titlematch=1 fullscreen=true fullscreenrule=2 noborder=true noborderrule=2 skiptaskbar=true skiptaskbarrule=2