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
background under `/tmp`. It should not try to create files under `/usr/local/share`
at runtime unless explicitly requested by the operator.
background under project-local `tmp/` when a checkout is available. On the live USB,
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:**
```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 \
-s /tmp/clawdie-wallpaper.png
-s "$PROJECT_TMP/clawdie-wallpaper.png"
```
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
already registered, then waits for Enter.
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`
prints genmon XML. Only claim panel visibility after genmon is packaged and
wired into the seeded panel or configured manually.

View file

@ -1,17 +1,40 @@
#!/bin/sh
# 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.
OUT="${1:-/tmp/clawdie-wallpaper.png}"
CLAWDIE_BG="/usr/local/share/clawdie-iso/wallpapers/clawdie-operator-bg.png"
XFCE_BG="/usr/local/share/backgrounds/xfce/default.png"
FALLBACK_BG="/tmp/clawdie-wallpaper-base.png"
have() {
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
im() { magick "$@"; }
elif have convert; then
@ -21,6 +44,11 @@ else
exit 1
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")
if have tailscale; then
TS_IP=$(tailscale ip -4 2>/dev/null | head -n 1)