diff --git a/src/cascadia/TerminalConnection/ConptyConnection.cpp b/src/cascadia/TerminalConnection/ConptyConnection.cpp index ba14ee618cd..67608116020 100644 --- a/src/cascadia/TerminalConnection/ConptyConnection.cpp +++ b/src/cascadia/TerminalConnection/ConptyConnection.cpp @@ -420,6 +420,29 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation } _LaunchAttachedClient(); + +if (!_commandline.empty()) +{ + std::wstring cmd = _commandline; + std::transform(cmd.begin(), cmd.end(), cmd.begin(), ::towlower); + + if (cmd.find(L"wsl") != std::wstring::npos) + { + TraceLoggingWrite( + g_hTerminalConnectionProvider, + "ConPtyDetectedWSLCommand", + TraceLoggingDescription("Detected WSL command execution inside ConPTY connection"), + TraceLoggingWideString(cmd.c_str(), "CommandLine", "The command line that triggered WSL")); + + _isWSLConnection = true; + + if (_environmentChangedEventHandlers) + { + _environmentChangedEventHandlers(*this, L"WSL"); + } + } +} + } // But if it was an inbound handoff... attempt to synchronize the size of it with what our connection // window is expecting it to be on the first layout. diff --git a/src/cascadia/TerminalConnection/ConptyConnection.h b/src/cascadia/TerminalConnection/ConptyConnection.h index f54c92e5470..573686401ad 100644 --- a/src/cascadia/TerminalConnection/ConptyConnection.h +++ b/src/cascadia/TerminalConnection/ConptyConnection.h @@ -101,6 +101,9 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation WORD showWindow{}; } _startupInfo{}; + + bool _isWSLConnection{ false }; + winrt::event> _environmentChangedEventHandlers; DWORD _OutputThread(); };