terminal: Opening Windows Terminal in current directory from right-click folder context menu (the `ubuntu.exe` bug)

Description of the new feature/enhancement

I couldn’t find a way to open up wt.exe in a linux profile (e.g. Ubuntu) via right-click in the context menu that pops up in explorer by setting the current working directory to whatever I was browsing before.

To rephrase: I added some HKCR\Directory\Background\shell\wt\command key with wt.exe -d "%V" so that I can Shift+RightClick in a folder in explorer.exe and have a Open in Windows Terminal with Linux item in the context menu. Windows Terminal opens but the starting directory, no matter what I set the profile startingDirectory field in the JSON to, is always set to my home directory. It would be nice if wt.exe -d "C:\\" or whatever actually opened, for the linux profile, in /mnt/c as starting directory.

About this issue

  • Original URL
  • State: open
  • Created 2 years ago
  • Reactions: 3
  • Comments: 28 (7 by maintainers)

Most upvoted comments

Is your profile using wsl.exe -d Ubuntu or Ubuntu.exe?

The latter will not respect the starting directory, and always opens in $HOME

I had the same problem with Ubuntu-22.04 installed via Microsoft Store. The terminal always started in /home/<wsl-user>, no matter the current directory where context menu was invoked (on right click). Adding "commandline": "wsl.exe -d Ubuntu-22.04 /bin/bash" to terminal profile fixed the issue. image

Is your profile using wsl.exe -d Ubuntu or Ubuntu.exe?

The latter will not respect the starting directory, and always opens in $HOME

WORKS!!!

Is your profile using wsl.exe -d Ubuntu or Ubuntu.exe? The latter will not respect the starting directory, and always opens in $HOME

WORKS!!!

sir can you help me out , what i need to change here , please sir thankyou

“list”: [ { “commandline”: “%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe”, “guid”: “{61c54bbd-c2c6-5271-96e7-009a87ff44bf}”, “hidden”: false, “name”: “Windows PowerShell” }, { “commandline”: “%SystemRoot%\System32\cmd.exe”, “guid”: “{0caa0dad-35be-5f56-a8ff-afceeeaa6101}”, “hidden”: false, “name”: “Command Prompt” }, { “guid”: “{574e775e-4f2a-5b96-ac1e-a2962a402336}”, “hidden”: false, “name”: “PowerShell”, “source”: “Windows.Terminal.PowershellCore” }, { “guid”: “{b453ae62-4e3d-5e58-b989-0a998ec441b8}”, “hidden”: false, “name”: “Azure Cloud Shell”, “source”: “Windows.Terminal.Azure” }, { “commandline”: “wsl.exe -d Ubuntu-22.04 /bin/bash”, “guid”: “{51855cb2-8cce-5362-8f54-464b92b32386}”, “hidden”: false, “name”: “Ubuntu”, “source”: “CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc” }, { “guid”: “{2c4de342-38b7-51cf-b940-2309a097f518}”, “hidden”: false, “name”: “Ubuntu”, “source”: “Windows.Terminal.Wsl”, “startingDirectory”: null } ]

Check if you really have sat up right distro name:

Try to run from CMD or PS:

wsl -l -v

Then open terminal settings (json file). Search for your profile and change “commandline” value to this:

"commandline": "C:\\windows\\System32\\wsl.exe -d Ubuntu-22.04",

or

"commandline": "wsl.exe -d Ubuntu-22.04",

Thanks for this! Managed to get it working by adding the commandLine to it. However, now when opening it normally, it will always open default to /mnt/c/WINDOWS/System32. Is there a way to keep opening in current directory context menu, while also having it open in the default /home directory when opening terminal on it’s own?

I found a workaround to make this work: this opens up the shit+right-click context menu directory in Windows Terminal in the default profile (which I have set to Canonical’s own profile).

image

Ah, even WSL 1 doesn’t automatically map network shares.

The only thing that still doesn’t work with this setup is opening terminal within a network share. It ends up landing in $HOME in this case. Still have to look around issues here to see if it’s reported already.

