terminal icon indicating copy to clipboard operation
terminal copied to clipboard

Ctrl+D to close a tab when profile has exited with error

Open NewtonChutney opened this issue 3 years ago • 6 comments
trafficstars

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..😂

NewtonChutney avatar Apr 07 '22 09:04 NewtonChutney

I mean, you could always just bind Ctrl+D to closePane if you really wanted to always close it on Ctrl+D. That seems a little aggressive (esp. for things where you might actually want to press Ctrl+D, like in emacs or something).

Other discussions:

  • #11570
  • #4379
  • #3726

zadjii-msft avatar Apr 07 '22 10:04 zadjii-msft

Yeah, nope, I don't want to close the pane with Ctrl+D.. I'd like to wait on the exit status and then when that's displayed.. A simple repeat of ctrl+D ought to close the pane..

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..

NewtonChutney avatar Apr 07 '22 11:04 NewtonChutney

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.

zadjii-msft avatar Apr 08 '22 10:04 zadjii-msft

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.

DHowett avatar Apr 08 '22 23:04 DHowett

I'm cool with that. Shouldn't be too hard to add.

zadjii-msft avatar Apr 09 '22 19:04 zadjii-msft

FYI: I'm starting to work on this feature for the MSFT hackathon. https://hackbox.microsoft.com/project/5766

sotteson1 avatar Sep 21 '22 21:09 sotteson1

FYI: I'm starting to work on this feature for the MSFT hackathon. https://hackbox.microsoft.com/project/5766

Oooohh! Thank you! 😃

NewtonChutney avatar Sep 27 '22 03:09 NewtonChutney

:tada:This issue was addressed in #14060, which has now been successfully released as Windows Terminal Preview v1.17.1023.:tada:

Handy links:

ghost avatar Jan 24 '23 18:01 ghost