[Feature]: Support multiple local terminal shells/profiles on Windows
Feature description
I first posted this a couple days ago in the Discussions area to see if I'm just overlooking something, but haven't got a reply yet so just taking a chance and posting it here as a feature request.
I'm loving Wave but am somewhat of a terminal power user who has setup multiple terminal profiles (shells) in Windows Terminal and uses them heavily. My understanding is that, by default, Wave on Windows will always launch Windows Terminal's default shell. If my default shell is setup as Powershell, then that's the only local (non-WSL or non-SSH) terminal I get. If I want a Command Prompt using CMD.EXE then I have to first change my default Windows Terminal profile to that.
Unless I'm overlooking it, I'd like to see support for multiple Windows Terminal profiles and/or multiple term:localshellpath options, just like you can have multiple WSL or SSH connections.
I understand that I can set term:localshellpath to override the default behavior and run that particular shell, but again that's forcing a single terminal type. I'd have to change that again and relaunch Wave to access another terminal type, or else run it from the default shell which results in a nested shell. That just seems inefficient.
This is very limiting. Depending on what I'm doing, I might want to run Powershell, CMD, bash, or something else as my local terminal shell, and sometimes multiple at once. The window management features of Wave would make running multiple shells really convenient.
Implementation Suggestion
At a bare minimum, support for multiple term:localshellpath configurations should do it. These could be presented in the Terminal menu just as multiple WSL & SSH connections are presented.
Better yet, load the existing Windows Terminal profiles from Terminal's config and automatically add them as different local terminal types. That way I'm only managing terminal profiles in one place (Terminal) and they're automatically available in Wave.
Anything else?
No response
Ok, so feature request still stands, but I see now I was barking up the wrong tree about Windows Terminal. Turns out I was operating on bad info. Somewhere I read that Wave was using Windows Terminal for it's local Windows shell.
After looking around in the code to see how the local shell is being launched, it looks like Wave is executing local shells directly, with built-in support for running bash, zsh, fish, or pwsh. And its default Windows local shell is pwsh (PowerShell). Anything else requires an override with term:localshellpath but again that just gives you a single shell option.
Ideally you could have multiple local shell profiles, like Windows Terminal allows.
I really like Wave and it has a lot of potential, but this shortcoming will likely have me sticking with Windows Terminal more often just for this flexibility.
I am not following what you want here. Do you want to have the ability to change shells in Wave or do you want to be able to run different terminals? If you mean that you want to run different startup shells you could just make widgets in widget.json for that. Then you could add as many as you like.
{
"bash-shell": {
"icon": "terminal",
"label": "Bash",
"color": "#4eaa25",
"blockdef": {
"meta": {
"view": "term",
"controller": "shell",
"term:localshellpath": "/bin/bash",
"term:localshellopts": "-i -l"
}
}
},
"zsh-shell": {
"icon": "angle-right",
"label": "Zsh",
"color": "#ff6b35",
"blockdef": {
"meta": {
"view": "term",
"controller": "shell",
"term:localshellpath": "/bin/zsh",
"term:localshellopts": "-i -l"
}
}
}
}
If you want to change shell interactively you could just do so in the command prompt like one normally does.
Hope this helps.
You're able to use which-ever shell you want with Wave, what's the deal?