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

+14 -1
View File
@@ -25,7 +25,9 @@
* ├──────────────────────────┤
* │ [1] [2] [3] [4] │ <- workspace strip
* ├──────────────────────────┤
* │ CPU 12% MEM 45% │ <- status bar
* │ [⊙][📶][🔋] │ <- system tray (XEMBED; hidden when empty)
* ├──────────────────────────┤
* │ VOL 50% CPU 12% MEM 45%│ <- status bar
* └──────────────────────────┘
*/
@@ -37,6 +39,9 @@
#define DB_ICON_SZ 18 /* app icon square size */
#define DB_WS_H 28 /* workspace strip height */
#define DB_STATUS_H 22 /* status bar height */
#define DB_TRAY_H 26 /* tray section height when icons are present */
#define DB_TRAY_ICON_SZ 20 /* embedded icon window size */
#define DB_TRAY_MAX 16 /* maximum simultaneous tray icons */
#define DB_MAX_APPS 32
/* ── fly-out menu ────────────────────────────────────────────────────── */
@@ -133,6 +138,14 @@ typedef struct Deskbar {
int sub_active; /* which sub-menu is open: 0=Apps, 1=Settings, -1=none */
int sub_hov; /* hovered item in sub-menu */
int sw_cache; /* cached screen width for menu positioning */
/* system tray (freedesktop.org XEmbed tray protocol) */
Window tray_icons[DB_TRAY_MAX];
int n_tray_icons;
Atom atom_tray_s0; /* _NET_SYSTEM_TRAY_S<screen> */
Atom atom_tray_opcode; /* _NET_SYSTEM_TRAY_OPCODE */
Atom atom_xembed; /* _XEMBED */
Atom atom_manager; /* MANAGER */
} Deskbar;
void db_init(Deskbar *db);