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:
1 parent
2b8ea90a57
commit
803ffe991f
3 files changed
+227
-12
No files matched your search
@@ -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'
|
||||
|
||||
Reference in new issue
Block a user