Skip to content

FF00-vwm 0.2.0-alpha.1 — Static images and lifecycle hardening

Pre-release
Pre-release

Choose a tag to compare

@crimsonvariable crimsonvariable released this 04 Aug 02:32

FF00-vwm 0.2.0-alpha.1 — Static images and lifecycle hardening

This second public alpha expands FF00-vwm from a video wallpaper manager into a
per-monitor video and static-image wallpaper manager for Linux X11. It also
hardens controller concurrency, renderer ownership, and recovery before adding
more source types.

Included

  • Independent local video or static-image assignment for each connected XRandR
    output.
  • PNG, JPEG, WebP, and SVG decoding.
  • Fit, Fill, Stretch, Center, and static-image Tile display modes.
  • Presentation-only 0, 90, 180, and 270 degree image rotation.
  • Horizontal and vertical image mirroring without changing the source file.
  • Separate GTK4 video and image file selection through the system chooser.
  • Configuration schema 2 with automatic in-memory migration of schema-1 video
    assignments.
  • A non-blocking controller lock covering reconciliation, renderer replacement,
    and atomic runtime-state writes.
  • Private, versioned renderer ownership markers that recover an owned renderer
    missing from the runtime index without broad process matching.
  • mpv isolation through --no-config, preserving the user's normal mpv setup
    while keeping wallpaper behavior explicit.

Supported environment

  • Linux x86_64
  • X11/Xorg sessions only
  • i3 as the primary tested window manager
  • mpv 0.36.0 or newer for video playback in non-Nix installations
  • Host-provided GTK4 and GdkPixbuf loaders for native installations

The Nix package pins mpv, GTK4, GdkPixbuf, librsvg, and the WebP loader. Its
explicit loader cache was tested in both the release build and a live packaged
WebP renderer. The native archive remains a Debian 12 x86_64 compatibility
build and does not bundle those system libraries.

Validation

  • Rust formatting and Clippy with warnings denied.
  • 30 active automated tests, with one process-helper entry intentionally
    ignored outside its controlled subprocess invocation.
  • RustSec advisory audit and Cargo source/license policy checks.
  • Full locked Nix release derivation and package tests.
  • Live X11 rendering for PNG, WebP, SVG, and video.
  • Live packaged WebP decoding through the installed Nix wrapper.
  • Real controller-lock contention, missing-index recovery, exact mpv argument,
    and targeted-stop checks.

Known limitations

  • This is alpha software and interfaces may still change before 1.0.
  • Wayland is not supported.
  • Animated images, network sources, playlists, catalogs, and downloaders are not
    supported.
  • Audio is disabled for wallpaper video playback.
  • Output hot-plug requires a manual refresh.
  • Per-output Apply currently reapplies all saved connected assignments.
  • Login restoration depends on an XDG-compatible X11 session startup.
  • Output identity follows XRandR names, which can change with hardware or dock
    topology.
  • The broader multi-monitor race, forced-termination, and login-restoration
    release matrix remains ongoing; this release should be treated as an alpha.

Safety and privacy

FF00-vwm has no telemetry and performs no automatic downloads. Media paths are
passed as direct process arguments or decoded locally; they are never inserted
into shell commands. Static-image transformations are applied in memory and do
not rewrite source files. Before signalling a renderer process group, the
controller validates its protocol, user, executable, PID, process group, kernel
start time, and exact private marker.

Verification

Download SHA256SUMS beside the native archive and run:

sha256sum --check SHA256SUMS

The source tag for this release is v0.2.0-alpha.1. Forgejo remains the
canonical development repository; GitHub is the public release mirror.