Files
Classroom_Desktop/config/sway/config
T
ekklesiaandClaude Opus 5 255072ac94 feat: settle Chrome's window, crash bubble and password prompts
Three things a volunteer should never have to see.

Sway was drawing its own title bar above Chrome's tab strip, which
already carries the window controls. Verified on a real session: Chrome
is an xdg_shell client with app_id "google-chrome" and sway was giving
it border "normal". A scoped rule removes the compositor decoration
only — Chrome keeps its tabs and address bar, stays a normal window, and
still maximises and minimises. A class rule covers an XWayland fallback.
Nothing else changes: the only other window in this classroom is VLC,
which is already borderless, so no broader rule is warranted.

"Restore pages? Chrome didn't shut down correctly" is suppressed with
--hide-crash-restore-bubble. Note the name. The switch this was going to
use, --disable-session-crashed-bubble, is not present in Chrome 152 at
all — checked against the strings of the installed binary — so it would
have silently done nothing.

That hides the prompt; the profile was still being marked as crashed,
which is the untidy half. Chrome's browser process shuts down cleanly on
SIGTERM, so a shutdown unit now gives it one and waits up to eight
seconds before the session is torn out from under it. Best effort by
construction: a shutdown that will not finish is far worse than a crash
flag.

Password prompts go off with the PasswordManagerEnabled policy, on the
path the classroom already manages. Existing profile and session data
are untouched, and website logins are unaffected: Wonder Ink and YouTube
stay signed in.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-05 00:21:02 -05:00

53 lines
2.2 KiB
Plaintext

# Ekklesia Classroom
# Managed by the ekklesia-classroom package.
set $mod Mod4
# Wallpaper
output * bg /usr/share/backgrounds/ekklesia/classroom-default.png fill
# UI scale first, so every surface below comes up at the right size
# instead of being resized underneath itself. This scales the whole
# session — Chrome, VLC and the dock alike — not just our own windows.
exec --no-startup-id /usr/local/bin/classroom-scale
# Notifications, started before the dock so nothing can race D-Bus into
# activating an unstyled mako first. The wrapper resolves the styling at
# the room's UI scale and execs mako, so the process is still just mako.
exec --no-startup-id /usr/local/bin/classroom-notifications
# Ekklesia Classroom dock
exec --no-startup-id /usr/local/bin/classroom-dock
# Keep the interface intentionally minimal.
# Additional classroom controls are added explicitly by Ekklesia Classroom.
include /etc/sway/config.d/*
# Chrome draws its own tab strip with window controls in it, so sway's
# title bar above that is a second, redundant one. Verified on the
# endpoint: Chrome is an xdg_shell client with app_id "google-chrome",
# and sway was giving it border "normal". The class rule covers the case
# where Chrome falls back to XWayland.
#
# This removes the compositor's decoration only. Chrome keeps its tabs
# and address bar, stays a normal window, and still maximises and
# minimises exactly as before.
for_window [app_id="google-chrome"] border none
for_window [class="(?i)google-chrome"] border none
# The DVD player is an appliance screen, not a desktop window. VLC takes
# the whole display itself; this removes the title bar sway would
# otherwise draw above the video. classroom-dvd-session covers the
# wallpaper with black until VLC is up, so there is never a gap.
for_window [class="(?i)vlc"] border none
for_window [app_id="(?i)vlc"] border none
# Minimize and restore.
#
# classroom-window parks the window on a hidden workspace as an ordinary
# tiled container, so restoring brings it back maximised instead of as a
# floating, draggable window the way the scratchpad did.
bindsym $mod+m exec /usr/local/bin/classroom-window minimize
bindsym $mod+Shift+m exec /usr/local/bin/classroom-window restore-last