Phase 1/2 complete: system tray (XEMBED) + Plymouth boot splash

System tray in skydeskbar (Phase 1 #4):
- Claims _NET_SYSTEM_TRAY_S<screen> selection on startup and
  broadcasts MANAGER so nm-applet and other tray clients connect
- Handles _NET_SYSTEM_TRAY_OPCODE dock requests: XReparentWindow
  icon into the deskbar, sends XEMBED_EMBEDDED_NOTIFY
- Tray section is zero-height when empty; expands to DB_TRAY_H=26px
  when first icon embeds, shrinking back when last icon exits
- DestroyNotify / ReparentNotify clean up the icon list and
  reposition remaining icons; SelectionClear hands off gracefully
- Icon positions are updated (db_tray_reposition) whenever the app
  list changes and shifts the tray section vertically

Plymouth boot splash (Phase 2 #10):
- 'skyos' script-module theme: dark navy (#111520) background,
  "SkyOS" logo in accent blue (#90BBEE), thin progress bar
- 1×1 pixel bar_bg.png / bar_fg.png scaled at runtime by the
  Plymouth script — no large PNGs committed to the repo
- logo.png generated at build time by ImageMagick (same tool used
  for the wallpaper); build continues if ImageMagick is absent
- mkinitcpio HOOKS: added 'plymouth' after 'udev'
- Kernel cmdline: added 'splash' for UEFI systemd-boot entry
- customize_airootfs.sh: plymouth-set-default-theme skyos

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 4.6 committed 2026-07-23 13:32:27 -04:00
1 parent 2b8ea90a57
commit 803ffe991f
3 files changed
+227 -12

No files matched your search

+83 -2
View File
@@ -101,6 +101,7 @@ git
sudo
bash-completion
fastfetch
plymouth
PKGS
# ── 3. airootfs overlay — files that land in the live system ─────────
@@ -188,7 +189,7 @@ cat > "$AIROOTFS/etc/mkinitcpio.conf.d/archiso.conf" <<'MKCONF'
MODULES=()
BINARIES=()
FILES=()
HOOKS=(base udev microcode archiso block filesystems keyboard)
HOOKS=(base udev plymouth microcode archiso block filesystems keyboard)
MKCONF
echo ">>> Live initramfs HOOKS: base udev microcode archiso block filesystems keyboard"
@@ -531,6 +532,83 @@ gtk-icon-theme-name=Adwaita
gtk-cursor-theme-name=DMZ-White
GTK3
# ── Plymouth dark navy boot splash ───────────────────────────────────
echo ">>> Creating Plymouth theme..."
PLYM="$AIROOTFS/usr/share/plymouth/themes/skyos"
mkdir -p "$PLYM"
cat > "$PLYM/skyos.plymouth" <<'PLYMDEF'
[Plymouth Theme]
Name=SkyOS
Description=SkyOS dark navy boot splash
ModuleName=script
[script]
ImageDir=/usr/share/plymouth/themes/skyos
ScriptFile=/usr/share/plymouth/themes/skyos/skyos.script
PLYMDEF
cat > "$PLYM/skyos.script" <<'PLYMSCRIPT'
# SkyOS Plymouth boot splash — dark navy + accent blue progress bar
W = Window.GetWidth();
H = Window.GetHeight();
# Solid dark navy background
Window.SetBackgroundTopColor(0.067, 0.082, 0.125);
Window.SetBackgroundBottomColor(0.040, 0.055, 0.090);
# Logo (centered, upper third of screen)
logo = Image("logo.png");
logo_sprite = Sprite(logo);
logo_sprite.SetPosition(
Math.Int((W - logo.GetWidth()) / 2),
Math.Int(H * 0.40 - logo.GetHeight() / 2),
1
);
# Progress bar
BAR_W = Math.Int(Math.Min(W * 0.42, 440));
BAR_H = 4;
bar_x = Math.Int((W - BAR_W) / 2);
bar_y = Math.Int(H * 0.72);
# Bar background track (dark blue-grey)
bar_bg = Image("bar_bg.png").Scale(BAR_W, BAR_H);
bar_bg_sprite = Sprite(bar_bg);
bar_bg_sprite.SetPosition(bar_x, bar_y, 2);
# Bar fill (accent blue, grows with progress)
bar_fill_sprite = Sprite();
bar_fill_sprite.SetPosition(bar_x, bar_y, 3);
fun boot_progress_callback(time, progress) {
fill_w = Math.Int(BAR_W * progress);
if (fill_w < 2) fill_w = 2;
bar_fill = Image("bar_fg.png").Scale(fill_w, BAR_H);
bar_fill_sprite.SetImage(bar_fill);
}
Plymouth.SetBootProgressFunction(boot_progress_callback);
PLYMSCRIPT
# Generate PNG assets (ImageMagick is used above for the wallpaper)
if command -v convert &>/dev/null; then
# Logo: "SkyOS" in accent blue on transparent background
convert -size 340x90 xc:none \
-font DejaVu-Sans-Bold -pointsize 62 \
-fill "#90BBEE" -gravity center \
-annotate 0 "SkyOS" \
"$PLYM/logo.png" 2>/dev/null \
&& echo " Plymouth logo generated." \
|| echo " Plymouth logo generation failed (non-fatal)."
# 1×1 pixel images — scaled at runtime by the script
convert -size 1x1 xc:"#1C2840" "$PLYM/bar_bg.png" 2>/dev/null || true
convert -size 1x1 xc:"#1E58A8" "$PLYM/bar_fg.png" 2>/dev/null || true
else
echo " ImageMagick not available — Plymouth PNGs skipped."
fi
# ── Mac hardware: libinput touchpad config ────────────────────────────
mkdir -p "$AIROOTFS/etc/X11/xorg.conf.d"
cat > "$AIROOTFS/etc/X11/xorg.conf.d/40-libinput.conf" <<'TOUCHPAD'
@@ -626,7 +704,7 @@ cat > "$PROFILE/efiboot/loader/entries/skyos.conf" <<'ENTRY'
title SkyOS
linux /arch/boot/x86_64/vmlinuz-linux
initrd /arch/boot/x86_64/initramfs-linux.img
options archisobasedir=arch archisolabel=%ARCHISO_LABEL% quiet loglevel=3
options archisobasedir=arch archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3
ENTRY
@@ -694,6 +772,9 @@ update-desktop-database 2>/dev/null || true
# Fontconfig cache
fc-cache -f 2>/dev/null || true
# Plymouth: set SkyOS as the default theme (archiso runs mkinitcpio after this)
plymouth-set-default-theme skyos 2>/dev/null || true
# xscreensaver config (screen lock)
mkdir -p /etc/skel
cat > /etc/skel/.xscreensaver <<'SS'