I recently forked this repository here. Thank you for coming up with this program, I find it very useful and seamless.
One issue I was running into was increased latency (seemed like a whole second) between me pressing my navigation binding and seeing the focused vim or Niri pane/window change.
I assumed it was due to it being a shell script and calling out to other programs, though I did not really look into it that much. I have quite a bit of experience in Rust so I decided to through an LLM at an initial rewrite. I then changed more parts of it so now it runs completely on it's own with no runtime dependencies on jq, timeout, or the Niri binary. It calls Niri directly via the niri-ipc crate.
The plugin source has not changed at all, but in my fork, the shell script is completely replaced by a Rust application. The initial version only used std rust, but I added a few crate dependencies to help make the code readable.
The result, is the latency increase (I assume there still is one) between pressing the binding and seeing a window/pane change is not noticeably more than the default Niri behaviour, it feels instant.
I also added some nix-specific things for packaging and CI.
I did this for my own needs but am interested in contributing back if you have any interest in taking a change this dramatic.
I recently forked this repository here. Thank you for coming up with this program, I find it very useful and seamless.
One issue I was running into was increased latency (seemed like a whole second) between me pressing my navigation binding and seeing the focused vim or Niri pane/window change.
I assumed it was due to it being a shell script and calling out to other programs, though I did not really look into it that much. I have quite a bit of experience in Rust so I decided to through an LLM at an initial rewrite. I then changed more parts of it so now it runs completely on it's own with no runtime dependencies on jq, timeout, or the Niri binary. It calls Niri directly via the niri-ipc crate.
The plugin source has not changed at all, but in my fork, the shell script is completely replaced by a Rust application. The initial version only used std rust, but I added a few crate dependencies to help make the code readable.
The result, is the latency increase (I assume there still is one) between pressing the binding and seeing a window/pane change is not noticeably more than the default Niri behaviour, it feels instant.
I also added some nix-specific things for packaging and CI.
I did this for my own needs but am interested in contributing back if you have any interest in taking a change this dramatic.