Skip to content
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

"Open Windows Terminal here" does not continue to work for subsequent tabs, panes #8933

Closed
TigerBeanst opened this issue Jan 29, 2021 · 14 comments · Fixed by #10546
Closed
Labels
Area-ShellExtension For issues related to the explorer right-click context menu Help Wanted We encourage anyone to jump in on these. Issue-Bug It either shouldn't be doing this or needs an investigation. Priority-2 A description (P2) Product-Terminal The new Windows Terminal. Resolution-Fix-Committed Fix is checked in, but it might be 3-4 weeks until a release.
Milestone

Comments

@TigerBeanst
Copy link

Environment

Windows build number: 10.0.19042.0
Windows Terminal version (if applicable): 1.5.10271.0

Any other software?

Steps to reproduce

  1. Click "Open Windows Terminal here" in directory
  2. Click WSL or CMD (anything that different than the default tab)
    image

Else, I have been add startingDirectory in setting:

"profiles":
    {
        "defaults":
        {
            "startingDirectory" : "."
            // Put settings here that you want to apply to all profiles.
        },

Expected behavior

For example, I click "Open Windows Terminal here" in D:\Games.
What I think it should be:
image
image
image

Actual behavior

My default tab is Powershell7, it works well:
image
But if I switch to WSL or CMD:
image
image

the path goes to C:\Windows\system32.

Other

I now use this for me:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Open in Windows Terminal here"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt_32.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\hjthjthjt\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

It works as my expect. But the new feature "Open Windows Terminal here" does not.

@ghost ghost added Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting Needs-Tag-Fix Doesn't match tag requirements labels Jan 29, 2021
@zadjii-msft
Copy link
Member

Hmm. Looks like we're only applying the "open in Windows Terminal" to the first tab that's created. So wt.exe's CWD is still c:\windows\system32, meaning subsequent tabs opened with . as a startingDirectory would use c:\windows\system32.

I think there's another issue floating around here tracking something similar, but I for the life of me can't find it.

For this one, maybe we shouldn't ONLY be doing wt -d <the path from explorer> - maybe there's some way to set the CWD for the child process itself? I'd assume that wt would inherit it from it's parent explorer.exe, but maybe we're doing something wrong here.

@zadjii-msft zadjii-msft added Area-ShellExtension For issues related to the explorer right-click context menu Issue-Bug It either shouldn't be doing this or needs an investigation. Priority-2 A description (P2) Product-Terminal The new Windows Terminal. labels Jan 29, 2021
@ghost ghost removed the Needs-Tag-Fix Doesn't match tag requirements label Jan 29, 2021
@zadjii-msft zadjii-msft added this to the Terminal v2.0 milestone Jan 29, 2021
@zadjii-msft zadjii-msft added the Help Wanted We encourage anyone to jump in on these. label Jan 29, 2021
@KalleOlaviNiemitalo
Copy link

What is the expected behaviour if "Open Windows Terminal here" in some future version opens a new tab in an existing Windows Terminal window (related to #4472 but not necessarily using wt.exe), and the user then uses the profile menu to start another session with "startingDirectory": "." in that window?

I think Windows Terminal should resolve "startingDirectory": "." from the current directory of the active session of the window whose profile menu the user used. The current directory of each session could be changed with OSC 7 (#3158) and would default to the starting directory of the session, such as the directory received from "Open Windows Terminal here".

@zadjii-msft zadjii-msft removed the Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting label Feb 26, 2021
@patricknelson
Copy link

patricknelson commented Mar 19, 2021

My workaround to address this (to ensure that new panes/tabs open with the same starting directory) is to do the following:

  1. Use BroJenuel/Explorer-Context-Menu-Integration-for-windows-terminal for right-click integration instead.
  2. Remove the duplicate entry using the registry fix documented here: How to remove "Open in Windows Terminal" from context menu? #7008 (comment)

Demo:

2021-03-18_18-34-07

@zadjii-msft zadjii-msft changed the title The new feature "Open Windows Terminal here" does not support other tabs "Open Windows Terminal here" does not continue to work for subsequent tabs, panes Mar 19, 2021
@Dominiquini
Copy link

The last version of Windows Terminal (1.7.1033.0) have the option "Use parent process directory", that I should do what I wanted, but it is not working! Only the first profile open in the directory I choose. But when I create a new profile in a new tab, it opens in the "C:\Windows\system32" directory.

@rafrafek
Copy link

rafrafek commented Apr 29, 2021

For me it is not only not working, but also breaks Git Bash:

  • history of commands is not saved,
  • settings like .inputrc are not loaded,
  • some programs like ssh are totally broken.

This is my output from Windows Terminal, from Git Bash, when opened via "Open in Windows Terminal" context menu, then new tab:

$ ssh foo
vdollar_percent_expand: unknown key %H
percent_dollar_expand: failed

When Windows Terminal is opened via Menu Start everything works perfectly.

@zadjii-msft
Copy link
Member

@rafrafek That's certainly unexpected, but very weird that your git bash profile would behave so differently if the starting directory was C:\windows\system32 instead of whatever directory you clicked on. Could you share the contents of your git bash profile in settings.json?

@rafrafek
Copy link

@zadjii-msft Yes, sure. It looks like this:

...
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "profiles": 
    {
        "defaults": 
        {
            "useAcrylic": false
        },
        "list": 
        [
            {
                "commandline": "%PROGRAMFILES%/Git/usr/bin/bash.exe -i -l",
                "guid": "{00000000-0000-0000-ba54-000000000002}",
                "icon": "%PROGRAMFILES%/Git/mingw64/share/git/git-for-windows.ico",
                "name": "Bash",
                "startingDirectory": "%USERPROFILE%"
            },
            {
                "commandline": "powershell.exe",
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "hidden": false,
                "name": "Windows PowerShell"
            },
...

@KalleOlaviNiemitalo
Copy link

vdollar_percent_expand: unknown key %H is a message from OpenSSH.

I wonder if the %H is part of something like %HOMEDRIVE% in the value of an environment variable. @rafrafek, which version of Windows Terminal are you using? Windows Terminal Preview suffers from #9741, which is known to leave % signs in the value of the PSModulePath environment variable and might possibly also affect some environment variable that ssh examines.

@rafrafek
Copy link

@KalleOlaviNiemitalo It is 1.7.1033.0 installed from GitHub releases.

@KalleOlaviNiemitalo
Copy link

KalleOlaviNiemitalo commented Apr 29, 2021

@rafrafek, in the Git Bash session in which ssh does not work, does the value of the HOME environment variable contain any percent signs? If it does, that would explain why Bash does not find .inputrc.

@rafrafek
Copy link

@KalleOlaviNiemitalo Yes!
Bad session opened via "Open in Windows Terminal":

$ echo $HOME
/c/Users/xxx/%HOMEDRIVE%%HOMEPATH%

Good session opened via Menu Start:

$ echo $HOME
/c/Users/xxx

Where xxx is my login.

@KalleOlaviNiemitalo
Copy link

OK, I can reproduce on Windows 10 build 19042.928 if I define "HOME" = REG_EXPAND_SZ "%HOMEDRIVE%%HOMEPATH%" as a user environment variable like so:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Environment]
"HOME"=hex(2):25,00,48,00,4f,00,4d,00,45,00,44,00,52,00,49,00,56,00,45,00,25,\
  00,25,00,48,00,4f,00,4d,00,45,00,50,00,41,00,54,00,48,00,25,00,00,00
  • Start Windows Terminal 1.7.1033.0 from the Start menu. It opens a PowerShell session. $env:HOME has the expanded value. Open a Command Prompt session in another tab. set HOME displays the expanded value.
  • Start Windows Terminal 1.7.1033.0 from the shell extension (window background). It opens a PowerShell session. $env:HOME is literally %HOMEDRIVE%%HOMEPATH% unexpanded. Open a Command Prompt session in another tab. set HOME displays HOME=%HOMEDRIVE%%HOMEPATH%.

The incorrect value of the environment variable thus shows up both in the original tab and the subsequently opened tab. Also, this happens even if settings.json does not specify "startingDirectory" at all. Therefore, I think the problem with ssh is distinct from this #8933.

Process Monitor shows that the wt.exe process gets the unexpanded HOME=%HOMEDRIVE%%HOMEPATH% in its environment block when the shell extension starts it. The shell extension is loaded to a DllHost.exe process, which likewise gets the unexpanded HOME=%HOMEDRIVE%%HOMEPATH% when svchost.exe starts it.

According to #9741 (comment), Windows loads HOMEDRIVE and HOMEPATH only after it has already loaded REG_EXPAND_SZ values from "HKU\<SID string>\Environment". However, the "Environment Variables" dialog box of Windows displays the expanded value if I configure HOME as %HOMEDRIVE%%HOMEPATH%. Because of that, I think this is a bug in Windows, although Windows Terminal could be changed to work around it.

@ghost ghost added the In-PR This issue has a related PR label Jul 2, 2021
@ghost ghost closed this as completed in #10546 Jul 9, 2021
@ghost ghost added Resolution-Fix-Committed Fix is checked in, but it might be 3-4 weeks until a release. and removed In-PR This issue has a related PR labels Jul 9, 2021
ghost pushed a commit that referenced this issue Jul 9, 2021
Sets the working directory of the terminal when invoked from the shell extension. This ensures that new tabs opened with a starting directory of `.` open in the directory that the terminal was invoked from.

Closes #8933

## Validation Steps Performed
Manually tested - default PowerShell profile set to use home directory, Windows PowerShell profile set to use current directory. Launched via the shell extension and the default profile opened in the explorer directory, as did a new Windows PowerShell tab.
DHowett pushed a commit that referenced this issue Jul 12, 2021
Sets the working directory of the terminal when invoked from the shell extension. This ensures that new tabs opened with a starting directory of `.` open in the directory that the terminal was invoked from.

Closes #8933

## Validation Steps Performed
Manually tested - default PowerShell profile set to use home directory, Windows PowerShell profile set to use current directory. Launched via the shell extension and the default profile opened in the explorer directory, as did a new Windows PowerShell tab.

(cherry picked from commit f152573)
@ghost
Copy link

ghost commented Jul 14, 2021

🎉This issue was addressed in #10546, which has now been successfully released as Windows Terminal v1.9.1942.0.:tada:

Handy links:

@ghost
Copy link

ghost commented Jul 14, 2021

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

Handy links:

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-ShellExtension For issues related to the explorer right-click context menu Help Wanted We encourage anyone to jump in on these. Issue-Bug It either shouldn't be doing this or needs an investigation. Priority-2 A description (P2) Product-Terminal The new Windows Terminal. Resolution-Fix-Committed Fix is checked in, but it might be 3-4 weeks until a release.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants