Compare commits

...

4 Commits

Author SHA1 Message Date
Mike Griese
a0faa008b2 Merge remote-tracking branch 'origin/main' into dev/migrie/b/15487-push-cwd 2023-09-27 13:55:50 -05:00
Mike Griese
aa8ae71691 Merge remote-tracking branch 'origin/main' into dev/migrie/b/15487-push-cwd 2023-09-26 09:13:58 -05:00
Mike Griese
73b37d80ac pass throught the vCWD idk 2023-09-25 16:26:41 -05:00
Mike Griese
dc1de987d3 this works? 2023-09-25 13:38:29 -05:00
4 changed files with 30 additions and 0 deletions

View File

@@ -1232,6 +1232,7 @@ namespace winrt::TerminalApp::implementation
false,
L"",
nullptr,
L"",
settings.InitialRows(),
settings.InitialCols(),
winrt::guid(),
@@ -1274,6 +1275,7 @@ namespace winrt::TerminalApp::implementation
settings.ReloadEnvironmentVariables(),
_WindowProperties.VirtualEnvVars(),
environment,
_WindowProperties.VirtualWorkingDirectory(),
settings.InitialRows(),
settings.InitialCols(),
winrt::guid(),

View File

@@ -162,6 +162,28 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
auto [newCommandLine, newStartingDirectory] = Utils::MangleStartingDirectoryForWSL(cmdline, _startingDirectory);
const auto startingDirectory = newStartingDirectory.size() > 0 ? newStartingDirectory.c_str() : nullptr;
// GH #15487: Circa Terminal 1.18, we no longer leave the Terminal in
// the CWD it was started in. However, users might pass a path to an exe
// that's relative to the directory they're launching the terminal from.
// To handle this, we're going to temporarily try to switch the Terminal
// into the CWD that they requested, CreateProcess, then pop back out to
// where we started.
auto originalCwd{ wil::GetCurrentDirectoryW<std::wstring>() };
auto restoreCwd = wil::scope_exit([&originalCwd]() {
// ignore errors, we'll just power on through. We'd rather do
// something rather than fail silently if the directory doesn't
// actually exist.
LOG_IF_WIN32_BOOL_FALSE(SetCurrentDirectory(originalCwd.c_str()));
});
if (!_virtualWorkingDirectory.empty())
{
LOG_IF_WIN32_BOOL_FALSE(SetCurrentDirectory(_virtualWorkingDirectory.c_str()));
}
else
{
restoreCwd.reset();
}
RETURN_IF_WIN32_BOOL_FALSE(CreateProcessW(
nullptr,
newCommandLine.data(),
@@ -230,6 +252,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
bool reloadEnvironmentVariables,
const winrt::hstring& initialEnvironment,
const Windows::Foundation::Collections::IMapView<hstring, hstring>& environmentOverrides,
const winrt::hstring& virtualWorkingDirectory,
uint32_t rows,
uint32_t columns,
const winrt::guid& guid,
@@ -239,6 +262,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
vs.Insert(L"commandline", Windows::Foundation::PropertyValue::CreateString(cmdline));
vs.Insert(L"startingDirectory", Windows::Foundation::PropertyValue::CreateString(startingDirectory));
vs.Insert(L"virtualWorkingDirectory", Windows::Foundation::PropertyValue::CreateString(virtualWorkingDirectory));
vs.Insert(L"startingTitle", Windows::Foundation::PropertyValue::CreateString(startingTitle));
vs.Insert(L"reloadEnvironmentVariables", Windows::Foundation::PropertyValue::CreateBoolean(reloadEnvironmentVariables));
vs.Insert(L"initialRows", Windows::Foundation::PropertyValue::CreateUInt32(rows));
@@ -280,6 +304,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
_commandline = unbox_prop_or<winrt::hstring>(settings, L"commandline", _commandline);
_startingDirectory = unbox_prop_or<winrt::hstring>(settings, L"startingDirectory", _startingDirectory);
_startingTitle = unbox_prop_or<winrt::hstring>(settings, L"startingTitle", _startingTitle);
_virtualWorkingDirectory = unbox_prop_or<winrt::hstring>(settings, L"virtualWorkingDirectory", _virtualWorkingDirectory);
_rows = unbox_prop_or<uint32_t>(settings, L"initialRows", _rows);
_cols = unbox_prop_or<uint32_t>(settings, L"initialCols", _cols);
_guid = unbox_prop_or<winrt::guid>(settings, L"guid", _guid);

View File

@@ -53,6 +53,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
bool reloadEnvironmentVariables,
const winrt::hstring& initialEnvironment,
const Windows::Foundation::Collections::IMapView<hstring, hstring>& environmentOverrides,
const winrt::hstring& virtualWorkingDirectory,
uint32_t rows,
uint32_t columns,
const winrt::guid& guid,
@@ -77,6 +78,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
hstring _startingTitle{};
bool _initialVisibility{ true };
Windows::Foundation::Collections::ValueSet _environment{ nullptr };
hstring _virtualWorkingDirectory{};
guid _guid{}; // A unique session identifier for connected client
hstring _clientName{}; // The name of the process hosted by this ConPTY connection (as of launch).

View File

@@ -31,6 +31,7 @@ namespace Microsoft.Terminal.TerminalConnection
Boolean reloadEnvironmentVariables,
String initialEnvironment,
IMapView<String, String> environmentOverrides,
String virtualWorkingDirectory,
UInt32 rows,
UInt32 columns,
Guid guid,