davatorium / rofi

Rofi: A window switcher, application launcher and dmenu replacement
https://davatorium.github.io/rofi/
Other
13.04k stars 609 forks source link

[REQUEST] New keybind to keep rofi open after selection #1595

Open vedxyz opened 2 years ago

vedxyz commented 2 years ago

Before opening a feature request

What is the user problem or growth opportunity you want to see solved?

Launching multiple entries back to back is cumbersome. This feature would greatly speed up certain workflows where multiple selections are made regularly.

How do you know that this problem exists today? Why is this important?

I regularly need to launch multiple entries and it's slow to keep reopening the rofi window for each one. Keeping the workflow within rofi instead of using external scripts is preferable to me.

Who will benefit from it?

Anyone with a workflow that would benefit from selecting multiple entries in one rofi window.

Rofi version (rofi -v)

1.7.3

Configuration

N/A

Additional information

Relevant discussion:

My idea is to add a keybind (kb-accept-persist?) that would behave identically to the existing accept keybind but would keep rofi open instead of quitting on selection. This should hopefully be a simple and non-intrusive feature as no one should be getting affected so long as the keybind isn't used.

I'm inexperienced with the rofi codebase but I would be willing to work on this myself too. https://github.com/davatorium/rofi/blob/eff3b86c944c192c036ecebcec504f9f30d24fdf/source/view.c#L1455-L1469 At a quick glance, I found the code above where I think I would just need to add another trigger that doesn't set state->quit = true on selection. I would appreciate any other pointers to look out for, should I try implementing this.

Also, would this keybind need to be limited to certain modi's? Say, for the window modi, would not quitting rofi upon selection be a problem as rofi is supposed to give focus to another window? In that case, it might make sense to make this specific to modi's like run, drun, ssh, no?

erik-overdahl commented 2 years ago

You can try writing a script as documented in the rofi-script manpage or using the rofi-blocks plugin, although it would require re-implementing the mode you are using.

DaveDavenport commented 2 years ago

This should be implemented in the mode itself, see also the implementation of the 'close-on-delete' option in the window browser, the return value of the result function should be changed.