-
Notifications
You must be signed in to change notification settings - Fork 8.4k
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
Ctrl+D to close a tab when profile has exited with error #12849
Comments
I mean, you could always just bind Ctrl+D to Other discussions: |
Yeah, nope, I don't want to close the pane with Ctrl+D.. I only want ctrl+D to close come into effect when the error code is shown after the process has exited.. And there isn't any context/process for WT to pass keypresses into.. For eg, I logout from WSL bash using ctrl+D, and the exit code shows in Windows Terminal, I guess the context is handed over to WT completely now.. So, in this moment, when the exit code is being shown, a ctrl+D ought to close the pane/tab/profile.. |
It's not a bad idea. Just need a simple way of expressing the action in json. We don't really have "conditional" keybindings right now, so it's not possible to say something like {
"command": { "action": "closePane" },
"keys": "ctrl+d",
"when": { "connection.state": "closed" }
}, Without that, we'd need some other way to express this conditional keybinding. |
You know, I actually think this should be feature of ConptyConnection or somewhere around that layer. ^D is a common way to signal a shell to exit, and this is such a narrow case where having it rebindable just doesn't matter to me. I like that we're thinking about making it extensible/contextual (you know how much I love my hobby horse, contextual key bindings!), but... in this case maybe the easy way is easier. |
I'm cool with that. Shouldn't be too hard to add. |
FYI: I'm starting to work on this feature for the MSFT hackathon. https://hackbox.microsoft.com/project/5766 |
Oooohh! Thank you! 😃 |
…terminal (#14060) When a terminal process exits (successful or not) and the profile isn't set to automatically close the pane, a new message is displayed: You can now close this terminal with ^D or Enter to restart. Ctrl+D then is able to close the pane and Enter restarts it. I originally tried to do this at the ConptyConnection layer by changing the connection state from Failed to Closed, but then that didn't work for the case where the process exited successfully but the profile isn't set to exit automatically. So, I added an event to ControlCore/TermControl that Pane watches. ControlCore watches to see if the input is Ctrl+D (0x4) and if the connection is closed or failed, and then raises the event so that Pane can close itself. As it turned out, I think this is the better place to have the logic to watch for the Ctrl+D key. Doing it at the ConptyConnection layer meant I had to parse out the key from the escaped text passed to ConptyConnection::WriteInput. ## Validation Steps Performed Tried adding lots of panes and then killing the processes outside of Terminal. Each showed the new message and I could close them with Ctrl+D or restart them with Enter. Also set a profile to never close automatically to make sure Ctrl+D would work when a process exits successfully. Closes #12849 Closes #11570 Closes #4379
🎉This issue was addressed in #14060, which has now been successfully released as Handy links: |
Description of the new feature/enhancement
Currently, in a Terminal tab, when a process doesn't exit cleanly, i.e., exits with an error code, the terminal profile can either be set to close anyway, or exit if only there isn't any error [error code 0]..
I would like to see a behaviour wherein the error code is shown, and later on a press of Ctrl+D, the tab closes..
This, would be similar to the behaviour in some Linux terminal apps, wherein a terminal exits to the exit code on Ctrl+D, and on another press of Ctrl+D, it exits.
This implementation would make the process of closing WSL profiles quicker and easier.. wherein users logout with Ctrl+D, and then can close the tab on another Ctrl+D, if the process exited with an error code.
Proposed technical implementation details (optional)
-Enhance the existing "Close only when process exits successfully" behaviour,
-or add a new behaviour option,
-or better yet, add a toggle for closing anyways upon Ctrl+D, which will enable it to work for the "Never close automatically" behaviour too! So that a user who might want to see the exit code 0, can please himself and then close the tab..😂
The text was updated successfully, but these errors were encountered: