fix: regenerate all icon caches, not just 4 hardcoded themes #3

Closed
clawdie wants to merge 19 commits from fix/xfce-icons-and-visuals into xfce-operator-usb
Owner

Root cause: three failures affecting XFCE icons on live USB

Tested on AMD hardware with the 2026-06-01 build — icons still missing despite
dynamic icon cache regeneration. Further live-session diagnostics revealed:

1. XFCE plugins reject absolute icon paths

button-icon="/usr/local/share/clawdie-iso/icons/clawdie-start.png" — absolute
paths are silently rejected by XFCE panel plugins. The Whisker menu falls back
to a broken/missing icon glyph.

Fix: Changed to themed name clawdie-start in xfce4-panel.xml.

2. Brand icon not in hicolor theme directory

The clawdie-start PNG/SVG were only installed to
/usr/local/share/clawdie-iso/icons/. XFCE icon theme lookup scans standard
theme directories: hicolor/48x48/apps/, hicolor/scalable/apps/, etc.

Fix: build.sh now installs clawdie-start.png into both
hicolor/48x48/apps/ and hicolor/64x64/apps/, and clawdie-start.svg into
hicolor/scalable/apps/, then runs gtk-update-icon-cache on hicolor.

3. XFCE runtime state creation overrides skeleton config

On first boot xfdesktop creates monitor-specific backdrop keys that don"t exist
in the skeleton XML. Result: default wallpaper shown instead of Clawdie branding.

Fix: Added clawdie-xfce-visuals-guard.sh — a best-effort autostart script
that re-applies theme, panel (icon/branding), and wallpaper settings at 3, 7,
and 15 seconds after login. Catches keys created during the startup race.

Dynamic icon cache (previous fix, retained)

The earlier commit"s for _icon_theme_dir in icons/*/ scan is retained — all
installed icon themes get their cache regenerated, including hicolor (which
pcmanfm/xfce4-terminal/firefox depend on for launcher icons).

Verification

  • sh -n on all touched shell scripts
  • git diff --check whitespace clean
## Root cause: three failures affecting XFCE icons on live USB Tested on AMD hardware with the 2026-06-01 build — icons still missing despite dynamic icon cache regeneration. Further live-session diagnostics revealed: ### 1. XFCE plugins reject absolute icon paths `button-icon="/usr/local/share/clawdie-iso/icons/clawdie-start.png"` — absolute paths are silently rejected by XFCE panel plugins. The Whisker menu falls back to a broken/missing icon glyph. **Fix:** Changed to themed name `clawdie-start` in `xfce4-panel.xml`. ### 2. Brand icon not in hicolor theme directory The clawdie-start PNG/SVG were only installed to `/usr/local/share/clawdie-iso/icons/`. XFCE icon theme lookup scans standard theme directories: `hicolor/48x48/apps/`, `hicolor/scalable/apps/`, etc. **Fix:** `build.sh` now installs clawdie-start.png into both `hicolor/48x48/apps/` and `hicolor/64x64/apps/`, and clawdie-start.svg into `hicolor/scalable/apps/`, then runs `gtk-update-icon-cache` on hicolor. ### 3. XFCE runtime state creation overrides skeleton config On first boot xfdesktop creates monitor-specific backdrop keys that don"t exist in the skeleton XML. Result: default wallpaper shown instead of Clawdie branding. **Fix:** Added `clawdie-xfce-visuals-guard.sh` — a best-effort autostart script that re-applies theme, panel (icon/branding), and wallpaper settings at 3, 7, and 15 seconds after login. Catches keys created during the startup race. ### Dynamic icon cache (previous fix, retained) The earlier commit"s `for _icon_theme_dir in icons/*/` scan is retained — all installed icon themes get their cache regenerated, including hicolor (which pcmanfm/xfce4-terminal/firefox depend on for launcher icons). ### Verification - `sh -n` on all touched shell scripts - `git diff --check` whitespace clean
clawdie added 18 commits 2026-06-01 06:22:39 +02:00
Use packages/npm-globals.txt as the source of truth for offline npm CLI tarballs, update Pi to 0.75.5, and keep Claude Code out of the XFCE USB path.

---

Build: not run — ISO build not requested

Tests: pass — sh -n fetch-npm-globals and shell-npm-globals; pinned npm pack smoke passed
Consolidates the operator-USB work into main now that the AMD ASUS hardware-evidence collection is closed and Codex is parked. Brings the live-session hardware lane (XInput/libinput touchpad guard, internal audio + resolver bootstrap, hw-report with gated public upload, operator-USB branding) and the config-only XFCE panel polish (Pass 1 + Pass 2: branded Whisker PNG, xkb text mode, panel 40px, systray square-icons).

