Wallpaper from a link
Point set — or scoot’s [wallpaper] image — at a link: downloaded once, cached, then shown like any other image.
A wallpaper from a link
Section titled “A wallpaper from a link”Point set (or scoot’s [wallpaper] image) at an http:// or https://
URL and the daemon downloads it once and caches it, then shows the file
like any other image. Until the download lands — and when it fails — the
compositor’s background shows and the error says why; nothing blocks and
nothing retries in a loop.
scootbg set https://example.com/hills.jpgscootbg set https://example.com/hills.jpg --sha256 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08| Key | Type | Default | Meaning |
|---|---|---|---|
image (a URL) |
string, http(s)://, at most 4096 bytes |
— | Downloaded once, then shown. Needs curl on PATH; file:// and other schemes are refused (give the path itself). |
--sha256 / sha256 |
64 hex digits, as sha256sum prints |
none | Pins the download’s bytes: anything else fails instead of showing. With a path, refused. Applies live: changing it re-downloads. |
How it works. The cache is $XDG_CACHE_HOME/scootbg/
(~/.cache/scootbg/ when XDG_CACHE_HOME is unset, empty or relative),
one file per URL, named for the URL’s SHA-256. A file already there is
shown as is (re-checked against sha256 when one is pinned); otherwise
the worker thread — never the event loop — runs
curl --fail --location (redirects followed, five at most; http and
https only), capped at 32 MiB and sixty seconds, verifies the pin when
given, checks the bytes start as PNG, JPEG or WebP, and renames the
temporary file into place atomically. Two daemons racing on one entry
both download; the rename settles it, and the cache never holds a partial
file. An error page, a file past the cap, a hash mismatch, no network, or
no curl is an error naming the URL, and nothing is cached — a fixed
link is picked up by the next request. A failed download is tried again
on a new set, any apply-config (even an unchanged reload — scoot
sends one per reload), a reconfigured output, or a restart;
nothing polls. Prefer https, and pin sha256 so a changed byte fails
loudly instead of landing on screen.
The cache is yours to inspect and clear. To re-download a link (its
image changed upstream and no sha256 pins the old bytes), remove its
file from the cache directory and set the URL again; to drop every
download, remove the directory (scootbg re-creates it). query’s
shows names both the cached file (image) and the link (url).
When the link does not show, in order: scootbg set prints the
reason (and the daemon’s stderr has it once). No curl on PATH says
so; a host nothing resolves or answers names curl’s exit; a 404 or
other HTTP error says exited 22; an error page (a login wall, say) says
the bytes “do not start as a PNG, JPEG or WebP” and caches nothing; a
file past 32 MiB says so (link something smaller); a sha256 mismatch
prints both hashes (copy the actual one into the config, or drop the
pin); a cache directory nobody can write names it. Offline at startup,
the background shows until the next set, apply-config, reconfigure,
or restart with the network back.
From Nix: fetch at build time
Section titled “From Nix: fetch at build time”A look’s image — and a settings.wallpaper.image you write — takes
{ url, hash } as well as a path or a plain string URL: the profile
fetches it once with pkgs.fetchurl (the hash verified by Nix, the
file cached in the store), and scootbg sees an ordinary file. A plain
string URL works too, and then scootbg itself downloads and caches it
at runtime (above).
# Fetched at build time (verified, in the store, no network at runtime):programs.scoot.settings.wallpaper = { image = { url = "https://example.com/hills.jpg"; hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }; mode = "fill";};# Or fetched by scootbg at runtime (cached under ~/.cache/scootbg/):programs.scoot.settings.wallpaper = { image = "https://example.com/hills.jpg"; sha256 = "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"; mode = "fill";};A set without string url and hash fails evaluation. A per-output
output.<name>.image takes the same { url, hash } set. Runtime
downloads need curl on PATH: the flake’s scootbg package carries
it (appended after your own PATH, so yours still wins).