feat: minimize and restore windows the way a desktop does
The scratchpad technically minimized Chrome, but sway hands scratchpad windows back floating, so restoring gave a draggable window instead of the maximized one the user put away. Park windows on a hidden workspace as ordinary tiled containers instead, and move them back to the visible workspace on restore. classroom-window carries the whole state machine, so the dock buttons and Super+M share one implementation: not running -> launch unfocused -> focus focused -> minimize minimized -> restore, tiled and maximized Fullscreen is dropped on the way out, since a container parked while still fullscreen keeps drawing over everything else. floating disable on the way back also rescues windows left floating by the old scratchpad path. Super+Shift+M restores the newest minimized window, so nothing can get stranded on the hidden workspace. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d05f5bf909
commit
af79aba21b
@@ -20,6 +20,38 @@ fi
|
||||
STAGE="$ROOT/packaging/root"
|
||||
OUTPUT="$ROOT/dist/ekklesia-classroom_${VERSION}_amd64.deb"
|
||||
|
||||
# Syntax check everything the package ships, by shebang, so this cannot
|
||||
# drift out of date as classroom commands are added.
|
||||
echo "Validating sources"
|
||||
|
||||
for script in "$ROOT/packaging/debian/postinst" "$ROOT"/scripts/*; do
|
||||
[[ -f "$script" ]] || continue
|
||||
|
||||
case "$(head -n 1 "$script")" in
|
||||
*python3*)
|
||||
python3 -m py_compile "$script"
|
||||
;;
|
||||
*bash*|*bin/sh*)
|
||||
bash -n "$script"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
for module in "$ROOT"/lib/*.py; do
|
||||
[[ -f "$module" ]] || continue
|
||||
|
||||
python3 -m py_compile "$module"
|
||||
done
|
||||
|
||||
for policy in "$ROOT"/config/chrome/policies/*/*.json; do
|
||||
[[ -f "$policy" ]] || continue
|
||||
|
||||
python3 -c 'import json, sys; json.load(open(sys.argv[1]))' "$policy"
|
||||
done
|
||||
|
||||
find "$ROOT/scripts" "$ROOT/lib" \
|
||||
-name '__pycache__' -type d -prune -exec rm -rf {} + 2>/dev/null || true
|
||||
|
||||
echo "Building Ekklesia Classroom ${VERSION}"
|
||||
|
||||
# Always construct the package from clean canonical sources.
|
||||
@@ -54,6 +86,10 @@ install -Dm755 \
|
||||
"$ROOT/scripts/classroom-browser" \
|
||||
"$STAGE/usr/local/bin/classroom-browser"
|
||||
|
||||
install -Dm755 \
|
||||
"$ROOT/scripts/classroom-window" \
|
||||
"$STAGE/usr/local/bin/classroom-window"
|
||||
|
||||
install -Dm644 \
|
||||
"$ROOT/config/wallpapers/classroom-default.png" \
|
||||
"$STAGE/usr/share/backgrounds/ekklesia/classroom-default.png"
|
||||
|
||||
Reference in New Issue
Block a user