WSL does not automatically map network shares. It cannot be launched in any directory that is not represented or representable in the Linux filesystem. You would need to mount them explicitly in /etc/fstab, and even then it may not be able to figure it out.

This would make an excellent feature request for the WSL repo 😄

Workaround - add the following in .bashrc inside WSL:

# Change starting directory for the default system directory
if [ "$PWD" = "/mnt/c/WINDOWS/system32" ]; then
  cd ~
fi

Thank you! Why didn’t I think of this?

Interesting - canonical is shipping their own profile, but not one layered with the existing profile. Curious…

Did you ever figure out why we have two? Which one should we use?

Workaround - add the following in .bashrc inside WSL:

# Change starting directory for the default system directory
if [ "$PWD" = "/mnt/c/WINDOWS/system32" ]; then
  cd ~
fi

Came here to report that using ubuntu.exe DOES work with the run command proceeding, which starts the default shell in the current directory (where invoked). So, for my Windows Terminal profile, I have the following in the Command Line setting:

ubuntu.exe run

I would like to see the default change to use this setting value.

Source

Is your profile using wsl.exe -d Ubuntu or Ubuntu.exe? The latter will not respect the starting directory, and always opens in $HOME

WORKS!!!

sir can you help me out , what i need to change here , please sir thankyou “list”: [ { “commandline”: “%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe”, “guid”: “{61c54bbd-c2c6-5271-96e7-009a87ff44bf}”, “hidden”: false, “name”: “Windows PowerShell” }, { “commandline”: “%SystemRoot%\System32\cmd.exe”, “guid”: “{0caa0dad-35be-5f56-a8ff-afceeeaa6101}”, “hidden”: false, “name”: “Command Prompt” }, { “guid”: “{574e775e-4f2a-5b96-ac1e-a2962a402336}”, “hidden”: false, “name”: “PowerShell”, “source”: “Windows.Terminal.PowershellCore” }, { “guid”: “{b453ae62-4e3d-5e58-b989-0a998ec441b8}”, “hidden”: false, “name”: “Azure Cloud Shell”, “source”: “Windows.Terminal.Azure” }, { “commandline”: “wsl.exe -d Ubuntu-22.04 /bin/bash”, “guid”: “{51855cb2-8cce-5362-8f54-464b92b32386}”, “hidden”: false, “name”: “Ubuntu”, “source”: “CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc” }, { “guid”: “{2c4de342-38b7-51cf-b940-2309a097f518}”, “hidden”: false, “name”: “Ubuntu”, “source”: “Windows.Terminal.Wsl”, “startingDirectory”: null } ]

Check if you really have sat up right distro name: Try to run from CMD or PS:

wsl -l -v

Then open terminal settings (json file). Search for your profile and change “commandline” value to this:

"commandline": "C:\\windows\\System32\\wsl.exe -d Ubuntu-22.04",

or

"commandline": "wsl.exe -d Ubuntu-22.04",

i just cant thankyou enough this worked like a charm…thankyou once again just one more thing if u can help sir …some icon error

image

You can pick icon from the internet, by setting Icon value to:

https://assets.ubuntu.com/v1/49a1a858-favicon-32x32.png

Or download and save it on your computer, then just set correct path to the icon.

For example I use one of local app icons (Linux icon):

ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png

The latter will not respect the starting directory, and always opens in $HOME

That’s exactly it. There’s definitely and issue with the Ubuntu profiles that Canonical is shipping. Sorry about that! I’m reaching out to them to see what we can do here.

            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": true,
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl",
                "startingDirectory": "%USERPROFILE%"
            },
			// ...
            {
                "guid": "{51855cb2-8cce-5362-8f54-464b92b32386}",
                "hidden": false,
                "name": "Ubuntu",
                "source": "CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc",
                "startingDirectory": "%USERPROFILE%"
            }

Interesting - canonical is shipping their own profile, but not one layered with the existing profile. Curious…