-
-
Notifications
You must be signed in to change notification settings - Fork 786
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Float Pane #5576
base: main
Are you sure you want to change the base?
Float Pane #5576
Conversation
9bd3c95
to
03eabc7
Compare
Nice work! Demo video looks good. |
it would be nice to have a border for this floating pane |
Updated with border. Configs: config.float_pane_padding = {
left = '10%',
right = '10%',
top = '10%',
bottom = '10%',
} config.float_pane_border = {
left_width = '0.5cell',
right_width = '0.5cell',
bottom_height = '0.25cell',
top_height = '0.25cell',
left_color = '#665c54',
right_color = '#665c54',
bottom_color = '#665c54',
top_color = '#665c54',
} |
I think this is ready to be reviewed now. |
Thanks a lot, this is the one feature I've been missing since transition from tmux to wezterm mux 🙏🏼 Tested this and it works really well, just commenting with some small issues I've seen:
A very nice action to have but definitely not required for this to be super useful on its own, is to be able to toggle the floating status of a pane so you can transition a floating pane to a split pane and vice verse. |
@Pajn I think I have the working directory issue fixed now. For the pane selection my intention was to treat the float like a overlay and turn any selection operations into no-ops and prevent the mouse from selecting a pane (I think there were some scenarios that I missed like the selection UI). I pushed an update that I think turn those into nops now. This may not be the right strategy, is there a scenario where you would want to be able to select/interact with the panes underneath the float? I think I have it updated so that closing the pane underneath the float is blocked now. Which I think will prevent the scenario where only the float is showing. I tried out being able to move the float to a split today. It seemed to work, I pushed it to this branch if you want to give it a try. I didn't want to include it in this pull request to keep the scope down. |
Wow! I was just starting to familiarize myself with the code to see if I could help but not at that speed :)
I was mostly just trying to break it to see where the limitations where. The one possible usecase I can see is to move one background pane to another tab/window if you need access to it after realizing the float pane was longer lived than you intended. However I think that's better solved by being able to transition the float pane to a split anyway. And disabling those actions when in a float definitely avoids a whole class of potential problems.
Totes! I was just excited. Thanks a lot for the branch though, will definitely start playing with it. |
i really like the work man, good stuff been wanting this feature, as im coming from zellij that has a really nice implementation of floating panes |
and command palete and keybindings use toggle floating pane instead of having a separate create floating pane command
Quick update on this New stuff.
Items from PR review
I think it will take me a week or 2 more to get this in a state to move out of draft. If anyone has a chance please try the latest and let me know if you find any issues. |
looks great from my perspective! one minor question: is it be possible to pass a command to execute in the pane as an optional parameter? or does it always launch system shell? |
@aleksandersumowski are you thinking of something like being able to run fzf in a floating pane? This is my attempt at being able to run fzf and use the result in the current pane (not sure if the send-text is the best way to do this). local function spawn_new_tab_with_pane_info(window, pane)
local current_pane_id = pane:pane_id()
local command = string.format([[
#!/bin/bash
current_pane_id=%s
selected_commit=$(git log --oneline | fzf | awk '{print $1}')
if [ -n "$selected_commit" ]; then
wezterm cli activate-pane --pane-id "$current_pane_id"
wezterm cli send-text --pane-id "$current_pane_id" -- "$selected_commit"
fi
exec $SHELL
]], current_pane_id)
window:perform_action(
wezterm.action.SpawnCommandInNewFloatingPane {
args = { 'bash', '-c', command },
},
pane
)
end
config.keys = {
{
key = 'y',
mods = 'CTRL|SHIFT',
label = 'floating fzf',
action = wezterm.action_callback(spawn_new_tab_with_pane_info),
},
} |
I hope |
@Yukaii Have you tried something like this?
|
😍😍😍 tbh I've tried compiling your branch and testing it myself but |
@aleksandersumowski just noticed in the screenshot that you were on the main branch from my fork, I think that might be why SpawnCommandInNewFloatingPane isn't working, the floating pane work is on the float-pane branch. |
sure if the this should have a default binding so removing it for now)
@wez quick heads up, this is ready to be reviewed again. (No rush) New stuff.
Items from PR review
Stuff that works with floating panes
Stuff that doesn't work
|
Hi, I wanted to make an attempt at #270
This probably needs quite a bit of iteration (this is my first attempt at rust), but wanted to create the pull request to see if this is something you would be open to adding and to see if I am on the right track.