You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fixed
Launch no longer resets compositor idle timers; pointer parking is now
opt-in via CURSOR_WARP (default false) (#4). The post-launch warp
injects virtual-pointer motion, and niri routes wlr-virtual-pointer (wlrctl)
and uinput (ydotool) events into process_input_event, which reports every
pointer event to ext-idle-notify-v1 as activity (niri src/input/mod.rs;
window opening and focus changes never notify activity, so issue #4's
focus/enter hypothesis was wrong). Each launch therefore reset every idle
daemon timer: the flash-and-die from #4 was this reset arriving as resumeCommand, and idle stages after the screensaver (lock, screen off)
fired one screensaver-threshold late. With the warp off, launch generates no
activity and downstream stages fire on schedule. Hide the pointer with
niri's cursor { hide-after-inactive-ms 500 } instead; set CURSOR_WARP="true" to restore parking. New plugin setting cursorWarp
(default off) writes the key. The launch/kill debounce stays as a guard for
warp-enabled setups.
Added
Mirror mode: automatic canvas fit on mismatched-resolution monitors
(#24). Mirror now sizes the shared tte canvas to the smallest output's
cell grid by default — no config needed — so mismatched-resolution monitors
render byte-identical out of the box (previously you had to set MIRROR_CANVAS_COLS/ROWS by hand; #14). The launcher can't measure cell
metrics without a terminal, so each mirror surface records its cell grid to a .cell-metrics cache the launcher reads next launch; the first run on a new
monitor or font layout calibrates and applies the fit from the next launch.
Matched-resolution setups are unchanged (the fit equals the full-screen
canvas, so it's skipped), and an explicit MIRROR_CANVAS_COLS/ROWS still
wins. When the auto-fit box is smaller than the shared logo it's used anyway
with a warning, since it must fit the smallest output.
Mirror mode: pixel-identical rendering across mismatched-resolution
monitors (#14). Two new config keys, MIRROR_CANVAS_COLS and MIRROR_CANVAS_ROWS, lock tte's canvas to a fixed cell box in mirror mode
(--canvas-width/--canvas-height, centered via the --anchor-canvas c
already passed at every call site). Because the animated region is then the
same cell grid on every output, tte's deterministic RNG renders
byte-identical animations even when the monitors differ in resolution —
previously mirror only matched on equal-resolution outputs and otherwise
played the same effect with a different layout. Manual override of the
automatic fit above: both must be positive integers to take effect; a blank,
garbage, or half-set value defers to the auto-fit. Like MIRROR_INTERVAL,
it's an advanced config-file knob and is not surfaced in the Noctalia plugin
UI.
Fixed
Driver dropped options passed after the command word.main() stopped
parsing at the first positional, so niri-screensaver run --seed N --logo X
— exactly how the launcher spawns each surface — silently discarded --seed
and --logo. Mirror mode therefore never received its shared seed and fell
back to independent per-monitor RNG on real hardware (it had only been
mock-tested). Options are now parsed in any position; the command is the first
positional and an effect name the second. This is what makes mirror's shared
seed/logo (and the #24 canvas flags) actually reach tte.