mirror of
https://github.com/cmderdev/cmder.git
synced 2024-11-13 03:09:10 +08:00
Add initial Windows Terminal support
This commit is contained in:
parent
47258fbd2b
commit
968beb8a27
74
Cmder.bat
74
Cmder.bat
@ -1,20 +1,66 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
SET CMDER_ROOT=%~dp0
|
SET CMDER_ROOT=%~dp0
|
||||||
|
|
||||||
|
set CMDER_TERMINAl=conemu
|
||||||
|
if exist "%CMDER_ROOT%\vendor\windows-terminal\windowsterminal.exe" (
|
||||||
|
SET CMDER_TERMINAL=windows-terminal
|
||||||
|
)
|
||||||
|
|
||||||
|
if NOT "%~1" == "" (
|
||||||
|
SET CMDER_TERMINAL=%~1
|
||||||
|
shift
|
||||||
|
)
|
||||||
|
|
||||||
:: Remove Trailing '\'
|
:: Remove Trailing '\'
|
||||||
@if "%CMDER_ROOT:~-1%" == "\" SET CMDER_ROOT=%CMDER_ROOT:~0,-1%
|
if "%CMDER_ROOT:~-1%" == "\" SET CMDER_ROOT=%CMDER_ROOT:~0,-1%
|
||||||
|
|
||||||
|
if not exist "%CMDER_ROOT%\config" md "%CMDER_ROOT%\config" 2>nul
|
||||||
|
|
||||||
|
call :%CMDER_TERMINAL%
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:conemu
|
||||||
|
if not exist "%CMDER_ROOT%\config\user_ConEmu.xml" (
|
||||||
|
copy "%CMDER_ROOT%\vendor\ConEmu.xml.default" "%CMDER_ROOT%\config\user_ConEmu.xml" 1>nul
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ERROR: CMDER Initialization has Failed
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%~1" (
|
||||||
|
start %cmder_root%\vendor\conemu-maximus5\ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%~1"
|
||||||
|
) else (
|
||||||
|
start %cmder_root%\vendor\conemu-maximus5\ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%CMDER_ROOT%\config\user_ConEmu.xml"
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:windows-terminal
|
||||||
|
if not exist "%CMDER_ROOT%\vendor\windows-terminal\settings" md "%CMDER_ROOT%\vendor\windows-terminal\settings" 2>nul
|
||||||
|
if not exist "%CMDER_ROOT%\vendor\windows-terminal\.portable" echo "This make this installation of Windows Terminal portable" >"%CMDER_ROOT%\vendor\windows-terminal\.portable" 2>nul
|
||||||
|
|
||||||
|
if exist "%CMDER_ROOT%\config\user_windows_terminal_settings.json" (
|
||||||
|
if not exist "%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json" (
|
||||||
|
echo "Copying user Windows Terminal settings to '%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json'..."
|
||||||
|
copy "%CMDER_ROOT%\config\user_windows_terminal_settings.json" "%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json" 1>nul
|
||||||
|
)
|
||||||
|
) else if not exist "%CMDER_ROOT%\config\user_windows_terminal_settings.json" (
|
||||||
|
if not exist "%CMDER_ROOT%\config" mkdir "%CMDER_ROOT%\config" 2>nul
|
||||||
|
echo "Copying default Windows Terminal settings to '%CMDER_ROOT%\config'..."
|
||||||
|
copy "%CMDER_ROOT%\vendor\windows_terminal_default_settings.json" "%CMDER_ROOT%\config\user_windows_terminal_settings.json" 1>nul
|
||||||
|
echo "Copying default Windows Terminal settings to '%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json'..."
|
||||||
|
copy "%CMDER_ROOT%\vendor\windows_terminal_default_settings.json" "%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json" 1>nul
|
||||||
|
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ERROR: CMDER Initialization has Failed
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
) else if exist "%cmder_root%\vendor\windows-terminal\settings\settings.json" (
|
||||||
|
copy "%cmder_root%\vendor\windows-terminal\settings\settings.json" "%CMDER_ROOT%\config\user_windows_terminal_settings.json"
|
||||||
|
)
|
||||||
|
|
||||||
|
start %cmder_root%\vendor\windows-terminal\windowsterminal.exe
|
||||||
|
exit /b
|
||||||
|
|
||||||
if not exist "%CMDER_ROOT%\config\user_ConEmu.xml" (
|
|
||||||
if not exist "%CMDER_ROOT%\config" mkdir "%CMDER_ROOT%\config" 2>nul
|
|
||||||
copy "%CMDER_ROOT%\vendor\ConEmu.xml.default" "%CMDER_ROOT%\config\user_ConEmu.xml" 1>nul
|
|
||||||
if %errorlevel% neq 0 (
|
|
||||||
echo ERROR: CMDER Initialization has Failed
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if exist "%~1" (
|
|
||||||
start %~dp0/vendor/conemu-maximus5/ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%~1"
|
|
||||||
) else (
|
|
||||||
start %~dp0/vendor/conemu-maximus5/ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%CMDER_ROOT%\config\user_ConEmu.xml"
|
|
||||||
)
|
|
||||||
|
@ -117,7 +117,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
wchar_t cpuCfgPath[MAX_PATH] = { 0 };
|
wchar_t cpuCfgPath[MAX_PATH] = { 0 };
|
||||||
wchar_t userCfgPath[MAX_PATH] = { 0 };
|
wchar_t userCfgPath[MAX_PATH] = { 0 };
|
||||||
wchar_t defaultCfgPath[MAX_PATH] = { 0 };
|
wchar_t defaultCfgPath[MAX_PATH] = { 0 };
|
||||||
wchar_t conEmuPath[MAX_PATH] = { 0 };
|
wchar_t terminalPath[MAX_PATH] = { 0 };
|
||||||
wchar_t configDirPath[MAX_PATH] = { 0 };
|
wchar_t configDirPath[MAX_PATH] = { 0 };
|
||||||
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
||||||
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
||||||
@ -128,12 +128,15 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
wchar_t legacyUserAliasesPath[MAX_PATH] = { 0 };
|
wchar_t legacyUserAliasesPath[MAX_PATH] = { 0 };
|
||||||
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
||||||
wchar_t userConEmuCfgPath[MAX_PATH] = { 0 };
|
wchar_t userConEmuCfgPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t windowsTerminalDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t conEmuDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t emulatorPath[MAX_PATH] = { 0 };
|
||||||
|
|
||||||
|
|
||||||
std::wstring cmderStart = path;
|
std::wstring cmderStart = path;
|
||||||
std::wstring cmderTask = taskName;
|
std::wstring cmderTask = taskName;
|
||||||
std::wstring cmderTitle = title;
|
std::wstring cmderTitle = title;
|
||||||
std::wstring cmderConEmuArgs = conemu_args;
|
std::wstring cmderTerminalArgs = conemu_args;
|
||||||
|
|
||||||
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
||||||
userConfigDirPath[cfgRoot.length()] = 0;
|
userConfigDirPath[cfgRoot.length()] = 0;
|
||||||
@ -166,8 +169,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
PathCombine(userProfilePath, configDirPath, L"user_profile.cmd");
|
PathCombine(userProfilePath, configDirPath, L"user_profile.cmd");
|
||||||
|
|
||||||
char *lPr = (char *)malloc(MAX_PATH);
|
char* lPr = (char*)malloc(MAX_PATH);
|
||||||
char *pR = (char *)malloc(MAX_PATH);
|
char* pR = (char*)malloc(MAX_PATH);
|
||||||
size_t i;
|
size_t i;
|
||||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
legacyUserProfilePath, (size_t)MAX_PATH);
|
legacyUserProfilePath, (size_t)MAX_PATH);
|
||||||
@ -184,8 +187,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd");
|
PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd");
|
||||||
|
|
||||||
char *lPr = (char *)malloc(MAX_PATH);
|
char* lPr = (char*)malloc(MAX_PATH);
|
||||||
char *pR = (char *)malloc(MAX_PATH);
|
char* pR = (char*)malloc(MAX_PATH);
|
||||||
size_t i;
|
size_t i;
|
||||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
legacyUserAliasesPath, (size_t)MAX_PATH);
|
legacyUserAliasesPath, (size_t)MAX_PATH);
|
||||||
@ -222,8 +225,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd");
|
PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd");
|
||||||
|
|
||||||
char *lPr = (char *)malloc(MAX_PATH);
|
char* lPr = (char*)malloc(MAX_PATH);
|
||||||
char *pR = (char *)malloc(MAX_PATH);
|
char* pR = (char*)malloc(MAX_PATH);
|
||||||
size_t i;
|
size_t i;
|
||||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
legacyUserProfilePath, (size_t)MAX_PATH);
|
legacyUserProfilePath, (size_t)MAX_PATH);
|
||||||
@ -240,8 +243,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd");
|
PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd");
|
||||||
|
|
||||||
char *lPr = (char *)malloc(MAX_PATH);
|
char* lPr = (char*)malloc(MAX_PATH);
|
||||||
char *pR = (char *)malloc(MAX_PATH);
|
char* pR = (char*)malloc(MAX_PATH);
|
||||||
size_t i;
|
size_t i;
|
||||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
legacyUserAliasesPath, (size_t)MAX_PATH);
|
legacyUserAliasesPath, (size_t)MAX_PATH);
|
||||||
@ -251,27 +254,54 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set path to vendored ConEmu config file
|
PathCombine(windowsTerminalDir, exeDir, L"vendor\\windows-terminal");
|
||||||
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
PathCombine(conEmuDir, exeDir, L"vendor\\conemu-maximus5");
|
||||||
|
|
||||||
// Set path to Cmder default ConEmu config file
|
if (PathFileExists(windowsTerminalDir))
|
||||||
PathCombine(defaultCfgPath, exeDir, L"vendor\\ConEmu.xml.default");
|
{
|
||||||
|
// Set path to vendored ConEmu config file
|
||||||
|
PathCombine(cfgPath, windowsTerminalDir, L"settings\\settings.json");
|
||||||
|
|
||||||
// Check for machine-specific then user config source file.
|
// Set path to Cmder default ConEmu config file
|
||||||
PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
PathCombine(defaultCfgPath, exeDir, L"vendor\\windows_terminal_default_settings.json");
|
||||||
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
|
||||||
|
|
||||||
// Set path to Cmder user ConEmu config file
|
// Check for machine-specific then user config source file.
|
||||||
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(cpuCfgPath, userConfigDirPath, L"windows_terminal_%COMPUTERNAME%_settings.json");
|
||||||
|
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
||||||
|
|
||||||
if ( PathFileExists(cpuCfgPath) || use_user_cfg == false ) // config/ConEmu-%COMPUTERNAME%.xml file exists or /m was specified on command line, use machine specific config.
|
// Set path to Cmder user ConEmu config file
|
||||||
|
PathCombine(userCfgPath, userConfigDirPath, L"user_windows_terminal_settings.json");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Set path to vendored ConEmu config file
|
||||||
|
PathCombine(cfgPath, conEmuDir, L"ConEmu.xml");
|
||||||
|
|
||||||
|
// Set path to Cmder default ConEmu config file
|
||||||
|
PathCombine(defaultCfgPath, exeDir, L"vendor\\ConEmu.xml.default");
|
||||||
|
|
||||||
|
// Check for machine-specific then user config source file.
|
||||||
|
PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
||||||
|
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
||||||
|
|
||||||
|
// Set path to Cmder user ConEmu config file
|
||||||
|
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PathFileExists(cpuCfgPath) || use_user_cfg == false) // config/ConEmu-%COMPUTERNAME%.xml file exists or /m was specified on command line, use machine specific config.
|
||||||
{
|
{
|
||||||
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||||
{
|
{
|
||||||
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml.
|
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
{
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_terminal_%COMPUTERNAME%_settings.json! Access Denied."
|
||||||
|
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_teerminal_%COMPUTERNAME%_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied."
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied."
|
||||||
@ -279,10 +309,19 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // vendor/conemu-maximus5/ConEmu.xml config file does not exist, copy config/ConEmu-%COMPUTERNAME%.xml to vendor/conemu-maximus5/ConEmu.xml file
|
}
|
||||||
|
else // vendor/conemu-maximus5/ConEmu.xml config file does not exist, copy config/ConEmu-%COMPUTERNAME%.xml to vendor/conemu-maximus5/ConEmu.xml file
|
||||||
|
{
|
||||||
|
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
||||||
{
|
{
|
||||||
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
{
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy config/windows_terminal_%COMPUTERNAME%_settings.json file to vendor/windows-terminal/settings/settings.json! Access Denied."
|
||||||
|
: L"Failed to copy config/windows_terminal_%COMPUTERNAME%_settings.json file to vendor/windows-terminal/settings/settings.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
? L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
? L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
@ -291,23 +330,6 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // '/c [path]' was specified, don't copy anything and use existing conemu-%COMPUTERNAME%.xml to start comemu.
|
|
||||||
{
|
|
||||||
if (use_user_cfg == false && PathFileExists(cfgPath) && !PathFileExists(cpuCfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml.
|
|
||||||
{
|
|
||||||
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
|
||||||
{
|
|
||||||
MessageBox(NULL,
|
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
|
||||||
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied."
|
|
||||||
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
|
||||||
ExpandEnvironmentStrings(userConEmuCfgPath, userConEmuCfgPath, sizeof(userConEmuCfgPath) / sizeof(userConEmuCfgPath[0]));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it.
|
else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it.
|
||||||
{
|
{
|
||||||
@ -317,27 +339,46 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
MessageBox(NULL,
|
||||||
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_terminal_settings.json! Access Denied."
|
||||||
exit(1);
|
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_teerminal_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // vendor/conemu-maximus5/ConEmu.xml does not exist, copy config/user-conemu.xml to vendor/conemu-maximus5/ConEmu.xml
|
else // vendor/conemu-maximus5/ConEmu.xml does not exist, copy config/user-conemu.xml to vendor/conemu-maximus5/ConEmu.xml
|
||||||
{
|
{
|
||||||
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
MessageBox(NULL,
|
||||||
? L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
: L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
? L"Failed to copy config/user_windows_terminal_settings.json file to vendor/windows-terminal/settings/settings.json! Access Denied."
|
||||||
exit(1);
|
: L"Failed to copy config/user_windows_terminal_settings.json file to vendor/windows-terminal/settings/settings.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
|
: L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // '/c [path]' was specified, don't copy anything and use existing user_conemu.xml to start comemu.
|
else if (!PathFileExists(windowsTerminalDir)) { // '/c [path]' was specified, don't copy anything and use existing user_conemu.xml to start comemu.
|
||||||
{
|
|
||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -347,21 +388,41 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
MessageBox(NULL,
|
||||||
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settings.json! Access Denied."
|
||||||
exit(1);
|
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else // vendor/ConEmu.xml.default config exists, copy Cmder vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml.
|
else // vendor/ConEmu.xml.default config exists, copy Cmder vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml.
|
||||||
{
|
{
|
||||||
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
MessageBox(NULL,
|
||||||
? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
: L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
? L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to vendor/windows-terminal/settings/settings.json! Access Denied."
|
||||||
exit(1);
|
: L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to vendor/windows-terminal/settings/settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -380,11 +441,21 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
MessageBox(NULL,
|
||||||
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settings_settings.json! Access Denied."
|
||||||
exit(1);
|
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settings_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
@ -393,51 +464,78 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
if ( ! CopyFile(defaultCfgPath, userCfgPath, FALSE))
|
if ( ! CopyFile(defaultCfgPath, userCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
MessageBox(NULL,
|
||||||
? L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml! Access Denied."
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
: L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
? L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to [user specified path]/config/user_windows_terminal_settings.json! Access Denied."
|
||||||
exit(1);
|
: L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to [user specified path]/config/user_windows_terminal_settings.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
SYSTEM_INFO sysInfo;
|
SYSTEM_INFO sysInfo;
|
||||||
GetNativeSystemInfo(&sysInfo);
|
GetNativeSystemInfo(&sysInfo);
|
||||||
if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
{
|
PathCombine(terminalPath, exeDir, L"vendor\\windows-terminal\\WindowsTerminal.exe");
|
||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
PathCombine(terminalPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe");
|
||||||
}
|
}
|
||||||
|
|
||||||
swprintf_s(args, L"%s /Icon \"%s\"", args, icoPath);
|
if (!PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s /Icon \"%s\"", args, icoPath);
|
||||||
|
}
|
||||||
|
|
||||||
if (!streqi(cmderStart.c_str(), L""))
|
if (!streqi(cmderStart.c_str(), L""))
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s /dir \"%s\"", args, cmderStart.c_str());
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s -d \"%s\"", args, cmderStart.c_str());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /dir \"%s\"", args, cmderStart.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_single_mode)
|
if (is_single_mode)
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s /single", args);
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s -w 0 nt", args);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /single", args);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!streqi(cmderTitle.c_str(), L""))
|
if (!streqi(cmderTitle.c_str(), L""))
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s /title \"%s\"", args, cmderTitle.c_str());
|
if (!PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s /title \"%s\"", args, cmderTitle.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfgRoot.length() != 0)
|
if (cfgRoot.length() != 0)
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s -loadcfgfile \"%s\"", args, userConEmuCfgPath);
|
if (!PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s -loadcfgfile \"%s\"", args, userConEmuCfgPath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!streqi(cmderConEmuArgs.c_str(), L""))
|
if (!streqi(cmderTerminalArgs.c_str(), L""))
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s %s", args, cmderConEmuArgs.c_str());
|
swprintf_s(args, L"%s %s", args, cmderTerminalArgs.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// The `/run` arg and its value MUST be the last arg of ConEmu
|
// The `/run` arg and its value MUST be the last arg of ConEmu
|
||||||
@ -445,7 +543,13 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
// > This must be the last used switch (excepting -new_console and -cur_console)
|
// > This must be the last used switch (excepting -new_console and -cur_console)
|
||||||
if (!streqi(cmderTask.c_str(), L""))
|
if (!streqi(cmderTask.c_str(), L""))
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s /run {%s}", args, cmderTask.c_str());
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s -p \"%s\"", args, cmderTask.c_str());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /run {%s}", args, cmderTask.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
||||||
@ -465,8 +569,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
si.dwFlags = STARTF_TITLEISAPPID;
|
si.dwFlags = STARTF_TITLEISAPPID;
|
||||||
#endif
|
#endif
|
||||||
PROCESS_INFORMATION pi;
|
PROCESS_INFORMATION pi;
|
||||||
if (!CreateProcess(conEmuPath, args, NULL, NULL, false, 0, NULL, NULL, &si, &pi)) {
|
if (!CreateProcess(terminalPath, args, NULL, NULL, false, 0, NULL, NULL, &si, &pi)) {
|
||||||
MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK);
|
MessageBox(NULL, _T("Unable to create the terminal process!"), _T("Error"), MB_OK);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -586,7 +690,7 @@ struct cmderOptions
|
|||||||
std::wstring cmderTitle = L"Cmder";
|
std::wstring cmderTitle = L"Cmder";
|
||||||
std::wstring cmderIcon = L"";
|
std::wstring cmderIcon = L"";
|
||||||
std::wstring cmderRegScope = L"USER";
|
std::wstring cmderRegScope = L"USER";
|
||||||
std::wstring cmderConEmuArgs = L"";
|
std::wstring cmderTerminalArgs = L"";
|
||||||
bool cmderSingle = false;
|
bool cmderSingle = false;
|
||||||
bool cmderUserCfg = true;
|
bool cmderUserCfg = true;
|
||||||
bool registerApp = false;
|
bool registerApp = false;
|
||||||
@ -693,7 +797,7 @@ cmderOptions GetOption()
|
|||||||
/* Used for passing arguments to conemu prog */
|
/* Used for passing arguments to conemu prog */
|
||||||
else if (_wcsicmp(L"/x", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/x", szArgList[i]) == 0)
|
||||||
{
|
{
|
||||||
cmderOptions.cmderConEmuArgs = szArgList[i + 1];
|
cmderOptions.cmderTerminalArgs = szArgList[i + 1];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
/* Bare double dash, remaining commandline is for conemu */
|
/* Bare double dash, remaining commandline is for conemu */
|
||||||
@ -703,7 +807,7 @@ cmderOptions GetOption()
|
|||||||
auto doubledash = cmdline.find(L" -- ");
|
auto doubledash = cmdline.find(L" -- ");
|
||||||
if (doubledash != std::string::npos)
|
if (doubledash != std::string::npos)
|
||||||
{
|
{
|
||||||
cmderOptions.cmderConEmuArgs = cmdline.substr(doubledash + 4);
|
cmderOptions.cmderTerminalArgs = cmdline.substr(doubledash + 4);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -779,7 +883,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderTitle, cmderOptions.cmderIcon, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderConEmuArgs);
|
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderTitle, cmderOptions.cmderIcon, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderTerminalArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -55,13 +55,16 @@ Param(
|
|||||||
|
|
||||||
# Using this option will skip all downloads, if you only need to build launcher
|
# Using this option will skip all downloads, if you only need to build launcher
|
||||||
[switch]$noVendor,
|
[switch]$noVendor,
|
||||||
|
|
||||||
|
# Using this option will specify the emulator to use [conemu-maximus5, or windows-terminal]
|
||||||
|
[string]$emulator = 'conemu-maximus5',
|
||||||
|
|
||||||
# Build launcher if you have MSBuild tools installed
|
# Build launcher if you have MSBuild tools installed
|
||||||
[switch]$Compile
|
[switch]$Compile
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get the scripts and cmder root dirs we are building in.
|
# Get the scripts and cmder root dirs we are building in.
|
||||||
$cmder_root = Resolve-Path "$PSScriptRoot\.."
|
$cmder_root = [string](Resolve-Path "$PSScriptRoot\..")
|
||||||
|
|
||||||
# Dot source util functions into this scope
|
# Dot source util functions into this scope
|
||||||
. "$PSScriptRoot\utils.ps1"
|
. "$PSScriptRoot\utils.ps1"
|
||||||
@ -113,6 +116,18 @@ if (-not $noVendor) {
|
|||||||
}
|
}
|
||||||
else { $ConEmuXml = "" }
|
else { $ConEmuXml = "" }
|
||||||
|
|
||||||
|
# Preserve modified (by user) Windows Terminal setting file
|
||||||
|
if ($config -ne "") {
|
||||||
|
$WinTermSettingsJson = Join-Path $saveTo "windows-terminal\settings\settings.json"
|
||||||
|
if (Test-Path $WinTermSettingsJson -pathType leaf) {
|
||||||
|
$WinTermSettingsJsonSave = Join-Path $config "windows_terminal_settings.json"
|
||||||
|
Write-Verbose "Backup '$WinTermSettingsJson' to '$WinTermSettingsJsonSave'"
|
||||||
|
Copy-Item $WinTermSettingsJson $WinTermSettingsJsonSave
|
||||||
|
}
|
||||||
|
else { $WinTermSettingsJson = "" }
|
||||||
|
}
|
||||||
|
else { $WinTermSettingsJson = "" }
|
||||||
|
|
||||||
# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building
|
# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building
|
||||||
foreach ($ssh_agent in $(Get-Process ssh-agent -ErrorAction SilentlyContinue)) {
|
foreach ($ssh_agent in $(Get-Process ssh-agent -ErrorAction SilentlyContinue)) {
|
||||||
if ([string]$($ssh_agent.path) -Match [string]$cmder_root.replace('\', '\\')) {
|
if ([string]$($ssh_agent.path) -Match [string]$cmder_root.replace('\', '\\')) {
|
||||||
@ -122,6 +137,12 @@ if (-not $noVendor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach ($s in $sources) {
|
foreach ($s in $sources) {
|
||||||
|
if ($s.name -eq "conemu-maximus5" -and $emulator -eq "windows-terminal") {
|
||||||
|
return
|
||||||
|
} elseif ($s.name -eq "windows-terminal" -and $emulator -eq "conemu-maximus5") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
Write-Verbose "Getting vendored $($s.name) $($s.version)..."
|
Write-Verbose "Getting vendored $($s.name) $($s.version)..."
|
||||||
|
|
||||||
# We do not care about the extensions/type of archive
|
# We do not care about the extensions/type of archive
|
||||||
@ -146,6 +167,18 @@ if (-not $noVendor) {
|
|||||||
Copy-Item $ConEmuXmlSave $ConEmuXml
|
Copy-Item $ConEmuXmlSave $ConEmuXml
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Restore Windows Terminal user configuration
|
||||||
|
if ($WinTermSettingsJson -ne "") {
|
||||||
|
Write-Verbose "Restore '$WinTermSettingsJsonSave' to '$WinTermSettingsJson'"
|
||||||
|
Copy-Item $WinTermSettingsJsonSave $WinTermSettingsJson
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make Embedded Windows Terminal Portable
|
||||||
|
if ($emulator -eq "windows-terminal") {
|
||||||
|
New-Item -Type Directory -Path (Join-Path $saveTo "/windows-terminal/settings") -ErrorAction SilentlyContinue >$null
|
||||||
|
New-Item -Type leaf -Path (Join-Path $saveTo "/windows-terminal/.portable") -ErrorAction SilentlyContinue >$null
|
||||||
|
}
|
||||||
|
|
||||||
# Put vendor\cmder.sh in /etc/profile.d so it runs when we start bash or mintty
|
# Put vendor\cmder.sh in /etc/profile.d so it runs when we start bash or mintty
|
||||||
if ( (Test-Path $($saveTo + "git-for-windows/etc/profile.d") ) ) {
|
if ( (Test-Path $($saveTo + "git-for-windows/etc/profile.d") ) ) {
|
||||||
Write-Verbose "Adding cmder.sh /etc/profile.d"
|
Write-Verbose "Adding cmder.sh /etc/profile.d"
|
||||||
|
388
vendor/windows_terminal_default_settings.json
vendored
Normal file
388
vendor/windows_terminal_default_settings.json
vendored
Normal file
@ -0,0 +1,388 @@
|
|||||||
|
{
|
||||||
|
"$help": "https://aka.ms/terminal-documentation",
|
||||||
|
"$schema": "https://aka.ms/terminal-profiles-schema",
|
||||||
|
"actions":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"command":
|
||||||
|
{
|
||||||
|
"action": "copy",
|
||||||
|
"singleLine": false
|
||||||
|
},
|
||||||
|
"keys": "ctrl+shift+c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "paste"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "find",
|
||||||
|
"keys": "ctrl+shift+f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "unbound",
|
||||||
|
"keys": "ctrl+v"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "unbound",
|
||||||
|
"keys": "ctrl+c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command":
|
||||||
|
{
|
||||||
|
"action": "splitPane",
|
||||||
|
"split": "auto",
|
||||||
|
"splitMode": "duplicate"
|
||||||
|
},
|
||||||
|
"keys": "alt+shift+d"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"copyFormatting": "none",
|
||||||
|
"copyOnSelect": true,
|
||||||
|
"defaultProfile": "{48946353-ebe8-4571-a591-7d609f31327a}",
|
||||||
|
"newTabMenu":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "remainingProfiles"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"profiles":
|
||||||
|
{
|
||||||
|
"defaults": {},
|
||||||
|
"list":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"colorScheme": "Campbell",
|
||||||
|
"commandline": "cmd /k \"%CMDER_ROOT%\\vendor\\init.bat\" /t",
|
||||||
|
"guid": "{48946353-ebe8-4571-a591-7d609f31327a}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%CMDER_ROOT%\\icons\\cmder.ico",
|
||||||
|
"name": "Cmder",
|
||||||
|
"startingDirectory": "",
|
||||||
|
"tabTitle": "Cmder",
|
||||||
|
"useAtlasEngine": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandline": "%SystemRoot%\\System32\\cmd.exe /k \"%CMDER_ROOT%\\vendor\\init.bat\"",
|
||||||
|
"elevate": true,
|
||||||
|
"guid": "{bdd957d0-c15a-49e6-9816-14b02351a071}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%CMDER_ROOT%\\icons\\cmder_red.ico",
|
||||||
|
"name": "Cmder as Admin",
|
||||||
|
"startingDirectory": "",
|
||||||
|
"tabTitle": "Cmder as Admin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colorScheme": "Campbell",
|
||||||
|
"commandline": "PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command \"Invoke-Expression 'Import-Module ''%CMDER_ROOT%\\vendor.\\profile.ps1'''\"",
|
||||||
|
"guid": "{eb1f6578-ce9d-47a9-a8c7-9b3fdd22302d}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%CMDER_ROOT%\\icons\\cmder_orange.ico",
|
||||||
|
"name": "Cmder - Powershell",
|
||||||
|
"startingDirectory": "",
|
||||||
|
"tabTitle": "Cmder",
|
||||||
|
"useAtlasEngine": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colorScheme": "Campbell",
|
||||||
|
"commandline": "PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command \"Invoke-Expression 'Import-Module ''%CMDER_ROOT%\\vendor.\\profile.ps1'''\"",
|
||||||
|
"elevate": true,
|
||||||
|
"guid": "{c5225c3e-8619-4145-8182-2800814eeb17}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%CMDER_ROOT%\\icons\\cmder_purple.ico",
|
||||||
|
"name": "Cmder - Powershell as Admin",
|
||||||
|
"startingDirectory": "",
|
||||||
|
"tabTitle": "Cmder - PowerShell as Admin",
|
||||||
|
"useAtlasEngine": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandline": "%CMDER_ROOT%\\vendor\\start_git_bash.cmd",
|
||||||
|
"guid": "{c5c298e9-010e-4b8c-bc55-e3df81846b4c}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%CMDER_ROOT%\\icons\\cmder_blue.ico",
|
||||||
|
"name": "Cmder - Bash",
|
||||||
|
"startingDirectory": "",
|
||||||
|
"tabTitle": "Cmder - Bash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandline": "%CMDER_ROOT%\\vendor\\start_git_bash.cmd",
|
||||||
|
"elevate": true,
|
||||||
|
"guid": "{545eb9ed-4c1c-49b3-8cc6-7eb41bd280ff}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%CMDER_ROOT%\\icons\\cmder_yellow.ico",
|
||||||
|
"name": "Cmder - Bash as Admin",
|
||||||
|
"startingDirectory": "",
|
||||||
|
"tabTitle": "Cmder - Bash as Admin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"schemes":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"background": "#0C0C0C",
|
||||||
|
"black": "#0C0C0C",
|
||||||
|
"blue": "#0037DA",
|
||||||
|
"brightBlack": "#767676",
|
||||||
|
"brightBlue": "#3B78FF",
|
||||||
|
"brightCyan": "#61D6D6",
|
||||||
|
"brightGreen": "#16C60C",
|
||||||
|
"brightPurple": "#B4009E",
|
||||||
|
"brightRed": "#E74856",
|
||||||
|
"brightWhite": "#F2F2F2",
|
||||||
|
"brightYellow": "#F9F1A5",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#3A96DD",
|
||||||
|
"foreground": "#CCCCCC",
|
||||||
|
"green": "#13A10E",
|
||||||
|
"name": "Campbell",
|
||||||
|
"purple": "#881798",
|
||||||
|
"red": "#C50F1F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#CCCCCC",
|
||||||
|
"yellow": "#C19C00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#012456",
|
||||||
|
"black": "#0C0C0C",
|
||||||
|
"blue": "#0037DA",
|
||||||
|
"brightBlack": "#767676",
|
||||||
|
"brightBlue": "#3B78FF",
|
||||||
|
"brightCyan": "#61D6D6",
|
||||||
|
"brightGreen": "#16C60C",
|
||||||
|
"brightPurple": "#B4009E",
|
||||||
|
"brightRed": "#E74856",
|
||||||
|
"brightWhite": "#F2F2F2",
|
||||||
|
"brightYellow": "#F9F1A5",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#3A96DD",
|
||||||
|
"foreground": "#CCCCCC",
|
||||||
|
"green": "#13A10E",
|
||||||
|
"name": "Campbell Powershell",
|
||||||
|
"purple": "#881798",
|
||||||
|
"red": "#C50F1F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#CCCCCC",
|
||||||
|
"yellow": "#C19C00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#282C34",
|
||||||
|
"black": "#282C34",
|
||||||
|
"blue": "#61AFEF",
|
||||||
|
"brightBlack": "#5A6374",
|
||||||
|
"brightBlue": "#61AFEF",
|
||||||
|
"brightCyan": "#56B6C2",
|
||||||
|
"brightGreen": "#98C379",
|
||||||
|
"brightPurple": "#C678DD",
|
||||||
|
"brightRed": "#E06C75",
|
||||||
|
"brightWhite": "#DCDFE4",
|
||||||
|
"brightYellow": "#E5C07B",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#56B6C2",
|
||||||
|
"foreground": "#DCDFE4",
|
||||||
|
"green": "#98C379",
|
||||||
|
"name": "One Half Dark",
|
||||||
|
"purple": "#C678DD",
|
||||||
|
"red": "#E06C75",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#DCDFE4",
|
||||||
|
"yellow": "#E5C07B"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FAFAFA",
|
||||||
|
"black": "#383A42",
|
||||||
|
"blue": "#0184BC",
|
||||||
|
"brightBlack": "#4F525D",
|
||||||
|
"brightBlue": "#61AFEF",
|
||||||
|
"brightCyan": "#56B5C1",
|
||||||
|
"brightGreen": "#98C379",
|
||||||
|
"brightPurple": "#C577DD",
|
||||||
|
"brightRed": "#DF6C75",
|
||||||
|
"brightWhite": "#FFFFFF",
|
||||||
|
"brightYellow": "#E4C07A",
|
||||||
|
"cursorColor": "#4F525D",
|
||||||
|
"cyan": "#0997B3",
|
||||||
|
"foreground": "#383A42",
|
||||||
|
"green": "#50A14F",
|
||||||
|
"name": "One Half Light",
|
||||||
|
"purple": "#A626A4",
|
||||||
|
"red": "#E45649",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#FAFAFA",
|
||||||
|
"yellow": "#C18301"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#002B36",
|
||||||
|
"black": "#002B36",
|
||||||
|
"blue": "#268BD2",
|
||||||
|
"brightBlack": "#073642",
|
||||||
|
"brightBlue": "#839496",
|
||||||
|
"brightCyan": "#93A1A1",
|
||||||
|
"brightGreen": "#586E75",
|
||||||
|
"brightPurple": "#6C71C4",
|
||||||
|
"brightRed": "#CB4B16",
|
||||||
|
"brightWhite": "#FDF6E3",
|
||||||
|
"brightYellow": "#657B83",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#2AA198",
|
||||||
|
"foreground": "#839496",
|
||||||
|
"green": "#859900",
|
||||||
|
"name": "Solarized Dark",
|
||||||
|
"purple": "#D33682",
|
||||||
|
"red": "#DC322F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#EEE8D5",
|
||||||
|
"yellow": "#B58900"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FDF6E3",
|
||||||
|
"black": "#002B36",
|
||||||
|
"blue": "#268BD2",
|
||||||
|
"brightBlack": "#073642",
|
||||||
|
"brightBlue": "#839496",
|
||||||
|
"brightCyan": "#93A1A1",
|
||||||
|
"brightGreen": "#586E75",
|
||||||
|
"brightPurple": "#6C71C4",
|
||||||
|
"brightRed": "#CB4B16",
|
||||||
|
"brightWhite": "#FDF6E3",
|
||||||
|
"brightYellow": "#657B83",
|
||||||
|
"cursorColor": "#002B36",
|
||||||
|
"cyan": "#2AA198",
|
||||||
|
"foreground": "#657B83",
|
||||||
|
"green": "#859900",
|
||||||
|
"name": "Solarized Light",
|
||||||
|
"purple": "#D33682",
|
||||||
|
"red": "#DC322F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#EEE8D5",
|
||||||
|
"yellow": "#B58900"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#000000",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#3465A4",
|
||||||
|
"brightBlack": "#555753",
|
||||||
|
"brightBlue": "#729FCF",
|
||||||
|
"brightCyan": "#34E2E2",
|
||||||
|
"brightGreen": "#8AE234",
|
||||||
|
"brightPurple": "#AD7FA8",
|
||||||
|
"brightRed": "#EF2929",
|
||||||
|
"brightWhite": "#EEEEEC",
|
||||||
|
"brightYellow": "#FCE94F",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#06989A",
|
||||||
|
"foreground": "#D3D7CF",
|
||||||
|
"green": "#4E9A06",
|
||||||
|
"name": "Tango Dark",
|
||||||
|
"purple": "#75507B",
|
||||||
|
"red": "#CC0000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#D3D7CF",
|
||||||
|
"yellow": "#C4A000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FFFFFF",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#3465A4",
|
||||||
|
"brightBlack": "#555753",
|
||||||
|
"brightBlue": "#729FCF",
|
||||||
|
"brightCyan": "#34E2E2",
|
||||||
|
"brightGreen": "#8AE234",
|
||||||
|
"brightPurple": "#AD7FA8",
|
||||||
|
"brightRed": "#EF2929",
|
||||||
|
"brightWhite": "#EEEEEC",
|
||||||
|
"brightYellow": "#FCE94F",
|
||||||
|
"cursorColor": "#000000",
|
||||||
|
"cyan": "#06989A",
|
||||||
|
"foreground": "#555753",
|
||||||
|
"green": "#4E9A06",
|
||||||
|
"name": "Tango Light",
|
||||||
|
"purple": "#75507B",
|
||||||
|
"red": "#CC0000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#D3D7CF",
|
||||||
|
"yellow": "#C4A000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#000000",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#000080",
|
||||||
|
"brightBlack": "#808080",
|
||||||
|
"brightBlue": "#0000FF",
|
||||||
|
"brightCyan": "#00FFFF",
|
||||||
|
"brightGreen": "#00FF00",
|
||||||
|
"brightPurple": "#FF00FF",
|
||||||
|
"brightRed": "#FF0000",
|
||||||
|
"brightWhite": "#FFFFFF",
|
||||||
|
"brightYellow": "#FFFF00",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#008080",
|
||||||
|
"foreground": "#C0C0C0",
|
||||||
|
"green": "#008000",
|
||||||
|
"name": "Vintage",
|
||||||
|
"purple": "#800080",
|
||||||
|
"red": "#800000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#C0C0C0",
|
||||||
|
"yellow": "#808000"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"themes":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "legacyDark",
|
||||||
|
"tab":
|
||||||
|
{
|
||||||
|
"background": null,
|
||||||
|
"showCloseButton": "always",
|
||||||
|
"unfocusedBackground": null
|
||||||
|
},
|
||||||
|
"window":
|
||||||
|
{
|
||||||
|
"applicationTheme": "dark",
|
||||||
|
"useMica": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "legacyLight",
|
||||||
|
"tab":
|
||||||
|
{
|
||||||
|
"background": null,
|
||||||
|
"showCloseButton": "always",
|
||||||
|
"unfocusedBackground": null
|
||||||
|
},
|
||||||
|
"window":
|
||||||
|
{
|
||||||
|
"applicationTheme": "light",
|
||||||
|
"useMica": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "legacySystem",
|
||||||
|
"tab":
|
||||||
|
{
|
||||||
|
"background": null,
|
||||||
|
"showCloseButton": "always",
|
||||||
|
"unfocusedBackground": null
|
||||||
|
},
|
||||||
|
"window":
|
||||||
|
{
|
||||||
|
"applicationTheme": "system",
|
||||||
|
"useMica": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"useAcrylicInTabRow": true,
|
||||||
|
"wordDelimiters": " ()\"',;<>!@#$%^&*|+=[]{}~?\u2502"
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user