Skip to content

Layer 1 Scroll actions, panned-view fix and live config switching (0.91.6-0.91.16) - #22

Merged
Fi3w0 merged 11 commits into
masterfrom
feat/config-file-and-ocean-offset
Oct 30, 2026
Merged

Fi3w0 merged 11 commits into
masterfrom
feat/config-file-and-ocean-offset

Conversation

@Fi3w0

@Fi3w0 Fi3w0 commented Oct 30, 2026

Copy link
Copy Markdown
Owner

Layer 1 Scroll/WM actions from the TODO, a Scroll view fix, and runtime config switching. Versions 0.91.6 to 0.91.16, one milestone per commit, each with CHANGELOG/DEV_CHANGELOG/DOCUMENTATION in sync and the four gates passing (749 tests at the end: 717 + 23 + 9).

Fixes

  • Close returns to the previously used window (0.91.6). repair_keyboard_focus prefers the most recent visible focus_history window on the output before the old topmost-Space fallback (niri's activate-previous-column). With focus_follows_mouse, the window under the pointer still wins first, unchanged. Real-protocol regression test that fails on the old code.
  • A panned Scroll strip keeps its view (0.91.14). Engine migration and every config reload called reveal_scroll_window(focus), snapping a deliberate pan back to the focused column; the offset itself survived Ocean. Both now use reveal_scroll_window_unless_panned. Focus-driven reveals are unchanged.
  • load-config-file keeps symlinks (0.91.16). Canonicalizing a symlinked config.wave made its relative includes resolve next to the link target. Paths are now made absolute without resolving symlinks.

New actions

Action Notes
reload-config, tidectl reload Same path as the file watcher
load-config-file:<path>, tidectl load-config <file> Session-only switch; a missing or broken file keeps the current config; the watcher follows the new file
move-column-to-index:<n> 1-based, clamps to the last column, 0 rejected
center-visible-columns Centers the span of fully visible columns
set-window-height:<v>, reset-window-height, switch-preset-height(-back), scroll.preset_heights Height is the window's weight share of its column (5-95 %)
move-column-to-workspace:<n|name> Restores stacking, order, weights and head width that Layouts::remove forgets
focus-floating, focus-tiling, switch-focus-between-floating-and-tiling Most recently used window of that kind on the focused output
toggle-keyboard-shortcuts-inhibit The only bind that still fires while an inhibitor is active (new Smallvil::keybind_table)
toggle-touchpad libinput send-events mode, reapplied on hotplug and reload, resets on restart

CONFIG_PATH_OVERRIDE is now an RwLock<Option<PathBuf>> instead of a once-set OnceLock; startup -c behaves as before.

Verification

  • Native (installed 0.91.13 to 0.91.16, two monitors, Scroll): close-returns-focus, reload, heights and presets, column index and center-visible, column move to another workspace, floating/tiling focus, panned view through reload and Scroll -> Ocean -> Scroll, load-config with a copy, a broken file and the real symlinked config. tidectl doctor 11/11 after each step.
  • Nested: the same actions with real kitty clients, plus the panned-view and symlink regressions reproduced before and verified after.

Not verified

  • toggle-touchpad and toggle-keyboard-shortcuts-inhibit: parse tests only (no touchpad or inhibiting client on the test machine).
  • center-visible-columns: the action ran natively, but the centred position was not checked visually.
  • Not added: toggle-window-urgent (focus clears urgency, so it cannot persist on the focused window).

@Fi3w0
Fi3w0 merged commit 71f9810 into master Oct 30, 2026
1 check passed
@Fi3w0
Fi3w0 deleted the feat/config-file-and-ocean-offset branch October 30, 2026 00:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant