Files
mesh-catalog/modules/feh/README.md
T
mesh-tools 652b00b25b
mesh/merge-gate checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/repo-check checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/delivery-group group feat/owned-paths checking: 0 of 2 member(s) ready
mesh/delivery superseded: a newer head of the same pull request
Say on every directory how it treats files it does not know, and check it (issue 1024, ADR 0422)
Every directory and archive resource carries `unknown`: move-out for a home folder whose program writes nothing there (the node-engine, delivered in mesh-host #117, moves the rest to ~/.local/state/mesh-moved/<module>/ with a list), module for ~/.ssh and ~/.claude, program elsewhere; `knows` keeps what a program or the operator relies on (powerlevel10k's compiled files, i3's scripts and the asus/g14 drop-ins, dunst's slack rule, betterbird's records, node-env's forge credential, issue 1033). Two shared folders are no longer declared. Each module's README says it. checks/owned holds every manifest to it; checks/sshdir stays while main's merge check runs it (issue 1035). Tests that pin a manifest follow the new key only. Reviewed in three rounds.
2026-10-17 16:23:03 +00:00

2.9 KiB

feh

The wallpaper as a module (novox/hq ADR 0208, research 026/05).

  • Installs feh and requires x11-display on its own machine. It holds no seat: a wallpaper is not a role anything else calls.
  • Carries the wallpaper itself. wallpaper/default.jpg is built into an archive of the module (ADR 0205) and unpacked into ~/.local/share/feh/wallpapers/, which the module owns.
  • Owns ~/.fehbg, which sets that image, filled, on every monitor, without rewriting itself (--no-fehbg).
  • Runs ~/.fehbg once per session, from the session's start (the xinitrc slot normal).
  • Binds $mod+Shift+b to the same file, as its own i3 drop-in (50-feh.conf): the declared wallpaper back, after a monitor change.

Tools

tool does
feh_set set images (one for all monitors, or one each) in a mode: fill, center, max, scale, tile. For this session; the declared wallpaper returns at the next login
feh_current the declared wallpaper (from ~/.fehbg) and the one feh_set put up in this session

feh_set never writes ~/.fehbg. A wallpaper that should stay is a change to this module, or a setting once issue 168 closes, not a file the next push would overwrite.

What it improves on what was found

  • The wallpaper no longer lives in the predecessor's tree. ~/.fehbg pointed into a directory of the retired predecessor's. Deleting that directory would have left the desktop black, silently.
  • One image file, the same on both workstations. The image was byte-identical on both. It is now the module's own.

What it leaves as found

  • The predecessor's wallpaper directory. It is part of the predecessor's tree, which goes as a whole.

Migration (ADR 0182)

  • The first push keeps the found ~/.fehbg once, then writes the module's.
  • Once the xorg module writes the session's start, delete the ~/.fehbg & line from your own part of ~/.xinitrc.
  • The image's origin is the predecessor's desktop module. Check that it may be redistributed before this catalogue is published anywhere public.

Blockers

  • x11-display and the xinitrc slot are ADR 0208's. Until the controller knows them, mctl reads them as unknown.

Its i3 lines are a contribution (changed 2026-10-05, novox/hq ADR 0212)

The module no longer writes a file into i3's config.d. Its window-manager lines (the source is still under files/i3/ where it had one) are a contribution to node-display-session. The i3 module places them in its own configuration under a # <module> line, so this module depends on a window manager being assigned beside it.

Files it does not know

Each directory or archive this module declares says how it treats a file it did not write (ADR 0422, ADR 0416).

  • ~/.local/share/feh/wallpapers: holds only what this module declares; anything else is moved out by the node-engine to ~/.local/state/mesh-moved/feh/ with a list, never deleted (ADR 0422 §4).