Cross-repo tracker for shipping a HaLOS-branded default desktop wallpaper (generic + HALPI2 variant) via APT packages instead of leaving the upstream Raspberry Pi OS orange-mountain default.
Full spec: docs/plans/2026-05-26-001-feat-halos-desktop-branding-plan.md.
Sub-tasks
Mechanism
Both branding packages declare Provides/Conflicts/Replaces on the virtual package halos-desktop-wallpaper and override the same rpd-common conffile (/etc/xdg/pcmanfm/default/desktop-items-{0,1}.conf) via dpkg-divert. halos-desktop depends on the virtual. Only one of the two real branding packages can be installed at a time; whichever is installed wins.
On HALPI2 desktop devices, the HALPI2 variant wins because pi-gen installs halos-halpi2-desktop at build time (transitively pulling in halos-halpi-desktop-branding). On RPi5 desktop devices, apt resolves the virtual to the only available provider in apt.halos.fi, the generic halos-desktop-branding. On any headless device, neither branding package is touched — halos-desktop is not installed.
Field-device migration
Existing HALPI2 desktop devices in the field do not auto-migrate to HALPI2 branding. When halos-desktop v0.3.6 reaches them via apt upgrade, apt picks the alphabetically-first available provider (halos-desktop-branding/generic) on every device, including HALPI2. Operators who want HALPI2 branding on a field device run:
sudo apt install halos-halpi2-desktop
This swaps the wallpaper provider cleanly via the existing Conflicts:/Replaces: chain. Reversible the same way: sudo apt install halos-desktop-branding.
The cooperative migration model matches the precedent already set by halos-desktop-marine / halos-headless-marine (the marine combination metapackages introduced in halos-metapackages PR #40): pi-gen handles new builds, operators handle field devices when they care.
Sequencing constraints
All apt-side prerequisites are now live on trixie-stable. The remaining work is in halos-pi-gen and is independent of the apt-side rollout.
Decisions (locked in)
- Three repos:
halos-org/halos-desktop-branding (generic wallpaper, halos-org / apt.halos.fi)
hatlabs/halos-halpi-desktop-branding (HALPI2 wallpaper, hatlabs / apt.hatlabs.fi)
hatlabs/halos-halpi2-desktop (HALPI2 desktop hook metapackage, hatlabs / apt.hatlabs.fi)
- Virtual package:
halos-desktop-wallpaper.
- Asset license: CC-BY for the branding packages.
- Pi-gen substage uses the marine combination-metapackage pattern (
dpkg -l halos-desktop check), running after stage-halos-desktop. No new top-level stage, no new STAGE_LIST parsing.
Cross-repo tracker for shipping a HaLOS-branded default desktop wallpaper (generic + HALPI2 variant) via APT packages instead of leaving the upstream Raspberry Pi OS orange-mountain default.
Full spec:
docs/plans/2026-05-26-001-feat-halos-desktop-branding-plan.md.Sub-tasks
halos-desktopdepends on virtualhalos-desktop-wallpaper(shipped v0.3.6+1 stable, live on apt.halos.fi/trixie-stable)Depends: halos-halpi2, halos-desktop, halos-halpi-desktop-branding(shipped v0.1.0+1, live on apt.hatlabs.fi/trixie-stable)halos-halpi2-desktopon HALPI2 desktop builds (using thedpkg -l halos-desktopcheck pattern thatstage-halos-marine/02-install-combination-metapackage/already uses)stage-halpi2-rpi/04-install-wallpaper/Mechanism
Both branding packages declare
Provides/Conflicts/Replaceson the virtual packagehalos-desktop-wallpaperand override the samerpd-commonconffile (/etc/xdg/pcmanfm/default/desktop-items-{0,1}.conf) viadpkg-divert.halos-desktopdepends on the virtual. Only one of the two real branding packages can be installed at a time; whichever is installed wins.On HALPI2 desktop devices, the HALPI2 variant wins because pi-gen installs
halos-halpi2-desktopat build time (transitively pulling inhalos-halpi-desktop-branding). On RPi5 desktop devices, apt resolves the virtual to the only available provider inapt.halos.fi, the generichalos-desktop-branding. On any headless device, neither branding package is touched —halos-desktopis not installed.Field-device migration
Existing HALPI2 desktop devices in the field do not auto-migrate to HALPI2 branding. When
halos-desktopv0.3.6 reaches them viaapt upgrade, apt picks the alphabetically-first available provider (halos-desktop-branding/generic) on every device, including HALPI2. Operators who want HALPI2 branding on a field device run:This swaps the wallpaper provider cleanly via the existing
Conflicts:/Replaces:chain. Reversible the same way:sudo apt install halos-desktop-branding.The cooperative migration model matches the precedent already set by
halos-desktop-marine/halos-headless-marine(the marine combination metapackages introduced in halos-metapackages PR #40): pi-gen handles new builds, operators handle field devices when they care.Sequencing constraints
All apt-side prerequisites are now live on
trixie-stable. The remaining work is inhalos-pi-genand is independent of the apt-side rollout.Decisions (locked in)
halos-org/halos-desktop-branding(generic wallpaper, halos-org / apt.halos.fi)hatlabs/halos-halpi-desktop-branding(HALPI2 wallpaper, hatlabs / apt.hatlabs.fi)hatlabs/halos-halpi2-desktop(HALPI2 desktop hook metapackage, hatlabs / apt.hatlabs.fi)halos-desktop-wallpaper.dpkg -l halos-desktopcheck), running afterstage-halos-desktop. No new top-level stage, no newSTAGE_LISTparsing.