aboutsummaryrefslogtreecommitdiffstats
path: root/sl0pstatus/src/widgets/mod.rs (follow)
Commit message (Collapse)AuthorAge
* sl0p(bar): a new-tab button, and margins that match the pane gapuser2026-08-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First pass of the status bar overhaul, in the zjstatus fork plus the layout that configures it. margin_left / margin_right: the bar is a full-width pane while every pane above it is inset by the pane gap, so its ends stuck out past every frame on screen. The margins are applied by rendering into an inset viewport (inset_state), which is the same thing click positions are translated by -- so what is drawn and what is clickable come from one definition. That is the split button's lesson applied before shipping rather than after. {new_tab}: a clickable button that opens a tab and focuses it, with no name and no cwd, i.e. exactly what the `n` binding in TAB mode does. Clicking a tab already switches to it and double-clicking renames it; making one was the hole in the strip. Rendering and hit-testing are the same measured string here, so the button covers exactly the columns it draws. Both keys are inert when unset, so an unmodified zjstatus config renders identically. packaging/checks/status-bar-live.py reads the bar off a real session and asserts it spans exactly the columns the pane frames span, clicks the + and expects one more tab, then clicks beside it and expects none. Confirmed by setting the margins to 0 and watching the span assertion fail: (0, 99) against the frames' (2, 97). The check counts painted cells rather than ink, because a bar segment begins with a padding space inside its coloured pill -- strip the colour and the left edge reads one column off, which is half the margin being measured.
* vendor(sl0pstatus): import zjstatus v0.24.0 treeuser2026-08-12
Squashed import of dj95/zjstatus at 74f36b4 ("chore: bump version to v0.24.0"), the merge-base our fork was developed against. Found by the phase-3 smoke test: installing the tarball into a throwaway HOME and actually starting a session logged failed to load plugin from disk: '~/.config/zellij/plugins/zjstatus.wasm' (No such file or directory) config/layouts/default.kdl replaces zellij's stock tab-bar + status-bar with a zjstatus bar, so the status bar is load-bearing for the default layout -- and the .wasm in the live config dir turned out to be a *custom build*, not the upstream release. Dropping it as "a third-party blob no longer referenced" (see the config snapshot commit) was wrong: it was referenced from the layouts, which that commit did not check.