# 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

# The first Chrome top-level stays tiled; later indistinguishable Chrome
# containers are floated. Which is which depends on creation order, so this
# has to be stateful Sway IPC logic rather than a broad for_window rule.
# The close affordance for a popup lives in the dock.
exec --no-startup-id /usr/local/bin/classroom-chrome-windows

# Popups are borderless like the main browser, so they have no title bar to
# drag. Chrome's own tab strip moves them, and Super+drag always works.
floating_modifier $mod normal

# 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
