aboutsummaryrefslogtreecommitdiffstats
path: root/src/widgets/command.rs (unfollow)
Commit message (Collapse)Author
2026-08-08sl0p: double-click a tab to rename itHEADmainuser
Double-clicking a tab in the bar switches to it and drops into RenameTab mode, matching the double-click-to-rename we added for panes in the sl0ppij zellij fork. Enter commits, Esc cancels, exactly as the rename keybind does. Widgets are held behind &self and cannot keep click state, so double-click detection lives centrally in ModuleConfig::handle_mouse_action and is passed to Widget::process_click as a flag. THE TRAP, and the reason this is not a two-line change: handle_mouse_action also runs for Mouse::Release. A single click therefore arrives as LeftClick followed by Release at the SAME position. Counting releases would make every single click register as a double click, and resetting on release would mean a real double click never registers at all, since the release falls between the two clicks. Only LeftClick participates; Release neither counts nor resets. A completed pair is consumed, so a triple click does not fire a second rename. switch_tab_to() is called before switch_to_input_mode(), because RenameTab acts on the ACTIVE tab - renaming without switching first would rename the wrong one. Threshold is 400ms, the same one zellij uses for text-selection double clicks, so the bar feels consistent with the panes. Detection is extracted as register_click_for_double_click() so it can be tested without constructing a ModuleConfig. Tests cover: a real double click, the release-in-between regression, too-slow clicks, clicks at different positions, and the triple-click case. Upstream tests still pass: 25 total (20 upstream + 5 new). Note: this repo's .cargo/config.toml targets wasm32-wasip1 and runs tests under wasmtime, which is not installed here. Tests are run with `cargo test --target x86_64-unknown-linux-gnu` instead.
2026-07-15fix(command): unit testsDaniel Jankowski
2026-07-08feat(command): add {focused_pane_cwd} to run commands in focused cwd (#273)Dave Willett
* feat(command): add {focused_pane_cwd} to run commands in the focused pane's directory Command widgets configured with command_<name>_cwd "{focused_pane_cwd}" now execute in the current working directory of the focused terminal pane, following it as the user changes directories. This relies on zellij's CwdChanged event and get_pane_cwd API. The focused terminal pane of the active tab is tracked via PaneUpdate (seeding the cwd on focus change) and updated on CwdChanged. Affected command results are invalidated so they re-run, and stale results from a previous cwd are discarded to avoid showing the wrong directory. Closes #92 * fix(command): release focused cwd command locks Focused-cwd commands can be invalidated while their first run is still in flight. If that result is later discarded as stale, no command result is stored but the per-command lock remains, preventing future reruns. Release the command lock when invalidating focused-cwd commands so the branch badge can recover on subsequent renders or cwd updates. Add a regression test for rerunning a command with no stored result after its lock is released.
2025-09-07feat(command): hide on empty stdoutDaniel Jankowski
2025-06-09fix(command): handle raw formatting correctlyDaniel Jankowski
2025-06-09chore: remove test codeDaniel Jankowski
2025-06-09chore(deps): update to rust 1.87.0Daniel Jankowski
2024-07-15feat: add color aliasesDaniel Jankowski
closes #75
2024-06-20feat: multiple formats for command widgetDaniel Jankowski
fixes #69
2024-06-02feat: implement click action for command widgetDaniel Jankowski
2024-05-08chore: add tests for run_command_if_neededDaniel Jankowski
2024-05-08feat: run command once on interval 0Daniel Jankowski
addresses #52
2024-05-08feat: make env & cwd configurable for command widgetDaniel Jankowski
addresses #52
2024-04-16feat: remote control zjstatus with pipes (#48)Daniel Jankowski
* chore: update to latest version of zellij * fix: deprecated functions in chrono * chore: update nix deps * chore: remove deprecated chrono functions * feat: add refresh via pipes with line protocol * fix: handle multiple lines in pipe * fix(clippy): char instead of str * feat: add notification widget * chore: update nix flake * chore: update cargo deps * chore: update cargo deps * chore: update nix flake * chore: clean up imports for tracing * chore: update nix flake * chore: update cargo deps * chore: update nix flake * chore: update cargo deps * chore: remove pinning of chrono Since chrono-tz now fixed the deprecations from chrono we can finally remove the pinning. * chore: update nix flake * chore: update cargo deps
2024-03-13feat(dev): add tracing featureDaniel Jankowski
2024-03-01feat(ci): add linting workflowDaniel Jankowski
2023-12-26feat: implement cache for dynamic command renderingDaniel Jankowski
2023-12-25feat: implement render modes for command widgetDaniel Jankowski
resolves #25
2023-12-25feat: don't call format_string if the command_xxx_format doesn't contains (#28)benzwt
style syntax. This will let the external command to take the responsibly for the output of the content. For example, this feature let conky output its result along with the raw color codes.
2023-12-22feat: add bench for command widgetDaniel Jankowski
2023-12-17chore: ref config instead of copyingDaniel Jankowski
2023-12-17chore: move from to_string to to_ownedDaniel Jankowski
2023-12-17feat: further perf + mem optimization of widgetsDaniel Jankowski
2023-12-17feat: perf + mem optimization of renderingDaniel Jankowski
2023-12-17feat: refactor to lib and add benchesDaniel Jankowski
2023-11-22fix: handle groups when running commandsDaniel Jankowski
Instead of naively splitting at spaces, zjstatus now respects groups with " and ' to enable using more complex arguments, e.g. bash -c "pwd | base64". Resolves #22
2023-11-07feat: add widget for running arbitrary commands (#16)Daniel Jankowski
* chore: update zellij-tile to 0.39.0 with git version * chore: update flake deps * feat: rework render + add stub command widget * feat: implement command handling * chore: refactoring command widget * chore: add command description to README * chore: remove debugging output * fix: recreate lock file after interval Due to a bug when attaching sessions, the lock file needs to be recreated for another try to run the command, when permissions were granted * fix: pause on detach and without permissions * chore: clean up previous unneeded changes * chore: clean up imports * chore: fix clippy issues * chore: remove debug output * fix: strip newline only when it exists * feat: update to zellij-tile 0.39.0