Building the package found two things reading the tree did not. dpkg refused it outright: plasma-workspace already owns /etc/xdg/plasmanotifyrc and friends, and two packages cannot own one path. The room's settings move to a directory of their own with /etc/environment.d putting it in front of /etc/xdg, which is KConfig's own cascade rather than a file fight. The postinst then failed on a chmod for a command that no longer exists. It now walks what the package installed instead of naming files, removes the login shell that used to start sway on tty1, and enables SDDM and the audio service. Verified by installing the built package on a fresh machine and starting the session from it: restrictions in force, palette applied, audio service enabled and running, panel supervision unconditional. Co-Authored-By: Claude Opus 5 <[email protected]>
76 lines
3.1 KiB
Bash
Executable File
76 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Put the classroom desktop onto a machine, from the repository, at the
|
|
# paths the package will use. Run as root inside the lab.
|
|
#
|
|
# Every destination here is a normal system path that Plasma already reads.
|
|
# There is no classroom daemon in this list, and nothing is generated: the
|
|
# desktop is a set of files.
|
|
set -euo pipefail
|
|
|
|
SRC="${1:-/srv/classroom}"
|
|
|
|
# A directory of the classroom's own, ahead of /etc/xdg in
|
|
# XDG_CONFIG_DIRS. plasma-workspace owns files by these names in /etc/xdg
|
|
# and two packages cannot own one path.
|
|
for setting in kdeglobals kwinrc kwinrulesrc kscreenlockerrc ksmserverrc \
|
|
krunnerrc plasmanotifyrc; do
|
|
install -Dm644 "$SRC/config/plasma/xdg/$setting" \
|
|
"/etc/ekklesia-classroom/xdg/$setting"
|
|
rm -f "/etc/xdg/$setting.ekklesia-old"
|
|
done
|
|
|
|
install -Dm644 "$SRC/config/environment/90-ekklesia-classroom.conf" \
|
|
/etc/environment.d/90-ekklesia-classroom.conf
|
|
|
|
install -Dm644 "$SRC/config/plasma/colors/EkklesiaDark.colors" \
|
|
/usr/share/color-schemes/EkklesiaDark.colors
|
|
install -Dm644 "$SRC/config/plasma/colors/EkklesiaLight.colors" \
|
|
/usr/share/color-schemes/EkklesiaLight.colors
|
|
|
|
LNF=/usr/share/plasma/look-and-feel/org.ekklesia.classroom.desktop
|
|
rm -rf "$LNF"
|
|
install -Dm644 "$SRC/config/plasma/lookandfeel/metadata.json" "$LNF/metadata.json"
|
|
install -Dm644 "$SRC/config/plasma/lookandfeel/contents/defaults" \
|
|
"$LNF/contents/defaults"
|
|
install -Dm644 \
|
|
"$SRC/config/plasma/lookandfeel/contents/layouts/org.kde.plasma.desktop-layout.js" \
|
|
"$LNF/contents/layouts/org.kde.plasma.desktop-layout.js"
|
|
|
|
for entry in "$SRC"/config/plasma/applications/*.desktop; do
|
|
install -Dm644 "$entry" "/usr/share/applications/$(basename "$entry")"
|
|
done
|
|
|
|
# Entries that deliberately shadow a vendor one. XDG_DATA_DIRS searches
|
|
# /usr/local/share before /usr/share, so these win without touching, and
|
|
# without being overwritten by, the package that provides the original.
|
|
for entry in "$SRC"/config/plasma/applications-local/*.desktop; do
|
|
install -Dm644 "$entry" "/usr/local/share/applications/$(basename "$entry")"
|
|
done
|
|
|
|
install -Dm644 "$SRC/config/plasma/solid/ekklesia-dvd.desktop" \
|
|
/usr/share/solid/actions/ekklesia-dvd.desktop
|
|
|
|
for icon in "$SRC"/config/icons/ekklesia-*.svg; do
|
|
[ -e "$icon" ] || continue
|
|
install -Dm644 "$icon" \
|
|
"/usr/share/icons/hicolor/scalable/apps/$(basename "$icon")"
|
|
done
|
|
|
|
install -Dm644 "$SRC/config/wallpapers/classroom-calm.png" \
|
|
/usr/share/backgrounds/ekklesia/classroom-calm.png
|
|
|
|
install -Dm644 "$SRC/systemd/user/plasma-plasmashell.service.d/ekklesia-classroom.conf" \
|
|
/etc/systemd/user/plasma-plasmashell.service.d/ekklesia-classroom.conf
|
|
|
|
for script in classroom-browser classroom-wonderink; do
|
|
[ -e "$SRC/scripts/$script" ] || continue
|
|
install -Dm755 "$SRC/scripts/$script" "/usr/local/bin/$script"
|
|
done
|
|
|
|
command -v gtk-update-icon-cache >/dev/null 2>&1 \
|
|
&& gtk-update-icon-cache -qtf /usr/share/icons/hicolor || true
|
|
command -v update-desktop-database >/dev/null 2>&1 \
|
|
&& update-desktop-database -q /usr/share/applications || true
|
|
|
|
echo "classroom desktop installed"
|