fix(iso-visuals): avoid host-global tmp in wallpaper helper (Sam & Pi)

Sync the wallpaper helper and iso-visuals guidance with the project-local tmp policy, falling back to app-owned live cache paths when no project root exists.\n\nValidation: sh -n skills/iso-visuals/scripts/clawdie-wallpaper-gen.sh skills/iso-visuals/scripts/clawdie-join-hive.sh; npx --yes prettier@3 --check skills/iso-visuals/SKILL.md; python3 scripts/layered_soul.py validate .
This commit is contained in:
Sam & Claude 2026-06-20 12:10:35 +02:00
parent eddea0b4e9
commit 9ae8d250a7
2 changed files with 42 additions and 8 deletions

View file

@ -70,15 +70,20 @@ install -m 755 scripts/clawdie-wallpaper-gen.sh \
``` ```
The helper falls back to the stock XFCE background, then to a generated dark solid The helper falls back to the stock XFCE background, then to a generated dark solid
background under `/tmp`. It should not try to create files under `/usr/local/share` background under project-local `tmp/` when a checkout is available. On the live USB,
at runtime unless explicitly requested by the operator. where there is usually no project root, it uses an app-owned cache directory such as
`$XDG_CACHE_HOME/clawdie` or `$HOME/.cache/clawdie`. It should not try to create
files under `/usr/local/share` at runtime unless explicitly requested by the operator.
**Optional runtime/session wiring:** **Optional runtime/session wiring:**
```bash ```bash
/usr/local/bin/clawdie-wallpaper-gen /tmp/clawdie-wallpaper.png PROJECT_ROOT=$(git rev-parse --show-toplevel)
PROJECT_TMP="$PROJECT_ROOT/tmp"
mkdir -p "$PROJECT_TMP"
/usr/local/bin/clawdie-wallpaper-gen "$PROJECT_TMP/clawdie-wallpaper.png"
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/workspace0/last-image \ xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/workspace0/last-image \
-s /tmp/clawdie-wallpaper.png -s "$PROJECT_TMP/clawdie-wallpaper.png"
``` ```
Requires ImageMagick (`ImageMagick7` in the ISO package list; `magick` or Requires ImageMagick (`ImageMagick7` in the ISO package list; `magick` or
@ -166,7 +171,8 @@ After booting the ISO:
reports provider.env status without exposing secrets, registers or reports reports provider.env status without exposing secrets, registers or reports
already registered, then waits for Enter. already registered, then waits for Enter.
4. **Wallpaper helper:** running `/usr/local/bin/clawdie-wallpaper-gen` writes an 4. **Wallpaper helper:** running `/usr/local/bin/clawdie-wallpaper-gen` writes an
image to `/tmp/clawdie-wallpaper.png` using the Clawdie wallpaper as base. image under project-local `tmp/` when run from a checkout, or an app-owned live
cache directory when no project root exists, using the Clawdie wallpaper as base.
5. **Panel indicator helper:** running `/usr/local/bin/colibri-panel-indicator` 5. **Panel indicator helper:** running `/usr/local/bin/colibri-panel-indicator`
prints genmon XML. Only claim panel visibility after genmon is packaged and prints genmon XML. Only claim panel visibility after genmon is packaged and
wired into the seeded panel or configured manually. wired into the seeded panel or configured manually.

View file

@ -1,17 +1,40 @@
#!/bin/sh #!/bin/sh
# Generate a wallpaper with machine identity overlaid. # Generate a wallpaper with machine identity overlaid.
# Safe to run on first boot; caches result in /tmp/clawdie-wallpaper.png. # Safe to run on first boot; caches result in project-local tmp/ when a project
# root is available, otherwise in the live user's app-owned cache directory.
# Requires ImageMagick (magick or convert). Tailscale is optional. # Requires ImageMagick (magick or convert). Tailscale is optional.
OUT="${1:-/tmp/clawdie-wallpaper.png}"
CLAWDIE_BG="/usr/local/share/clawdie-iso/wallpapers/clawdie-operator-bg.png" CLAWDIE_BG="/usr/local/share/clawdie-iso/wallpapers/clawdie-operator-bg.png"
XFCE_BG="/usr/local/share/backgrounds/xfce/default.png" XFCE_BG="/usr/local/share/backgrounds/xfce/default.png"
FALLBACK_BG="/tmp/clawdie-wallpaper-base.png"
have() { have() {
command -v "$1" >/dev/null 2>&1 command -v "$1" >/dev/null 2>&1
} }
project_root() {
if [ -n "${CLAWDIE_PROJECT_ROOT:-}" ]; then
printf '%s\n' "$CLAWDIE_PROJECT_ROOT"
elif have git && git rev-parse --show-toplevel >/dev/null 2>&1; then
git rev-parse --show-toplevel
else
return 1
fi
}
scratch_dir() {
if [ -n "${CLAWDIE_TMP:-}" ]; then
printf '%s\n' "$CLAWDIE_TMP"
elif _root=$(project_root); then
printf '%s/tmp\n' "$_root"
elif [ -n "${XDG_CACHE_HOME:-}" ]; then
printf '%s/clawdie\n' "$XDG_CACHE_HOME"
elif [ -n "${HOME:-}" ]; then
printf '%s/.cache/clawdie\n' "$HOME"
else
printf '%s\n' "/var/cache/clawdie"
fi
}
if have magick; then if have magick; then
im() { magick "$@"; } im() { magick "$@"; }
elif have convert; then elif have convert; then
@ -21,6 +44,11 @@ else
exit 1 exit 1
fi fi
SCRATCH_DIR=$(scratch_dir)
mkdir -p "$SCRATCH_DIR"
OUT="${1:-${SCRATCH_DIR}/clawdie-wallpaper.png}"
FALLBACK_BG="${SCRATCH_DIR}/clawdie-wallpaper-base.png"
HOST=$(hostname 2>/dev/null || echo "clawdie-live") HOST=$(hostname 2>/dev/null || echo "clawdie-live")
if have tailscale; then if have tailscale; then
TS_IP=$(tailscale ip -4 2>/dev/null | head -n 1) TS_IP=$(tailscale ip -4 2>/dev/null | head -n 1)