Skip to content

HaLOS desktop wallpaper branding via APT packages #115

Description

@mairas

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions