# 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.