Conflict: doc/LLM-PROVIDER-HARNESS.md was evolved on both sides. Resolved as a union with no content lost — the xfce-side harness/provider/fabric restructure is the base, and main's two unique blocks (Verifying Key Cleanup flow, the 2D Platform x Harness matrix + populate/add procedures) are preserved. The doc owner may later dedupe the overlap between the two 1D matrices and the 2D matrix.

Verification debt stays explicit and open (not closed by this merge): XFCE visual-polish confirmation and the next rebuilt-image hardware retest, per doc/XFCE-PANEL-BUGS-HANDOFF.md and PLAN-OPERATOR-USB-NEXT.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Pass 1 + Pass 2 panel polish is on main and build-ready (XML valid, build.sh install paths + Whisker icon verified). Baton passes from the Claude/Linux config lane to the FreeBSD build host (osa) for an ISO rebuild + a boot on the AMD/ASUS box to check the verification items. No domedog config work remains.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Sam & Hermes
shell-ssh.sh now seeds ~/.ssh/config (AddKeysToAgent yes) and
~/.tmux.conf (SSH_AUTH_SOCK persistence) after SSH key install.
Idempotent — appends to existing configs if already present.
Fixes agent-dead-after-tmux-restart for every fresh Clawdie install.
- Tier 1: seed ~/.profile with eval $(ssh-agent -s) launcher (FreeBSD,
  no systemd). AddKeysToAgent alone does not start an agent; without a
  launcher headless/SSH-in shells still get "Could not open connection".
- Tier 3: drop set-option -g update-environment from tmux.conf seed.
  tmux default already includes SSH_AUTH_SOCK + DISPLAY/XAUTHORITY.
  set -g replaces the entire list, breaking X11 GUI apps on XFCE.
- Remove .graphifyignore per project policy (graph artifacts not
  committed, tool not integrated into ISO repo).
- shell-system.sh (runs last, step 6): rewrite .profile with agent launcher,
  full .bashrc with sudo() shell function that fire-and-forget snapshots
  zroot@cli-<ts> before mdo -u root. PATH, prompt, history, aliases (ll/la/lt).
  Agent fallback for non-login shells via ~/.ssh-agent-env.
- shell-ssh.sh (step 4): strip to ~/.ssh/config only. Agent/profile/tmux
  seeding moved to shell-system.sh so it is not overwritten.
- AGENTS.md: document sudo→mdo decision with rationale table (ISO size,
  audit surface, single privilege path, ZFS rollback safety).
# Conflicts:
#	AGENTS.md
Replaced hardcoded icon theme list (hicolor/Adwaita/AdwaitaLegacy/Papirus)
with a dynamic directory scan of /usr/local/share/icons/. Applications like
pcmanfm and xfce4-terminal install into hicolor but were missed when the
cache wasn't regenerated for all themes, causing broken launcher icons
(blank/missing glyphs) on the panel and in the Whisker menu.

Root cause: gtk-update-icon-cache was only run for the 4 known themes,
but FreeBSD packages install icons into additional directories that
weren't covered.

The Clawdie visual assets (clawdie-operator-bg.png background +
clawdie-start.png triangle icon) are already committed and referenced
correctly in xfce4-desktop.xml and xfce4-panel.xml — no changes needed.
clawdie added 1 commit 2026-06-01 23:35:01 +02:00
Three root causes for missing XFCE icons found via live-USB hardware test:

1. XFCE plugins do not reliably load absolute icon paths — the Whisker
   Start button had button-icon=/usr/local/share/clawdie-iso/icons/...
   which silently failed to resolve. Changed to themed name "clawdie-start"
   and install the icon files into hicolor/48x48/apps/, 64x64/apps/,
   and scalable/apps/ where the icon theme lookup can find them.

2. Brand icons were only installed to /usr/local/share/clawdie-iso/icons/
   but XFCE resolves themed icon names by scanning the icon theme
   directories. Now install clawdie-start.png/svg into hicolor as well.

3. XFCE creates monitor-specific desktop keys only after xfdesktop starts,
   which can override the skeleton wallpaper. Add a post-login visual guard
   that re-applies theme, panel, and wallpaper settings at 3/7/15 seconds.

The dynamic icon-cache regeneration (all directories under icons/) is
retained from the previous commit.

Checks: sh -n build.sh clawdie-xfce-visuals-guard.sh clawdie-xfce-session-inner
clawdie closed this pull request 2026-06-02 06:28:45 +02:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: clawdie/clawdie-iso#3
No description provided.