mirror of
https://github.com/cmderdev/cmder.git
synced 2025-11-09 21:59:08 +08:00
Compare commits
211 Commits
copilot/fi
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
480b638e0e | ||
|
|
7f0cfac498 | ||
|
|
7bb7678521 | ||
|
|
dc3b142b32 | ||
|
|
105ff0158b | ||
|
|
9c3bbe9b24 | ||
|
|
5536ea2088 | ||
|
|
f67e5704ed | ||
|
|
be44bac956 | ||
|
|
4fb6bed907 | ||
|
|
d001d9113b | ||
|
|
f4e68b0388 | ||
|
|
9030e7a25e | ||
|
|
a824b721cb | ||
|
|
1b03e29fa3 | ||
|
|
153f7310a1 | ||
|
|
e2fcb1ceda | ||
|
|
3172771f15 | ||
|
|
842393aea0 | ||
|
|
ef46d6465d | ||
|
|
eabadf96dc | ||
|
|
7b248bc9a3 | ||
|
|
2ce0146d6e | ||
|
|
5dfa14ccce | ||
|
|
4d259ba84c | ||
|
|
bbd7507b4e | ||
|
|
b9246177c0 | ||
|
|
a571eedab6 | ||
|
|
a8d897f633 | ||
|
|
d900f6a630 | ||
|
|
304b8c7a05 | ||
|
|
96f0bc9c6e | ||
|
|
f91d0bd5ba | ||
|
|
081e818465 | ||
|
|
b0ab14d29f | ||
|
|
bf7d5166b4 | ||
|
|
3ca3b9f033 | ||
|
|
36670ea0dd | ||
|
|
09ab2f25d8 | ||
|
|
85c0824553 | ||
|
|
a0a5b2ceab | ||
|
|
71b648f065 | ||
|
|
f6bf29dff6 | ||
|
|
d4433f8917 | ||
|
|
74b3f18c53 | ||
|
|
b522c136ad | ||
|
|
76711b43b4 | ||
|
|
375f63ac7e | ||
|
|
278694285c | ||
|
|
f9a4b0d9fc | ||
|
|
2f148fb36a | ||
|
|
4886f612ea | ||
|
|
d45651f805 | ||
|
|
66747a1126 | ||
|
|
b1b9bd22b5 | ||
|
|
e2784bca6a | ||
|
|
e52906ac9b | ||
|
|
623bd52b7c | ||
|
|
cf97d7d4ec | ||
|
|
bb14aeace5 | ||
|
|
76c5b9e116 | ||
|
|
aa156a2901 | ||
|
|
df42ff2d8c | ||
|
|
2868f9ee92 | ||
|
|
8b004be391 | ||
|
|
e3fc1a122d | ||
|
|
a44b30c3eb | ||
|
|
6d82cf897b | ||
|
|
7ac805cda5 | ||
|
|
c1bbc462f3 | ||
|
|
15d56185b7 | ||
|
|
8683dad111 | ||
|
|
d349f57e78 | ||
|
|
b412036262 | ||
|
|
06349694f0 | ||
|
|
e0aa20a080 | ||
|
|
b00dce8ba8 | ||
|
|
0c2e5ce1f2 | ||
|
|
bd3f1326f2 | ||
|
|
6cf4a42469 | ||
|
|
980083fb8c | ||
|
|
a1a6a02b04 | ||
|
|
74d7dd211f | ||
|
|
05f616fd76 | ||
|
|
9b5be7bd53 | ||
|
|
36ea61930f | ||
|
|
8ea276d9bd | ||
|
|
ebce8479ef | ||
|
|
6c95424124 | ||
|
|
b140db4617 | ||
|
|
5d0699a0ae | ||
|
|
d15e7ac69f | ||
|
|
cc40343157 | ||
|
|
940cadc526 | ||
|
|
9b466e3963 | ||
|
|
4740b836f3 | ||
|
|
fbd4c0422c | ||
|
|
ffa37d4d5c | ||
|
|
f4f6255c1a | ||
|
|
82ab068f12 | ||
|
|
e84f2ff365 | ||
|
|
339e6b40fd | ||
|
|
2e945fb02b | ||
|
|
e457afa8d1 | ||
|
|
f38e0b3e03 | ||
|
|
167f57bc97 | ||
|
|
9120d92318 | ||
|
|
9463d4ebc4 | ||
|
|
c5946422e7 | ||
|
|
e850f8241d | ||
|
|
db3889d5e5 | ||
|
|
881938ed18 | ||
|
|
546d921e58 | ||
|
|
92c662de2f | ||
|
|
aac7cfc47a | ||
|
|
d68c5b4487 | ||
|
|
5814792bd6 | ||
|
|
1ed3a36812 | ||
|
|
c5579d2cab | ||
|
|
131949bc77 | ||
|
|
6e213115fe | ||
|
|
28e9018ce0 | ||
|
|
38a91ded02 | ||
|
|
47292038ef | ||
|
|
d8238b0230 | ||
|
|
0a691cb7ee | ||
|
|
7a385ebf75 | ||
|
|
0f6c91d03a | ||
|
|
2beb27d490 | ||
|
|
a7f19f56e8 | ||
|
|
3ff9737076 | ||
|
|
467d564a7b | ||
|
|
9ce6911b49 | ||
|
|
e2303b11c0 | ||
|
|
5c101a0306 | ||
|
|
3c2a25af9f | ||
|
|
99b4e66c47 | ||
|
|
67b62784c8 | ||
|
|
016846d5cf | ||
|
|
30718ab32b | ||
|
|
26e684fb38 | ||
|
|
08fd69bdef | ||
|
|
f8aa7feb1f | ||
|
|
f0c18f1fc6 | ||
|
|
e01a553ca5 | ||
|
|
8025b5baa2 | ||
|
|
9a4041941e | ||
|
|
86091b74e9 | ||
|
|
f69e6226e5 | ||
|
|
01c41a9268 | ||
|
|
2ab6bcd72c | ||
|
|
678b482269 | ||
|
|
9c834b60a3 | ||
|
|
90d86a7e5e | ||
|
|
43a5e7e0b1 | ||
|
|
ddad83c70f | ||
|
|
01da2fe638 | ||
|
|
58db4e3419 | ||
|
|
3cc22ca764 | ||
|
|
3671a6e13c | ||
|
|
ad21915919 | ||
|
|
ab10e83d95 | ||
|
|
cb543528af | ||
|
|
e24f653d24 | ||
|
|
8bb2c5d587 | ||
|
|
7d3e691a69 | ||
|
|
7fa041dd7f | ||
|
|
63bab369cf | ||
|
|
759d0edd81 | ||
|
|
7db6297347 | ||
|
|
19fe75cbbe | ||
|
|
2728f36302 | ||
|
|
74c183c2a7 | ||
|
|
d75ba7bce2 | ||
|
|
968beb8a27 | ||
|
|
7c04ee9f6a | ||
|
|
94ea2da567 | ||
|
|
e52fa81fbb | ||
|
|
6b330b81f2 | ||
|
|
bd857bae2d | ||
|
|
52e1a02224 | ||
|
|
9b446b31d5 | ||
|
|
b47cf43d4c | ||
|
|
4129084494 | ||
|
|
3ced7a2a1b | ||
|
|
5311b25d9f | ||
|
|
cd92c9fa74 | ||
|
|
3ca03795d3 | ||
|
|
294f85e33c | ||
|
|
4bf659833c | ||
|
|
ea0a9bb062 | ||
|
|
86b9fb25ab | ||
|
|
7b55dab79e | ||
|
|
dac3090881 | ||
|
|
b2135cd0a9 | ||
|
|
9a851da2cf | ||
|
|
b46f7262e6 | ||
|
|
42568b7316 | ||
|
|
f08ad62e39 | ||
|
|
c4d9365584 | ||
|
|
e0b694324c | ||
|
|
f1e2fb5697 | ||
|
|
615ba5f816 | ||
|
|
9cbc1845fb | ||
|
|
3a2e747d22 | ||
|
|
1e623ecab4 | ||
|
|
02154a8f88 | ||
|
|
727a99b479 | ||
|
|
7e50f50863 | ||
|
|
56f45a81ca | ||
|
|
274cce1f00 |
15
.git-blame-ignore-revs
Normal file
15
.git-blame-ignore-revs
Normal file
@@ -0,0 +1,15 @@
|
||||
# List of whitespace-only commits to ignore in the Git blame;
|
||||
# to improve tracking changes and avoid noise
|
||||
58db4e3419bf1e5cc1bb61fcd7ce2ebbca89243a
|
||||
efb3338f5cf0eec21e8a75abc62ee14965cb4a7e
|
||||
3859f6ffc088b2ae78748abc84986f4adcadcd41
|
||||
d6569192fc91167f555c3eff58402ff01f1197ea
|
||||
67de97a492c9389f95499db38f9474a1c20ec585
|
||||
a0d085f93eaa69c22449d0217e8daf9eaea2b180
|
||||
1cfba25beb46c74bb1debca2bcfe7ac470e96172
|
||||
f6bc623284914489e891bbac923feb774c862b99
|
||||
abbab3f8b477e917d0a175d0de23cce121096631
|
||||
126347025f9cade241beff182738b2527da7535e
|
||||
4740b836f300658b27e6ad4d79efac63c9c24c24
|
||||
be44bac95670b1cbbc91bd657882d985989846f9
|
||||
f67e5704eda60526d495be758572181f01a6cac8
|
||||
47
.github/workflows/build.yml
vendored
47
.github/workflows/build.yml
vendored
@@ -45,12 +45,52 @@ jobs:
|
||||
- name: Build Cmder Launcher
|
||||
shell: pwsh
|
||||
working-directory: scripts
|
||||
run: .\build.ps1 -Compile -verbose
|
||||
run: .\build.ps1 -Compile -verbose -terminal all
|
||||
|
||||
- name: Pack the built files
|
||||
shell: pwsh
|
||||
working-directory: scripts
|
||||
run: .\pack.ps1 -verbose
|
||||
run: .\pack.ps1 -verbose -terminal all
|
||||
|
||||
- name: Upload artifact (cmder_win_mini.zip)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: build/cmder_win_mini.zip
|
||||
name: cmder_win_mini.zip
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Upload artifact (cmder_win.7z)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: build/cmder_win.7z
|
||||
name: cmder_win.7z
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Upload artifact (cmder_win.zip)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: build/cmder_win.zip
|
||||
name: cmder_win.zip
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Upload artifact (cmder_wt.zip)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: build/cmder_wt.zip
|
||||
name: cmder_wt.zip
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Upload artifact (cmder_wt.7z)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: build/cmder_wt.7z
|
||||
name: cmder_wt.7z
|
||||
|
||||
- name: Upload artifact (cmder_wt_mini.zip)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: build/cmder_wt_mini.zip
|
||||
name: cmder_wt_mini.zip
|
||||
|
||||
- name: Upload artifact (cmder.zip)
|
||||
uses: actions/upload-artifact@v5
|
||||
@@ -82,8 +122,11 @@ jobs:
|
||||
with:
|
||||
files: |
|
||||
build/cmder.zip
|
||||
build/cmder_wt.zip
|
||||
build/cmder.7z
|
||||
build/cmder_wt.7z
|
||||
build/cmder_mini.zip
|
||||
build/cmder_wt_mini.zip
|
||||
build/hashes.txt
|
||||
draft: true
|
||||
generate_release_notes: true
|
||||
|
||||
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
@@ -48,7 +48,7 @@ jobs:
|
||||
cmd /c vendor\init.bat /v /d /t
|
||||
- name: Testing PowerShell
|
||||
run: |
|
||||
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Invoke-Expression '. ''vendor\profile.ps1'''"
|
||||
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "$env:CMDER_DEBUG='1'; . 'vendor\profile.ps1'"
|
||||
- name: Testing Bash
|
||||
run: |
|
||||
bash vendor/cmder.sh
|
||||
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -31,3 +31,10 @@ launcher/src/version.rc2
|
||||
.vs/*
|
||||
.vscode
|
||||
.idea
|
||||
.vagrant/
|
||||
scripts/packer/iso/*.iso
|
||||
!scripts/packer/floppy/*.exe
|
||||
scripts/packer/packer_cache
|
||||
scripts/packer/output-*
|
||||
*.box
|
||||
|
||||
|
||||
12
CHANGELOG.md
12
CHANGELOG.md
@@ -1,5 +1,17 @@
|
||||
# Change Log
|
||||
|
||||
## Unreleased
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fixes #2940
|
||||
|
||||
### Adds
|
||||
|
||||
- Cmder for Windows
|
||||
- Uses Windows and Git for Windows Native Terminals.
|
||||
- Does not contain a terminal emulator like ConEmu or Windows Terminal.
|
||||
|
||||
## [1.3.20](https://github.com/cmderdev/cmder/tree/v1.3.20) (2022-03-18)
|
||||
|
||||
### Changes
|
||||
|
||||
74
Cmder.bat
74
Cmder.bat
@@ -1,20 +1,66 @@
|
||||
@echo off
|
||||
|
||||
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 '\'
|
||||
@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 makes 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"
|
||||
)
|
||||
|
||||
@@ -60,7 +60,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
||||
| `/SINGLE` | Start Cmder in single mode. |
|
||||
| `/START [start_path]` | Folder path to start in. |
|
||||
| `/TASK [task_name]` | Task to start after launch. |
|
||||
| `/X [ConEmu extras pars]` | Forwards parameters to ConEmu |
|
||||
| `-- [ConEmu extras pars]` | Forwards ALL remaining parameters to ConEmu. |
|
||||
|
||||
## Context Menu Integration
|
||||
|
||||
@@ -354,7 +354,7 @@ However, Cmder can in fact run in a variety of other terminal emulators, and eve
|
||||
|
||||
⚠ *Note:* Cmder includes built-in support for Windows Terminal directory tracking via OSC 9;9 sequences. This enables "Duplicate Tab" and "Split Pane" features to preserve the current working directory for both `cmd.exe` and PowerShell sessions.
|
||||
|
||||
⚠ *Note:* Cmder also includes built-in support for [Windows Terminal shell integration](https://learn.microsoft.com/en-us/windows/terminal/tutorials/shell-integration) via OSC 133 sequences (A, B, C) for PowerShell sessions. This enables features like command navigation (jump between commands), command selection, visual command separators, and improved command history management in Windows Terminal.
|
||||
⚠ *Note:* Cmder also includes built-in support for [Windows Terminal shell integration](https://learn.microsoft.com/en-us/windows/terminal/tutorials/shell-integration) via OSC 133 sequences (A, B, C, D) for PowerShell sessions. This enables features like command navigation (jump between commands), command selection, visual command separators, command exit code tracking, and improved command history management in Windows Terminal.
|
||||
|
||||
For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration).
|
||||
|
||||
|
||||
@@ -188,6 +188,9 @@
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\CmderLauncher.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="..\icons\cmder.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
||||
@@ -107,9 +107,9 @@ bool FileExists(const wchar_t * filePath)
|
||||
|
||||
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring title = L"", std::wstring iconPath = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true, std::wstring conemu_args = L"")
|
||||
{
|
||||
#if USE_TASKBAR_API
|
||||
wchar_t appId[MAX_PATH] = { 0 };
|
||||
#endif
|
||||
#if USE_TASKBAR_API
|
||||
wchar_t appId[MAX_PATH] = { 0 };
|
||||
#endif
|
||||
wchar_t exeDir[MAX_PATH] = { 0 };
|
||||
wchar_t icoPath[MAX_PATH] = { 0 };
|
||||
wchar_t cfgPath[MAX_PATH] = { 0 };
|
||||
@@ -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 userCfgPath[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 userConfigDirPath[MAX_PATH] = { 0 };
|
||||
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
||||
@@ -128,21 +128,34 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
wchar_t legacyUserAliasesPath[MAX_PATH] = { 0 };
|
||||
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
||||
wchar_t userConEmuCfgPath[MAX_PATH] = { 0 };
|
||||
|
||||
wchar_t windowsTerminalDir[MAX_PATH] = { 0 };
|
||||
wchar_t conEmuDir[MAX_PATH] = { 0 };
|
||||
wchar_t winDir[MAX_PATH] = { 0 };
|
||||
wchar_t vendorDir[MAX_PATH] = { 0 };
|
||||
wchar_t initCmd[MAX_PATH] = { 0 };
|
||||
wchar_t initPowerShell[MAX_PATH] = { 0 };
|
||||
wchar_t initBash[MAX_PATH] = { 0 };
|
||||
wchar_t initMintty[MAX_PATH] = { 0 };
|
||||
wchar_t vendoredGit[MAX_PATH] = { 0 };
|
||||
wchar_t amdx64Git[MAX_PATH] = { 0 };
|
||||
wchar_t x86Git[MAX_PATH] = { 0 };
|
||||
wchar_t programFiles[MAX_PATH] = { 0 };
|
||||
wchar_t programFilesX86[MAX_PATH] = { 0 };
|
||||
wchar_t minTTYPath[MAX_PATH] = { 0 };
|
||||
|
||||
std::wstring cmderStart = path;
|
||||
std::wstring cmderTask = taskName;
|
||||
std::wstring cmderTitle = title;
|
||||
std::wstring cmderConEmuArgs = conemu_args;
|
||||
std::wstring cmderTerminalArgs = conemu_args;
|
||||
|
||||
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
||||
userConfigDirPath[cfgRoot.length()] = 0;
|
||||
|
||||
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
||||
|
||||
#if USE_TASKBAR_API
|
||||
wcscpy_s(appId, exeDir);
|
||||
#endif
|
||||
#if USE_TASKBAR_API
|
||||
wcscpy_s(appId, exeDir);
|
||||
#endif
|
||||
|
||||
PathRemoveFileSpec(exeDir);
|
||||
|
||||
@@ -166,8 +179,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
{
|
||||
PathCombine(userProfilePath, configDirPath, L"user_profile.cmd");
|
||||
|
||||
char *lPr = (char *)malloc(MAX_PATH);
|
||||
char *pR = (char *)malloc(MAX_PATH);
|
||||
char* lPr = (char*)malloc(MAX_PATH);
|
||||
char* pR = (char*)malloc(MAX_PATH);
|
||||
size_t i;
|
||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||
legacyUserProfilePath, (size_t)MAX_PATH);
|
||||
@@ -184,8 +197,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
{
|
||||
PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd");
|
||||
|
||||
char *lPr = (char *)malloc(MAX_PATH);
|
||||
char *pR = (char *)malloc(MAX_PATH);
|
||||
char* lPr = (char*)malloc(MAX_PATH);
|
||||
char* pR = (char*)malloc(MAX_PATH);
|
||||
size_t i;
|
||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||
legacyUserAliasesPath, (size_t)MAX_PATH);
|
||||
@@ -222,8 +235,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
{
|
||||
PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd");
|
||||
|
||||
char *lPr = (char *)malloc(MAX_PATH);
|
||||
char *pR = (char *)malloc(MAX_PATH);
|
||||
char* lPr = (char*)malloc(MAX_PATH);
|
||||
char* pR = (char*)malloc(MAX_PATH);
|
||||
size_t i;
|
||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||
legacyUserProfilePath, (size_t)MAX_PATH);
|
||||
@@ -240,8 +253,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
{
|
||||
PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd");
|
||||
|
||||
char *lPr = (char *)malloc(MAX_PATH);
|
||||
char *pR = (char *)malloc(MAX_PATH);
|
||||
char* lPr = (char*)malloc(MAX_PATH);
|
||||
char* pR = (char*)malloc(MAX_PATH);
|
||||
size_t i;
|
||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||
legacyUserAliasesPath, (size_t)MAX_PATH);
|
||||
@@ -251,71 +264,158 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
}
|
||||
}
|
||||
|
||||
// Set path to vendored ConEmu config file
|
||||
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
||||
PathCombine(vendorDir, exeDir, L"vendor");
|
||||
PathCombine(windowsTerminalDir, vendorDir, L"windows-terminal");
|
||||
PathCombine(conEmuDir, vendorDir, L"conemu-maximus5");
|
||||
GetEnvironmentVariable(L"WINDIR", winDir, MAX_PATH);
|
||||
|
||||
// Set path to Cmder default ConEmu config file
|
||||
PathCombine(defaultCfgPath, exeDir, L"vendor\\ConEmu.xml.default");
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
// Set path to vendored ConEmu config file
|
||||
PathCombine(cfgPath, windowsTerminalDir, L"settings\\settings.json");
|
||||
|
||||
// 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 default ConEmu config file
|
||||
PathCombine(defaultCfgPath, exeDir, L"vendor\\windows_terminal_default_settings.json");
|
||||
|
||||
// Set path to Cmder user ConEmu config file
|
||||
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||
// Check for machine-specific then user config source file.
|
||||
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 if (PathFileExists(conEmuDir))
|
||||
{
|
||||
// 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 (wcscmp(cpuCfgPath, L"") != 0 && (PathFileExists(cpuCfgPath) || use_user_cfg == false)) // config/[host specific terminal emulator config] file exists or /m was specified on command line, use machine specific config.
|
||||
{
|
||||
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 (PathFileExists(cfgPath)) // [terminal emulator config] file exists, copy [terminal emulator config] to config/user_[terminal emulator config] file to backup any settings changes from previous sessions.
|
||||
{
|
||||
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);
|
||||
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_terminal_%COMPUTERNAME%_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
else if (PathFileExists(conEmuDir))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
else // vendor/conemu-maximus5/ConEmu.xml config file does not exist, copy config/ConEmu-%COMPUTERNAME%.xml to vendor/conemu-maximus5/ConEmu.xml file
|
||||
else // [terminal emulator config] file does not exist, copy config/[host specific terminal emulator config] file to [terminal emulator config] file
|
||||
{
|
||||
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(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!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
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 if (PathFileExists(conEmuDir))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(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!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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 (wcscmp(userCfgPath, L"") != 0 && PathFileExists(userCfgPath)) // config/user[terminal emulator config] file exists, use it.
|
||||
{
|
||||
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||
{
|
||||
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml.
|
||||
if (PathFileExists(cfgPath)) // [terminal emulator config] file exists, copy [terminal emulator config] to config/user_[terminal emulator config] file to backup any settings changes from previous sessions.
|
||||
{
|
||||
if (!CopyFile(cfgPath, userCfgPath, 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_settings.json! Access Denied."
|
||||
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_terminal_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
else if (PathFileExists(conEmuDir))
|
||||
{
|
||||
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 // [terminal emulator config] file does not exist, copy config/user_[terminal emulator config] file to [terminal emulator config] file
|
||||
{
|
||||
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy config/user_windows_terminal_settings.json file to vendor/windows-terminal/settings/settings.json! Access Denied."
|
||||
: 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 if (PathFileExists(conEmuDir))
|
||||
{
|
||||
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 if (!PathFileExists(windowsTerminalDir)) { // '/c [path]' was specified, don't copy anything and use existing user_[terminal emulator config] file.
|
||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||
}
|
||||
}
|
||||
else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||
{
|
||||
if (PathFileExists(cfgPath)) // [terminal emulator config] file exists, copy [terminal emulator config] file to config/user_[terminal emulator config] file.
|
||||
{
|
||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||
{
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settings.json! Access Denied."
|
||||
: 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 if (PathFileExists(conEmuDir))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
@@ -324,28 +424,51 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else // vendor/conemu-maximus5/ConEmu.xml does not exist, copy config/user-conemu.xml to vendor/conemu-maximus5/ConEmu.xml
|
||||
else // vendor/[terminal emulator config].default config exists, copy Cmder vendor/[terminal emulator config].default file to [terminal emulator config] file.
|
||||
{
|
||||
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
||||
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
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);
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to vendor/windows-terminal/settings/settings.json! Access Denied."
|
||||
: 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 if (PathFileExists(conEmuDir))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else // '/c [path]' was specified, don't copy anything and use existing user_conemu.xml to start comemu.
|
||||
else if (!CopyFile(defaultCfgPath, cfgPath, FALSE) && PathFileExists(conEmuDir))
|
||||
{
|
||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||
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);
|
||||
}
|
||||
}
|
||||
else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||
else if (wcscmp(cfgPath, L"") != 0 && PathFileExists(cfgPath)) // This is a first time Cmder.exe run and [terminal emulator config] file exists, copy [terminal emulator config] file to config/user_[terminal emulator config] file.
|
||||
{
|
||||
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml
|
||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||
{
|
||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settings_settings.json! Access Denied."
|
||||
: 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)
|
||||
@@ -353,99 +476,146 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
: 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.
|
||||
{
|
||||
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml
|
||||
{
|
||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||
{
|
||||
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");
|
||||
}
|
||||
else // '/c [path]' was specified and 'vendor/ConEmu.xml.default' config exists, copy Cmder 'vendor/ConEmu.xml.default' file to '[user specified path]/config/user_ConEmu.xml'.
|
||||
else if (wcscmp(defaultCfgPath, L"") != 0) // '/c [path]' was specified and 'vendor/[terminal emulator config].default' config exists, copy Cmder 'vendor/[terminal emulator config].default' file to '[user specified path]/config/user_[terminal emulator config]'.
|
||||
{
|
||||
if ( ! CopyFile(defaultCfgPath, userCfgPath, FALSE))
|
||||
{
|
||||
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);
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to [user specified path]/config/user_windows_terminal_settings.json! Access Denied."
|
||||
: 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");
|
||||
}
|
||||
|
||||
GetEnvironmentVariable(L"ProgramFiles", programFiles, MAX_PATH);
|
||||
GetEnvironmentVariable(L"ProgramFiles(x86)", programFilesX86, MAX_PATH);
|
||||
|
||||
PathCombine(vendoredGit, vendorDir, L"git-for-windows");
|
||||
PathCombine(amdx64Git, programFiles, L"Git");
|
||||
PathCombine(x86Git, programFilesX86, L"Git");
|
||||
|
||||
SYSTEM_INFO sysInfo;
|
||||
GetNativeSystemInfo(&sysInfo);
|
||||
if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe");
|
||||
PathCombine(terminalPath, exeDir, L"vendor\\windows-terminal\\WindowsTerminal.exe");
|
||||
}
|
||||
else if (PathFileExists(conEmuDir))
|
||||
{
|
||||
swprintf_s(args, L"%s /Icon \"%s\"", args, icoPath);
|
||||
swprintf_s(args, L"%s /title \"%s\"", args, cmderTitle.c_str());
|
||||
PathCombine(terminalPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe");
|
||||
}
|
||||
else
|
||||
{
|
||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
||||
}
|
||||
PathCombine(terminalPath, winDir, L"system32\\cmd.exe");
|
||||
|
||||
swprintf_s(args, L"%s /Icon \"%s\"", args, icoPath);
|
||||
if (streqi(cmderTask.c_str(), L"powershell"))
|
||||
{
|
||||
PathCombine(terminalPath, winDir, L"System32\\WindowsPowerShell\\v1.0\\powershell.exe");
|
||||
}
|
||||
/*
|
||||
else if (streqi(cmderTask.c_str(), L"mintty"))
|
||||
{
|
||||
if (PathFileExists(vendoredGit))
|
||||
{
|
||||
PathCombine(terminalPath, vendoredGit, L"git-bash.exe");
|
||||
}
|
||||
else if (PathFileExists(amdx64Git))
|
||||
{
|
||||
PathCombine(terminalPath, amdx64Git, L"git-bash.exe");
|
||||
}
|
||||
else if (PathFileExists(x86Git))
|
||||
{
|
||||
PathCombine(terminalPath, x86Git, L"git-bash.exe");
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
swprintf_s(args, L"%s /single", args);
|
||||
}
|
||||
|
||||
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 /single", args);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
// see : https://conemu.github.io/en/ConEmuArgs.html
|
||||
// > This must be the last used switch (excepting -new_console and -cur_console)
|
||||
PathCombine(initCmd, vendorDir, L"init.bat");
|
||||
PathCombine(initPowerShell, vendorDir, L"profile.ps1");
|
||||
PathCombine(initBash, vendorDir, L"start_git_bash.cmd");
|
||||
PathCombine(initMintty, vendorDir, L"start_git_mintty.cmd");
|
||||
|
||||
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 if (PathFileExists(conEmuDir))
|
||||
{
|
||||
swprintf_s(args, L"%s /run {%s}", args, cmderTask.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (streqi(cmderTask.c_str(), L"powershell"))
|
||||
{
|
||||
swprintf_s(args, L"%s -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command \"Invoke-Expression 'Import-Module ''%s'''\"", args, initPowerShell);
|
||||
}
|
||||
else if (streqi(cmderTask.c_str(), L"bash"))
|
||||
{
|
||||
swprintf_s(args, L"%s /c \"%s\"", args, initBash);
|
||||
}
|
||||
else if (streqi(cmderTask.c_str(), L"mintty"))
|
||||
{
|
||||
swprintf_s(args, L"%s /c \"%s\"", args, initMintty);
|
||||
}
|
||||
else if (streqi(cmderTask.c_str(), L"cmder"))
|
||||
{
|
||||
swprintf_s(args, L"%s /k \"%s\"", args, initCmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
||||
@@ -455,18 +625,52 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
SetEnvironmentVariable(L"CMDER_USER_BIN", userBinDirPath);
|
||||
}
|
||||
|
||||
// Try to find m'intty.exe' so ConEmu can launch using %MINTTY_EXE% in external Git for Cmder Mini.
|
||||
// See: https://github.com/Maximus5/ConEmu/issues/2559 for why this is commented.
|
||||
|
||||
/*
|
||||
if (PathFileExists(vendoredGit))
|
||||
{
|
||||
PathCombine(minTTYPath, vendoredGit, L"usr\\bin\\mintty.exe");
|
||||
SetEnvironmentVariable(L"MINTTY_EXE", minTTYPath);
|
||||
}
|
||||
else if (PathFileExists(amdx64Git))
|
||||
{
|
||||
PathCombine(minTTYPath, amdx64Git, L"usr\\bin\\mintty.exe");
|
||||
SetEnvironmentVariable(L"MINTTY_EXE", minTTYPath);
|
||||
}
|
||||
else if (PathFileExists(x86Git))
|
||||
{
|
||||
PathCombine(minTTYPath, x86Git, L"usr\\bin\\mintty.exe");
|
||||
SetEnvironmentVariable(L"MINTTY_EXE", minTTYPath);
|
||||
}
|
||||
*/
|
||||
|
||||
// Ensure EnvironmentVariables are propagated.
|
||||
|
||||
STARTUPINFO si = { 0 };
|
||||
|
||||
si.cb = sizeof(STARTUPINFO);
|
||||
#if USE_TASKBAR_API
|
||||
si.lpTitle = appId;
|
||||
si.dwFlags = STARTF_TITLEISAPPID;
|
||||
#endif
|
||||
#if USE_TASKBAR_API
|
||||
si.lpTitle = appId;
|
||||
si.dwFlags = STARTF_TITLEISAPPID;
|
||||
#endif
|
||||
PROCESS_INFORMATION pi;
|
||||
if (!CreateProcess(conEmuPath, args, NULL, NULL, false, 0, NULL, NULL, &si, &pi)) {
|
||||
MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK);
|
||||
|
||||
if (!CreateProcess(terminalPath, args, NULL, NULL, false, 0, NULL, NULL, &si, &pi))
|
||||
{
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
MessageBox(NULL, _T("Unable to create the Windows Terminal process!"), _T("Error"), MB_OK);
|
||||
}
|
||||
else if (PathFileExists(conEmuDir))
|
||||
{
|
||||
MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox(NULL, _T("Unable to create the Cmd process!"), _T("Error"), MB_OK);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -521,11 +725,11 @@ void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName, std::wstring cfgR
|
||||
|
||||
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
||||
wchar_t baseCommandStr[MAX_PATH + 20] = { 0 };
|
||||
if (!single) {
|
||||
swprintf_s(baseCommandStr, L"\"%s\"", exePath);
|
||||
if (single) {
|
||||
swprintf_s(baseCommandStr, L"\"%s\" /single", exePath);
|
||||
}
|
||||
else {
|
||||
swprintf_s(baseCommandStr, L"\"%s\" /single", exePath);
|
||||
swprintf_s(baseCommandStr, L"\"%s\"", exePath);
|
||||
}
|
||||
|
||||
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||
@@ -583,7 +787,7 @@ struct cmderOptions
|
||||
std::wstring cmderTitle = L"Cmder";
|
||||
std::wstring cmderIcon = L"";
|
||||
std::wstring cmderRegScope = L"USER";
|
||||
std::wstring cmderConEmuArgs = L"";
|
||||
std::wstring cmderTerminalArgs = L"";
|
||||
bool cmderSingle = false;
|
||||
bool cmderUserCfg = true;
|
||||
bool registerApp = false;
|
||||
@@ -597,11 +801,22 @@ cmderOptions GetOption()
|
||||
LPWSTR *szArgList;
|
||||
int argCount;
|
||||
|
||||
wchar_t windowsTerminalDir[MAX_PATH] = { 0 };
|
||||
wchar_t conEmuDir[MAX_PATH] = { 0 };
|
||||
wchar_t vendorDir[MAX_PATH] = { 0 };
|
||||
wchar_t exeDir[MAX_PATH] = { 0 };
|
||||
|
||||
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
||||
PathRemoveFileSpec(exeDir);
|
||||
|
||||
PathCombine(vendorDir, exeDir, L"vendor");
|
||||
PathCombine(windowsTerminalDir, vendorDir, L"windows-terminal");
|
||||
PathCombine(conEmuDir, vendorDir, L"ConEmu-Maximus5");
|
||||
|
||||
szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);
|
||||
|
||||
for (int i = 1; i < argCount; i++)
|
||||
{
|
||||
|
||||
// MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK);
|
||||
if (cmderOptions.error == false) {
|
||||
if (_wcsicmp(L"/c", szArgList[i]) == 0)
|
||||
@@ -638,26 +853,26 @@ cmderOptions GetOption()
|
||||
MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK);
|
||||
}
|
||||
}
|
||||
else if (_wcsicmp(L"/task", szArgList[i]) == 0)
|
||||
else if (_wcsicmp(L"/task", szArgList[i]) == 0 || PathFileExists(windowsTerminalDir) || PathFileExists(conEmuDir))
|
||||
{
|
||||
cmderOptions.cmderTask = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
else if (_wcsicmp(L"/title", szArgList[i]) == 0)
|
||||
else if (_wcsicmp(L"/title", szArgList[i]) == 0 && !PathFileExists(windowsTerminalDir) && PathFileExists(conEmuDir))
|
||||
{
|
||||
cmderOptions.cmderTitle = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
else if (_wcsicmp(L"/icon", szArgList[i]) == 0)
|
||||
else if (_wcsicmp(L"/icon", szArgList[i]) == 0 && !PathFileExists(windowsTerminalDir) && PathFileExists(conEmuDir))
|
||||
{
|
||||
cmderOptions.cmderIcon = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
else if (_wcsicmp(L"/single", szArgList[i]) == 0)
|
||||
else if (_wcsicmp(L"/single", szArgList[i]) == 0 && !PathFileExists(windowsTerminalDir) && PathFileExists(conEmuDir))
|
||||
{
|
||||
cmderOptions.cmderSingle = true;
|
||||
}
|
||||
else if (_wcsicmp(L"/m", szArgList[i]) == 0)
|
||||
else if (_wcsicmp(L"/m", szArgList[i]) == 0 && !PathFileExists(windowsTerminalDir) && PathFileExists(conEmuDir))
|
||||
{
|
||||
cmderOptions.cmderUserCfg = false;
|
||||
}
|
||||
@@ -690,7 +905,7 @@ cmderOptions GetOption()
|
||||
/* Used for passing arguments to conemu prog */
|
||||
else if (_wcsicmp(L"/x", szArgList[i]) == 0)
|
||||
{
|
||||
cmderOptions.cmderConEmuArgs = szArgList[i + 1];
|
||||
cmderOptions.cmderTerminalArgs = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
/* Bare double dash, remaining commandline is for conemu */
|
||||
@@ -700,7 +915,7 @@ cmderOptions GetOption()
|
||||
auto doubledash = cmdline.find(L" -- ");
|
||||
if (doubledash != std::string::npos)
|
||||
{
|
||||
cmderOptions.cmderConEmuArgs = cmdline.substr(doubledash + 4);
|
||||
cmderOptions.cmderTerminalArgs = cmdline.substr(doubledash + 4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -727,7 +942,11 @@ cmderOptions GetOption()
|
||||
cmderOptions.error = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!PathFileExists(windowsTerminalDir) && !PathFileExists(conEmuDir) && streqi(cmderOptions.cmderTask.c_str(), L""))
|
||||
{
|
||||
cmderOptions.cmderTask = L"cmder";
|
||||
}
|
||||
|
||||
if (cmderOptions.error == true)
|
||||
@@ -756,12 +975,29 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||
|
||||
cmderOptions cmderOptions = GetOption();
|
||||
|
||||
wchar_t windowsTerminalDir[MAX_PATH] = { 0 };
|
||||
wchar_t exeDir[MAX_PATH] = { 0 };
|
||||
|
||||
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
||||
PathRemoveFileSpec(exeDir);
|
||||
PathCombine(windowsTerminalDir, exeDir, L"vendor\\windows-terminal");
|
||||
|
||||
if (cmderOptions.registerApp == true)
|
||||
{
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||
if (PathFileExists(windowsTerminalDir))
|
||||
{
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||
}
|
||||
else
|
||||
{
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, false);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot, false);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, false);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM, cmderOptions.cmderCfgRoot, false);
|
||||
}
|
||||
}
|
||||
else if (cmderOptions.unRegisterApp == true)
|
||||
{
|
||||
@@ -776,7 +1012,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||
}
|
||||
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;
|
||||
|
||||
@@ -35,19 +35,19 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
@@ -60,7 +60,7 @@ END
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_CMDER ICON "..\\..\\icons\\cmder.ico"
|
||||
#endif // English (United States) resources
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -6,7 +6,7 @@ STRINGTABLE
|
||||
{
|
||||
IDS_TITLE "Cmder Launcher"
|
||||
|
||||
IDS_SWITCHES L"Valid options:\n\n /c [CMDER User Root Path]\n /task [ConEmu Task Name]\n /icon [CMDER Icon Path]\n [/start [Start in Path] | [Start in Path]]\n /single\n /m\n /x [ConEmu extra arguments]\n\nor, either:\n /register [USER | ALL]\n /unregister [USER | ALL]"
|
||||
IDS_SWITCHES L"Valid options:\n\n /c [CMDER User Root Path]\n /task [Windows Terminal Profile/ConEmu Task Name]\n /icon [CMDER Icon Path] - ConEmu ONLY!\n [/start [Start in Path] | [Start in Path]]\n /single - ConEmu ONLY!\n /m\n -- [ConEmu/Windows Terminal extra arguments]\n\nNote: '-- [...]' must be the last argument!\n\nor, either:\n /register [USER | ALL]\n /unregister [USER | ALL]"
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -23,5 +23,6 @@ appveyor.yml
|
||||
vendor\cmder.sh
|
||||
vendor\git-prompt.sh
|
||||
config\user-*
|
||||
config\user_*
|
||||
clink_history*
|
||||
*.log
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
.EXAMPLE
|
||||
.\build.ps1 -SourcesPath '~/custom/vendors.json'
|
||||
|
||||
Build cmder with your own packages. See vendor/sources.json for the syntax you need to copy.
|
||||
Build Cmder with your own packages. See vendor/sources.json for the syntax you need to copy.
|
||||
.NOTES
|
||||
AUTHORS
|
||||
Samuel Vasko, Jack Bennett
|
||||
@@ -56,6 +56,9 @@ Param(
|
||||
# Using this option will skip all downloads, if you only need to build launcher
|
||||
[switch]$noVendor,
|
||||
|
||||
# Using this option will specify the emulator to use [none, all, conemu-maximus5, or windows-terminal]
|
||||
[string]$terminal = 'all',
|
||||
|
||||
# Build launcher if you have MSBuild tools installed
|
||||
[switch]$Compile
|
||||
)
|
||||
@@ -113,15 +116,36 @@ if (-not $noVendor) {
|
||||
}
|
||||
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
|
||||
$cmder_folder = $cmder_root.toString()
|
||||
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 $cmder_folder.Replace('\', '\\')) {
|
||||
Write-Verbose $("Stopping " + $ssh_agent.path + "!")
|
||||
Stop-Process $ssh_agent.id
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($s in $sources) {
|
||||
if ($terminal -eq "none") {
|
||||
continue
|
||||
} elseif ($s.name -eq "conemu-maximus5" -and $terminal -eq "windows-terminal") {
|
||||
continue
|
||||
} elseif ($s.name -eq "windows-terminal" -and $terminal -eq "conemu-maximus5") {
|
||||
continue
|
||||
}
|
||||
|
||||
Write-Verbose "Getting vendored $($s.name) $($s.version)..."
|
||||
|
||||
# We do not care about the extensions/type of archive
|
||||
@@ -132,6 +156,16 @@ if (-not $noVendor) {
|
||||
Download-File -Url $s.url -File $vend\$tempArchive -ErrorAction Stop
|
||||
Extract-Archive $tempArchive $s.name
|
||||
|
||||
# Make Embedded Windows Terminal Portable
|
||||
if ($s.name -eq "windows-terminal") {
|
||||
$windowTerminalFiles = resolve-path ($saveTo + "\" + $s.name + "\terminal*")
|
||||
Move-Item -ErrorAction SilentlyContinue $windowTerminalFiles\* $s.name >$null
|
||||
Remove-Item -ErrorAction SilentlyContinue $windowTerminalFiles >$null
|
||||
Write-Verbose "Making Windows Terminal Portable..."
|
||||
New-Item -Type Directory -Path (Join-Path $saveTo "/windows-terminal/settings") -ErrorAction SilentlyContinue >$null
|
||||
New-Item -Type File -Path (Join-Path $saveTo "/windows-terminal/.portable") -ErrorAction SilentlyContinue >$null
|
||||
}
|
||||
|
||||
if ((Get-ChildItem $s.name).Count -eq 1) {
|
||||
Flatten-Directory($s.name)
|
||||
}
|
||||
@@ -146,6 +180,12 @@ if (-not $noVendor) {
|
||||
Copy-Item $ConEmuXmlSave $ConEmuXml
|
||||
}
|
||||
|
||||
# Restore Windows Terminal user configuration
|
||||
if ($WinTermSettingsJson -ne "") {
|
||||
Write-Verbose "Restore '$WinTermSettingsJsonSave' to '$WinTermSettingsJson'"
|
||||
Copy-Item $WinTermSettingsJsonSave $WinTermSettingsJson
|
||||
}
|
||||
|
||||
# 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") ) ) {
|
||||
Write-Verbose "Adding cmder.sh /etc/profile.d"
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
.Synopsis
|
||||
Pack Cmder
|
||||
.DESCRIPTION
|
||||
Use this script to pack cmder into release archives
|
||||
Use this script to pack Cmder into release archives
|
||||
|
||||
You will need to make this script executable by setting your Powershell Execution Policy to Remote signed
|
||||
Then unblock the script for execution with UnblockFile .\pack.ps1
|
||||
.EXAMPLE
|
||||
.\pack.ps1
|
||||
|
||||
Creates default archives for cmder
|
||||
Creates default archives for Cmder
|
||||
.EXAMPLE
|
||||
.\pack.ps1 -verbose
|
||||
|
||||
Creates default archives for cmder with plenty of information
|
||||
Creates default archives for Cmder with plenty of information
|
||||
.NOTES
|
||||
AUTHORS
|
||||
Samuel Vasko, Jack Bennett, Martin Kemp
|
||||
@@ -31,6 +31,9 @@ Param(
|
||||
# Path to the vendor configuration source file
|
||||
[string]$cmderRoot = "$PSScriptRoot\..",
|
||||
|
||||
# Using this option will pack artifacts for a specific included terminal emulator [none, all, conemu-maximus5, or windows-terminal]
|
||||
[string]$terminal = 'all',
|
||||
|
||||
# Vendor folder locaton
|
||||
[string]$saveTo = "$PSScriptRoot\..\build"
|
||||
)
|
||||
@@ -41,10 +44,36 @@ $cmderRoot = Resolve-Path $cmderRoot
|
||||
$ErrorActionPreference = "Stop"
|
||||
Ensure-Executable "7z"
|
||||
|
||||
$targets = @{
|
||||
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on";
|
||||
"cmder.zip" = "-mm=Deflate -mfb=128 -mpass=3";
|
||||
"cmder_mini.zip" = "-xr!`"vendor\git-for-windows`"";
|
||||
if ($terminal -eq "none") {
|
||||
$targets = @{
|
||||
"cmder_win.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||
"cmder_win.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||
"cmder_win.mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||
}
|
||||
} elseif ($terminal -eq "windows-terminal") {
|
||||
$targets = @{
|
||||
"cmder_wt.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\conemu-maximus5`"";
|
||||
"cmder_wt.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\conemu-maximus5`"";
|
||||
"cmder_wt_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\conemu-maximus5`"";
|
||||
}
|
||||
} elseif ($terminal -eq "windows-terminal") {
|
||||
$targets = @{
|
||||
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\windows-terminal`"";
|
||||
"cmder.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\windows-terminal`"";
|
||||
"cmder_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\windows-terminal`"";
|
||||
}
|
||||
} else {
|
||||
$targets = @{
|
||||
"cmder_win.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||
"cmder_win.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||
"cmder_win_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||
"cmder_wt.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\conemu-maximus5`"";
|
||||
"cmder_wt.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\conemu-maximus5`"";
|
||||
"cmder_wt_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\conemu-maximus5`"";
|
||||
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\windows-terminal`"";
|
||||
"cmder.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\windows-terminal`"";
|
||||
"cmder_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\windows-terminal`"";
|
||||
}
|
||||
}
|
||||
|
||||
Push-Location -Path $cmderRoot
|
||||
|
||||
@@ -172,13 +172,13 @@ function Register-Cmder() {
|
||||
# Text for the context menu item.
|
||||
$MenuText = "Cmder Here"
|
||||
|
||||
, # Defaults to the current cmder directory when run from cmder.
|
||||
, # Defaults to the current Cmder directory when run from Cmder.
|
||||
$PathToExe = (Join-Path $env:CMDER_ROOT "cmder.exe")
|
||||
|
||||
, # Commands the context menu will execute.
|
||||
$Command = "%V"
|
||||
|
||||
, # Defaults to the icons folder in the cmder package.
|
||||
, # Defaults to the icons folder in the Cmder package.
|
||||
$icon = (Split-Path $PathToExe | Join-Path -ChildPath 'icons/cmder.ico')
|
||||
)
|
||||
Begin
|
||||
|
||||
131
vendor/ConEmu.xml.default
vendored
131
vendor/ConEmu.xml.default
vendored
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<key name="Software">
|
||||
<key name="ConEmu">
|
||||
<key name=".Vanilla" modified="2018-02-22 06:02:11" build="171109">
|
||||
<key name=".Vanilla" modified="2023-06-05 13:14:44" build="221218">
|
||||
<value name="ColorTable00" type="dword" data="00222827"/>
|
||||
<value name="ColorTable01" type="dword" data="009e5401"/>
|
||||
<value name="ColorTable02" type="dword" data="0004aa74"/>
|
||||
@@ -42,8 +42,8 @@
|
||||
<value name="PopBackColorIdx" type="hex" data="10"/>
|
||||
<value name="ExtendFonts" type="hex" data="00"/>
|
||||
<value name="ExtendFontNormalIdx" type="hex" data="01"/>
|
||||
<value name="ExtendFontBoldIdx" type="hex" data="0c"/>
|
||||
<value name="ExtendFontItalicIdx" type="hex" data="0d"/>
|
||||
<value name="ExtendFontBoldIdx" type="hex" data="0C"/>
|
||||
<value name="ExtendFontItalicIdx" type="hex" data="0D"/>
|
||||
<value name="CursorTypeActive" type="dword" data="000232c1"/>
|
||||
<value name="CursorTypeInactive" type="dword" data="00823282"/>
|
||||
<value name="ClipboardDetectLineEnd" type="hex" data="01"/>
|
||||
@@ -58,7 +58,7 @@
|
||||
<value name="TrueColorerSupport" type="hex" data="01"/>
|
||||
<value name="FadeInactive" type="hex" data="01"/>
|
||||
<value name="FadeInactiveLow" type="hex" data="00"/>
|
||||
<value name="FadeInactiveHigh" type="hex" data="c8"/>
|
||||
<value name="FadeInactiveHigh" type="hex" data="C8"/>
|
||||
<value name="ComSpec.UncPaths" type="hex" data="01"/>
|
||||
<value name="ConVisible" type="hex" data="00"/>
|
||||
<value name="ConInMode" type="dword" data="ffffffff"/>
|
||||
@@ -78,7 +78,6 @@
|
||||
<value name="StartFarEditors" type="hex" data="00"/>
|
||||
<value name="StoreTaskbarkTasks" type="hex" data="00"/>
|
||||
<value name="StoreTaskbarCommands" type="hex" data="00"/>
|
||||
<value name="CmdLineHistory" type="multi"></value>
|
||||
<value name="SingleInstance" type="hex" data="00"/>
|
||||
<value name="ShowHelpTooltips" type="hex" data="01"/>
|
||||
<value name="Multi" type="hex" data="01"/>
|
||||
@@ -113,13 +112,13 @@
|
||||
<value name="Monospace" type="hex" data="01"/>
|
||||
<value name="BackGround Image show" type="hex" data="00"/>
|
||||
<value name="BackGround Image" type="string" data="c:\back.bmp"/>
|
||||
<value name="bgImageDarker" type="hex" data="ff"/>
|
||||
<value name="bgImageDarker" type="hex" data="FF"/>
|
||||
<value name="bgImageColors" type="dword" data="ffffffff"/>
|
||||
<value name="bgOperation" type="hex" data="00"/>
|
||||
<value name="bgPluginAllowed" type="hex" data="01"/>
|
||||
<value name="AlphaValue" type="hex" data="f8"/>
|
||||
<value name="AlphaValue" type="hex" data="F8"/>
|
||||
<value name="AlphaValueSeparate" type="hex" data="01"/>
|
||||
<value name="AlphaValueInactive" type="hex" data="ee"/>
|
||||
<value name="AlphaValueInactive" type="hex" data="EE"/>
|
||||
<value name="UserScreenTransparent" type="hex" data="00"/>
|
||||
<value name="ColorKeyTransparent" type="hex" data="00"/>
|
||||
<value name="ColorKeyValue" type="dword" data="00010101"/>
|
||||
@@ -128,8 +127,8 @@
|
||||
<value name="ConWnd Width" type="dword" data="00000078"/>
|
||||
<value name="ConWnd Height" type="dword" data="0000001e"/>
|
||||
<value name="Cascaded" type="hex" data="01"/>
|
||||
<value name="ConWnd X" type="long" data="500"/>
|
||||
<value name="ConWnd Y" type="long" data="500"/>
|
||||
<value name="ConWnd X" type="long" data="2194"/>
|
||||
<value name="ConWnd Y" type="long" data="95"/>
|
||||
<value name="16bit Height" type="ulong" data="0"/>
|
||||
<value name="AutoSaveSizePos" type="hex" data="01"/>
|
||||
<value name="IntegralSize" type="hex" data="00"/>
|
||||
@@ -166,19 +165,19 @@
|
||||
<value name="CTS.ActMode" type="hex" data="02"/>
|
||||
<value name="CTS.RBtnAction" type="hex" data="03"/>
|
||||
<value name="CTS.MBtnAction" type="hex" data="00"/>
|
||||
<value name="CTS.ColorIndex" type="hex" data="e0"/>
|
||||
<value name="CTS.ColorIndex" type="hex" data="E0"/>
|
||||
<value name="ClipboardConfirmEnter" type="hex" data="01"/>
|
||||
<value name="ClipboardConfirmLonger" type="ulong" data="200"/>
|
||||
<value name="FarGotoEditorOpt" type="hex" data="01"/>
|
||||
<value name="FarGotoEditorPath" type="string" data="far.exe /e%1:%2 "%3""/>
|
||||
<value name="FarGotoEditorPath" type="string" data='far.exe /e%1:%2 "%3"'/>
|
||||
<value name="FixFarBorders" type="hex" data="01"/>
|
||||
<value name="FixFarBordersRanges" type="string" data="2013-25C4;"/>
|
||||
<value name="ExtendUCharMap" type="hex" data="01"/>
|
||||
<value name="EnhanceGraphics" type="hex" data="01"/>
|
||||
<value name="EnhanceButtons" type="hex" data="00"/>
|
||||
<value name="PartBrush75" type="hex" data="c8"/>
|
||||
<value name="PartBrush75" type="hex" data="C8"/>
|
||||
<value name="PartBrush50" type="hex" data="96"/>
|
||||
<value name="PartBrush25" type="hex" data="5a"/>
|
||||
<value name="PartBrush25" type="hex" data="5A"/>
|
||||
<value name="PartBrushBlack" type="hex" data="20"/>
|
||||
<value name="RightClick opens context menu" type="hex" data="02"/>
|
||||
<value name="RightClickMacro2" type="string" data=""/>
|
||||
@@ -413,15 +412,15 @@
|
||||
<value name="Key.TileToLeft" type="dword" data="80808000"/>
|
||||
<value name="Key.TileToRIght" type="dword" data="80808000"/>
|
||||
<value name="KeyMacro01" type="dword" data="0012a031"/>
|
||||
<value name="KeyMacro01.Text" type="string" data="Task("cmd")"/>
|
||||
<value name="KeyMacro01.Text" type="string" data='Task("cmd")'/>
|
||||
<value name="KeyMacro02" type="dword" data="0012a032"/>
|
||||
<value name="KeyMacro02.Text" type="string" data="Task("PowerShell")"/>
|
||||
<value name="KeyMacro02.Text" type="string" data='Task("PowerShell")'/>
|
||||
<value name="KeyMacro03" type="dword" data="000011d0"/>
|
||||
<value name="KeyMacro03.Text" type="string" data="FontSetSize(1,2)"/>
|
||||
<value name="KeyMacro04" type="dword" data="000011d1"/>
|
||||
<value name="KeyMacro04.Text" type="string" data="FontSetSize(1,-2)"/>
|
||||
<value name="KeyMacro05" type="dword" data="0012a033"/>
|
||||
<value name="KeyMacro05.Text" type="string" data="Task("PowerShell as Admin")"/>
|
||||
<value name="KeyMacro05.Text" type="string" data='Task("PowerShell as Admin")'/>
|
||||
<value name="KeyMacro06" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro06.Text" type="string" data=""/>
|
||||
<value name="KeyMacro07" type="dword" data="00000000"/>
|
||||
@@ -484,12 +483,12 @@
|
||||
<value name="DndLKey" type="hex" data="00"/>
|
||||
<value name="DndRKey" type="hex" data="a2"/>
|
||||
<value name="WndDragKey" type="dword" data="00121101"/>
|
||||
<key name="Tasks" modified="2018-02-22 06:02:12" build="171109">
|
||||
<value name="Count" type="long" data="9"/>
|
||||
<key name="Tasks" modified="2023-06-05 13:14:44" build="221218">
|
||||
<value name="Count" type="long" data="11"/>
|
||||
<key name="Task1" modified="2018-02-22 06:02:12" build="171109">
|
||||
<value name="Name" type="string" data="{cmd::Cmder as Admin}"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="*cmd /k ""%ConEmuDir%\..\init.bat" ""/>
|
||||
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||
<value name="Cmd1" type="string" data='*cmd /k ""%ConEmuDir%\..\init.bat" "'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
@@ -497,8 +496,8 @@
|
||||
</key>
|
||||
<key name="Task2" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{cmd::Cmder}"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="cmd /k ""%ConEmuDir%\..\init.bat" ""/>
|
||||
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||
<value name="Cmd1" type="string" data='cmd /k ""%ConEmuDir%\..\init.bat" "'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
@@ -507,8 +506,8 @@
|
||||
<key name="Task3" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{PowerShell::PowerShell as Admin}"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''""/>
|
||||
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||
<value name="Cmd1" type="string" data='*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''"'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
@@ -516,61 +515,78 @@
|
||||
<key name="Task4" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{PowerShell::PowerShell}"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''""/>
|
||||
<value name="Cmd2" type="string" data=""%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe""/>
|
||||
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||
<value name="Cmd1" type="string" data='PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''"'/>
|
||||
<value name="Cmd2" type="string" data='"%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe"'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
</key>
|
||||
<key name="Task5" modified="2018-02-22 06:05:13" build="171109">
|
||||
<key name="Task5" modified="2023-06-05 13:15:18" build="221218">
|
||||
<value name="Name" type="string" data="{bash::mintty as Admin - External}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data='/icon "%ProgramFiles%\git\usr\share\git\git-for-windows.ico"'/>
|
||||
<value name="Cmd1" type="string" data='*"%ProgramFiles%\git\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task6" modified="2023-06-05 13:15:38" build="221218">
|
||||
<value name="Name" type="string" data="{bash::mintty - External}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data='/icon "%ProgramFiles%\git\usr\share\git\git-for-windows.ico"'/>
|
||||
<value name="Cmd1" type="string" data='"%ProgramFiles%\git\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd2" type="string" data='"%CMDER_ROOT%vendor\git-for-windows\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||
</key>
|
||||
<key name="Task7" modified="2023-06-05 13:15:38" build="221218">
|
||||
<value name="Name" type="string" data="{bash::mintty as Admin}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data="/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico""/>
|
||||
<value name="Cmd1" type="string" data="*"%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l"/>
|
||||
<value name="GuiArgs" type="string" data='/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico"'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd1" type="string" data='*"%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||
</key>
|
||||
<key name="Task6" modified="2018-02-22 06:05:13" build="171109">
|
||||
<key name="Task8" modified="2023-06-05 13:15:18" build="221218">
|
||||
<value name="Name" type="string" data="{bash::mintty}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data="/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico""/>
|
||||
<value name="Cmd1" type="string" data=""%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l"/>
|
||||
<value name="GuiArgs" type="string" data='/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico"'/>
|
||||
<value name="Cmd1" type="string" data='"%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd2" type="string" data=""%CMDER_ROOT%vendor\git-for-windows\usr\bin\mintty.exe" /bin/bash -l"/>
|
||||
</key>
|
||||
<key name="Task7" modified="2018-02-22 06:05:13" build="171109">
|
||||
<key name="Task9" modified="2023-06-05 13:14:44" build="221218">
|
||||
<value name="Name" type="string" data="{bash::bash as Admin}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||
<value name="Cmd1" type="string" data='*cmd /c "%ConEmuDir%\..\start_git_bash.cmd"'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd1" type="string" data="*set "PATH=%ConEmuDir%\..\git-for-windows\usr\bin;%PATH%" & %ConEmuDir%\..\git-for-windows\git-cmd.exe --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe "%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
||||
</key>
|
||||
<key name="Task8" modified="2018-02-22 06:05:13" build="171109">
|
||||
<key name="Task10" modified="2023-06-05 13:14:44" build="221218">
|
||||
<value name="Name" type="string" data="{bash::bash}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="set "PATH=%ConEmuDir%\..\git-for-windows\usr\bin;%PATH%" & %ConEmuDir%\..\git-for-windows\git-cmd.exe --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe "%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
||||
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd1" type="string" data='cmd /c "%ConEmuDir%\..\start_git_bash.cmd"'/>
|
||||
</key>
|
||||
<key name="Task9" modified="2018-03-23 23:26:53" build="180318">
|
||||
<key name="Task11" modified="2023-06-05 13:14:44" build="221218">
|
||||
<value name="Name" type="string" data="{WSL::bash}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data='-icon "%USERPROFILE%\AppData\Local\lxss\bash.ico"'/>
|
||||
<value name="Cmd1" type="string" data='set "PATH=%ConEmuBaseDirShort%\wsl;%PATH%" & %ConEmuBaseDirShort%\conemu-cyg-64.exe --wsl -cur_console:pm:/mnt'/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd1" type="string" data='set "PATH=%ConEmuBaseDirShort%\wsl;%PATH%" & %ConEmuBaseDirShort%\conemu-cyg-64.exe --wsl -cur_console:pm:/mnt'/>
|
||||
</key>
|
||||
</key>
|
||||
|
||||
<key name="Apps" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Count" type="long" data="0"/>
|
||||
</key>
|
||||
@@ -676,7 +692,7 @@
|
||||
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
|
||||
<value name="TabFlashChanged" type="long" data="8"/>
|
||||
<value name="TabModifiedSuffix" type="string" data="[*]"/>
|
||||
<key name="HotKeys" modified="2018-02-22 06:02:12" build="171109">
|
||||
<key name="HotKeys" modified="2023-06-05 13:14:44" build="221218">
|
||||
<value name="KeyMacroVersion" type="hex" data="02"/>
|
||||
<value name="Multi.Modifier" type="dword" data="00000011"/>
|
||||
<value name="Multi.ArrowsModifier" type="dword" data="0000005b"/>
|
||||
@@ -845,13 +861,13 @@
|
||||
<value name="KeyMacro31.Text" type="string" data=""/>
|
||||
<value name="KeyMacro32" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro32.Text" type="string" data=""/>
|
||||
<value name="CTS.VkBlock" type="hex" data="a4"/>
|
||||
<value name="CTS.VkText" type="hex" data="a0"/>
|
||||
<value name="CTS.VkBlock" type="hex" data="A4"/>
|
||||
<value name="CTS.VkText" type="hex" data="A0"/>
|
||||
<value name="CTS.VkAct" type="hex" data="00"/>
|
||||
<value name="CTS.VkPrompt" type="hex" data="00"/>
|
||||
<value name="FarGotoEditorVk" type="hex" data="a2"/>
|
||||
<value name="FarGotoEditorVk" type="hex" data="A2"/>
|
||||
<value name="DndLKey" type="hex" data="00"/>
|
||||
<value name="DndRKey" type="hex" data="a2"/>
|
||||
<value name="DndRKey" type="hex" data="A2"/>
|
||||
<value name="WndDragKey" type="dword" data="00121101"/>
|
||||
<value name="Multi.Unfasten" type="dword" data="00000000"/>
|
||||
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
|
||||
@@ -869,10 +885,16 @@
|
||||
<value name="Key.BufPrUp" type="dword" data="00121121"/>
|
||||
<value name="Key.BufPrDn" type="dword" data="00121122"/>
|
||||
<value name="Key.ResetTerm" type="dword" data="00000000"/>
|
||||
<value name="SetFocusParent" type="dword" data="0000a01b"/>
|
||||
<value name="CheckUpdates" type="dword" data="00105b55"/>
|
||||
<value name="Multi.NewWndConfirm" type="dword" data="00000000"/>
|
||||
<value name="CloseToRightKey" type="dword" data="00000000"/>
|
||||
<value name="Key.EditMenu" type="dword" data="00000000"/>
|
||||
<value name="Key.EditMenu2" type="dword" data="00000000"/>
|
||||
</key>
|
||||
<value name="StartCreateDelay" type="ulong" data="100"/>
|
||||
<value name="DefaultTerminalDebugLog" type="hex" data="00"/>
|
||||
<value name="LastMonitor" type="string" data="0,0,1440,1050"/>
|
||||
<value name="LastMonitor" type="string" data="1680,0,3600,1050"/>
|
||||
<value name="Restore2ActiveMon" type="hex" data="00"/>
|
||||
<value name="DownShowExOnTopMessage" type="hex" data="00"/>
|
||||
<value name="EnvironmentSet" type="multi">
|
||||
@@ -902,6 +924,15 @@
|
||||
<value name="StatusBar.Hide.TMode" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.RMode" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.CellI" type="hex" data="01"/>
|
||||
<value name="Language" type="string" data="en"/>
|
||||
<value name="AnsiLogCodes" type="hex" data="00"/>
|
||||
<value name="ResetTerminalConfirm" type="hex" data="01"/>
|
||||
<value name="RestoreInactive" type="hex" data="00"/>
|
||||
<value name="AutoReloadEnvironment" type="hex" data="01"/>
|
||||
<value name="AutoTrimSingleLine" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.InputGrouping" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.WMode" type="hex" data="01"/>
|
||||
</key>
|
||||
</key>
|
||||
</key>
|
||||
|
||||
|
||||
4
vendor/bin/cmder_diag.cmd
vendored
4
vendor/bin/cmder_diag.cmd
vendored
@@ -2,9 +2,9 @@
|
||||
|
||||
(echo.
|
||||
echo ------------------------------------
|
||||
echo set
|
||||
echo Get Cmder env variables...
|
||||
echo ------------------------------------
|
||||
set
|
||||
set | findstr -i -r "^aliases= architecture_bits ccall= cexec= ^clink_ ^cmder ^debug_output= fast_init= ^GIT_INSTALL_ROOT= ^git_locale= ^HOME= ^max_depth= ^nix_tools= ^path_position= ^path= ^PLINK_PROTOCOL= ^print_ ^SVN_SSH= ^time_init= ^user_aliases= ^verbose_output="
|
||||
|
||||
echo.
|
||||
echo ------------------------------------
|
||||
|
||||
3
vendor/bin/create-cmdercfg.cmd
vendored
Normal file
3
vendor/bin/create-cmdercfg.cmd
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
@echo off
|
||||
|
||||
powershell -executionpolicy bypass -f "%cmder_root%\vendor\bin\create-cmdercfg.ps1" -shell cmd -outfile "%CMDER_CONFIG_DIR%\user_init.cmd"
|
||||
30
vendor/bin/create-cmdercfg.ps1
vendored
Normal file
30
vendor/bin/create-cmdercfg.ps1
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter()]
|
||||
[string]$shell = 'cmd',
|
||||
[string]$outfile = "$env:cmder_config_dir\user_init.cmd"
|
||||
)
|
||||
|
||||
if ($shell -match 'powershell') {
|
||||
write-host "'$shell' is not supported at this time!"
|
||||
exit 0
|
||||
} elseif ($shell -match 'bash') {
|
||||
write-host "'$shell' is not supported at this time!"
|
||||
exit 0
|
||||
} elseif ($shell -notMatch 'cmd') {
|
||||
exit 0
|
||||
}
|
||||
|
||||
$CmderModulePath = Join-path $env:cmder_root "vendor/psmodules/"
|
||||
$CmderFunctions = Join-Path $CmderModulePath "Cmder.ps1"
|
||||
|
||||
. $CmderFunctions
|
||||
|
||||
if ($shell -match 'cmd') {
|
||||
write-host "Generating Cmder Config for '$shell' shell in '$outfile'..."
|
||||
templateExpand "$env:cmder_root\vendor\user_init.cmd.template" "$outfile"
|
||||
} elseif ($shell -match 'powershell') {
|
||||
write-host "'$shell' is not supported at this time!"
|
||||
} elseif ($shell -match 'bash') {
|
||||
write-host "'$shell' is not supported at this time!"
|
||||
}
|
||||
24
vendor/bin/timer.cmd
vendored
24
vendor/bin/timer.cmd
vendored
@@ -11,6 +11,7 @@ set /a hours=%end_h%-%start_h%
|
||||
set /a mins=%end_m%-%start_m%
|
||||
set /a secs=%end_s%-%start_s%
|
||||
set /a ms=%end_ms%-%start_ms%
|
||||
|
||||
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
|
||||
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
|
||||
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
|
||||
@@ -20,3 +21,26 @@ if 1%ms% lss 100 set ms=0%ms%
|
||||
:: Mission accomplished
|
||||
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
|
||||
echo Elapsed Time: %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)
|
||||
|
||||
:: cleanup
|
||||
set start=
|
||||
set end=
|
||||
set options=
|
||||
|
||||
set start_h=
|
||||
set start_m=
|
||||
set start_s=
|
||||
set start_ms=
|
||||
|
||||
set end_h=
|
||||
set end_m=
|
||||
set end_s=
|
||||
set end_ms=
|
||||
|
||||
set hours=
|
||||
set mins=
|
||||
set secs=
|
||||
set ms=
|
||||
|
||||
set totalsecs=
|
||||
|
||||
|
||||
4
vendor/clink.lua
vendored
4
vendor/clink.lua
vendored
@@ -702,6 +702,10 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
||||
end
|
||||
end
|
||||
|
||||
-- If Cmder is launched with '/c [folderPath]', indicating Cmder is installed globally and
|
||||
-- each user has a private '[folderPath]\config' folder, Clink won't know about the global
|
||||
-- '%cmder_root%\config dir, so we need to load scripts from there before . Clink loads lua
|
||||
-- scripts from the profile directory given to it when it was injected.
|
||||
if clink.get_env('CMDER_USER_CONFIG') then
|
||||
local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/'
|
||||
for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do
|
||||
|
||||
6
vendor/cmder.sh
vendored
6
vendor/cmder.sh
vendored
@@ -22,7 +22,11 @@ function runProfiled {
|
||||
}
|
||||
|
||||
# We do this for bash as admin sessions since $CMDER_ROOT is not being set
|
||||
if [ "$CMDER_ROOT" == "" ] ; then
|
||||
if [ -z "$CMDER_ROOT" ] && [ -n "$cmder_root" ] ; then
|
||||
export CMDER_ROOT=$(cygpath -u $cmder_root)
|
||||
fi
|
||||
|
||||
if [ -z "$CMDER_ROOT" ] ; then
|
||||
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac
|
||||
else
|
||||
case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac
|
||||
|
||||
19
vendor/cmder_exinit
vendored
19
vendor/cmder_exinit
vendored
@@ -26,15 +26,14 @@ function runProfiled {
|
||||
unset profile_d_scripts
|
||||
pushd "${1}" >/dev/null
|
||||
|
||||
if [ ! "x${ZSH_VERSION}" = "x" ]; then
|
||||
if [ -n "${ZSH_VERSION}" ]; then
|
||||
profile_d_scripts=$(ls *.zsh 2>/dev/null)
|
||||
elif [ ! "x${BASH_VERSION}" = "x" ]; then
|
||||
elif [ -n "${BASH_VERSION}" ]; then
|
||||
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
||||
fi
|
||||
|
||||
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
||||
if [ -n "${profile_d_scripts}" ] ; then
|
||||
for x in ${profile_d_scripts} ; do
|
||||
echo Sourcing "${1}/${x}"...
|
||||
. "${1}/${x}"
|
||||
done
|
||||
fi
|
||||
@@ -44,23 +43,23 @@ function runProfiled {
|
||||
# Check that we haven't already been sourced.
|
||||
[[ -z ${CMDER_EXINIT} ]] && CMDER_EXINIT="1" || return
|
||||
|
||||
if [ -z "$CMDER_ROOT" ] && [ -n "$cmder_root" ] ; then
|
||||
export CMDER_ROOT=$(cygpath -u $cmder_root)
|
||||
fi
|
||||
|
||||
# We do this for bash as admin sessions since $CMDER_ROOT is not being set
|
||||
if [ "$CMDER_ROOT" = "" -a "$ConEmuDir" != "" ] ; then
|
||||
if [ -d "${ConEmuDir}../../vendor" ] ; then
|
||||
if [ -d "${ConEmuDir}/../../vendor" ] ; then
|
||||
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac
|
||||
else
|
||||
echo "Running in ConEmu without Cmder, skipping Cmder integration."
|
||||
fi
|
||||
elif [ "$CMDER_ROOT" != "" ] ; then
|
||||
case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac
|
||||
fi
|
||||
|
||||
if [ ! "$CMDER_ROOT" = "" ] ; then
|
||||
if [ -n "$CMDER_ROOT" ] ; then
|
||||
# Remove any trailing '/'
|
||||
CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::')
|
||||
|
||||
echo "Using \"CMDER_ROOT\" at \"${CMDER_ROOT}\"."
|
||||
|
||||
export CMDER_ROOT
|
||||
|
||||
PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}
|
||||
|
||||
49
vendor/git-prompt.sh
vendored
49
vendor/git-prompt.sh
vendored
@@ -5,9 +5,9 @@ function getGitStatusSetting() {
|
||||
# Get all git config entries for the current repository without pager
|
||||
gitConfig=$(git --no-pager config -l 2>/dev/null) || return 0 # treat failure as enabled
|
||||
|
||||
# Check if git status for Cmder is disabled
|
||||
if [[ $gitConfig =~ (^|$'\n')cmder\.status=false($|$'\n') ]] || \
|
||||
[[ $gitConfig =~ (^|$'\n')cmder\.shstatus=false($|$'\n') ]]
|
||||
# Check if git status display for Cmder is disabled via config
|
||||
# Matches: cmder.status=false or cmder.shstatus=false (Bash-specific)
|
||||
if [[ $gitConfig =~ (^|$'\n')cmder\.(sh)?status=false($|$'\n') ]]
|
||||
then
|
||||
return 1 # disabled
|
||||
fi
|
||||
@@ -47,9 +47,41 @@ then
|
||||
. ~/.config/git/git-prompt.sh
|
||||
fi
|
||||
else
|
||||
# Taken parts from https://github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh
|
||||
|
||||
# Setup OSC 133 shell integration for Windows Terminal
|
||||
if [ -n "$WT_SESSION" ]; then
|
||||
__cmder_prompt_command() {
|
||||
local exit_code=$?
|
||||
# Emit OSC 133;D to mark the end of command execution with exit code
|
||||
printf '\e]133;D;%s\a' "$exit_code"
|
||||
return $exit_code
|
||||
}
|
||||
|
||||
__cmder_preexec() {
|
||||
# Emit OSC 133;C to mark the start of command execution
|
||||
printf '\e]133;C\a'
|
||||
}
|
||||
|
||||
# Append to PROMPT_COMMAND to emit sequences just before each prompt
|
||||
if [ -z "$PROMPT_COMMAND" ]; then
|
||||
PROMPT_COMMAND="__cmder_prompt_command"
|
||||
else
|
||||
PROMPT_COMMAND="__cmder_prompt_command;$PROMPT_COMMAND"
|
||||
fi
|
||||
|
||||
# Use DEBUG trap to emit OSC 133;C before command execution
|
||||
trap '__cmder_preexec' DEBUG
|
||||
fi
|
||||
|
||||
# Source: github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh
|
||||
PS1='\[\033]0;${TITLEPREFIX:+$TITLEPREFIX:}${PWD//[^[:ascii:]]/?}\007\]' # set window title to TITLEPREFIX (if set) and current working directory
|
||||
# PS1="$PS1"'\n' # new line (disabled)
|
||||
|
||||
if [ -n "$WT_SESSION" ]; then
|
||||
# Emit OSC 133;A to mark the start of prompt
|
||||
PS1="$PS1"'\e]133;A\a'
|
||||
fi
|
||||
|
||||
PS1="$PS1"'\[\033[32m\]' # change to green and bold
|
||||
PS1="$PS1"'\u@\h ' # user@host<space>
|
||||
PS1="$PS1${MSYSTEM:+\[\033[35m\]$MSYSTEM }" # show MSYSTEM in purple (if set)
|
||||
@@ -70,7 +102,7 @@ else
|
||||
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
||||
PS1="$PS1"'`__git_ps1`' # bash function
|
||||
else
|
||||
PS1="$PS1"'\[\033[37;1m\]' # change color to white
|
||||
PS1="$PS1"'\[\033[37;1m\]' # change color to white
|
||||
PS1="$PS1"'`getSimpleGitBranch`'
|
||||
fi
|
||||
fi
|
||||
@@ -80,9 +112,14 @@ else
|
||||
PS1="$PS1"'\[\033[30;1m\]' # change color to grey in bold
|
||||
PS1="$PS1"'λ ' # prompt: Cmder uses λ
|
||||
PS1="$PS1"'\[\033[0m\]' # reset color
|
||||
|
||||
if [ -n "$WT_SESSION" ]; then
|
||||
# Emit OSC 133;B to mark the end of prompt
|
||||
PS1="$PS1"'\[\e]133;B\a\]'
|
||||
fi
|
||||
fi
|
||||
|
||||
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
|
||||
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
|
||||
|
||||
# Evaluate all user-specific Bash completion scripts (if any)
|
||||
if test -z "$WINELOADERNOEXEC"
|
||||
|
||||
119
vendor/init.bat
vendored
119
vendor/init.bat
vendored
@@ -166,9 +166,24 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||
set CMDER_CLINK=0
|
||||
)
|
||||
|
||||
if defined CMDER_USER_CONFIG (
|
||||
if exist "%CMDER_ROOT%\config\user_init.cmd" (
|
||||
call "%CMDER_ROOT%\config\user_init.cmd"
|
||||
exit /b
|
||||
) else if exist "%CMDER_USER_CONFIG%\config\user_init.cmd" (
|
||||
call "%CMDER_USER_CONFIG%\config\user_init.cmd"
|
||||
exit /b
|
||||
)
|
||||
) else if exist "%CMDER_ROOT%\config\user_init.cmd" (
|
||||
call "%CMDER_ROOT%\config\user_init.cmd"
|
||||
exit /b
|
||||
)
|
||||
|
||||
if "%CMDER_CLINK%" == "1" (
|
||||
REM TODO: Detect if clink is already injected, if so goto :CLINK_FINISH
|
||||
goto :INJECT_CLINK
|
||||
) else if "%CMDER_CLINK%" == "2" (
|
||||
goto :CLINK_FINISH
|
||||
)
|
||||
|
||||
goto :SKIP_CLINK
|
||||
@@ -205,6 +220,7 @@ goto :SKIP_CLINK
|
||||
)
|
||||
|
||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
||||
set CMDER_CLINK=2
|
||||
|
||||
:: Check if a fatal error occurred when trying to inject Clink
|
||||
if errorlevel 2 (
|
||||
@@ -223,6 +239,9 @@ goto :SKIP_CLINK
|
||||
:: Revert back to plain cmd.exe prompt without clink
|
||||
prompt $E[1;32;49m$P$S$_$E[1;30;49mλ$S$E[0m
|
||||
|
||||
:: Add Windows Terminal shell integration support (OSC 133 sequences)
|
||||
if defined WT_SESSION (prompt $e]133;D$e\$e]133;A$e\$e]9;9;$P$e\%PROMPT%$e]133;B$e\)
|
||||
|
||||
chcp %cp%>nul
|
||||
|
||||
:CLINK_FINISH
|
||||
@@ -299,7 +318,7 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||
)
|
||||
|
||||
:SPECIFIED_GIT
|
||||
%print_debug% init.bat "Using /GIT_INSTALL_ROOT..."
|
||||
%print_debug% init.bat "Using specified GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%...."
|
||||
goto :CONFIGURE_GIT
|
||||
|
||||
:FOUND_GIT
|
||||
@@ -308,8 +327,13 @@ goto :CONFIGURE_GIT
|
||||
|
||||
:CONFIGURE_GIT
|
||||
%print_debug% init.bat "Using Git from '%GIT_INSTALL_ROOT%..."
|
||||
|
||||
:: Add git to the path
|
||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" ""
|
||||
%print_debug% init.bat "START - git.exe(prepend): Env Var - PATH=%path%"
|
||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" (
|
||||
set "path=%GIT_INSTALL_ROOT%\cmd;%path%"
|
||||
)
|
||||
%print_debug% init.bat "END - git.exe(prepend): Env Var - PATH=%path%"
|
||||
|
||||
:: Add the unix commands at the end to not shadow windows commands like `more` and `find`
|
||||
if %nix_tools% equ 1 (
|
||||
@@ -320,16 +344,30 @@ if %nix_tools% equ 1 (
|
||||
set "path_position="
|
||||
)
|
||||
|
||||
%print_debug% init.bat "START - nix_tools(%path_position%): Env Var - PATH=%path%"
|
||||
if %nix_tools% geq 1 (
|
||||
if exist "%GIT_INSTALL_ROOT%\mingw32" (
|
||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw32\bin" %path_position%
|
||||
if "%path_position%" == "append" (
|
||||
set "path=%path%;%GIT_INSTALL_ROOT%\mingw32\bin"
|
||||
) else (
|
||||
set "path=%GIT_INSTALL_ROOT%\mingw32\bin;%path%"
|
||||
)
|
||||
) else if exist "%GIT_INSTALL_ROOT%\mingw64" (
|
||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw64\bin" %path_position%
|
||||
if "%path_position%" == "append" (
|
||||
set "path=%path%;%GIT_INSTALL_ROOT%\mingw64\bin"
|
||||
) else (
|
||||
set "path=%GIT_INSTALL_ROOT%\mingw64\bin;%path%"
|
||||
)
|
||||
)
|
||||
if exist "%GIT_INSTALL_ROOT%\usr\bin" (
|
||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\usr\bin" %path_position%
|
||||
if "%path_position%" == "append" (
|
||||
set "path=%path%;%GIT_INSTALL_ROOT%\usr\bin"
|
||||
) else (
|
||||
set "path=%GIT_INSTALL_ROOT%\usr\bin;%path%"
|
||||
)
|
||||
)
|
||||
)
|
||||
%print_debug% init.bat "END - nix_tools(%path_position%): Env Var - PATH=%path%"
|
||||
|
||||
:SET_ENV
|
||||
|
||||
@@ -362,8 +400,7 @@ if defined git_locale (
|
||||
)
|
||||
endlocal && set LANG=%LANG%
|
||||
|
||||
%print_debug% init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
||||
%print_debug% init.bat "Found Git in: '%GIT_INSTALL_ROOT%'"
|
||||
%print_debug% init.bat "Found Git in: 'GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%'"
|
||||
goto :PATH_ENHANCE
|
||||
|
||||
:NO_GIT
|
||||
@@ -371,14 +408,32 @@ goto :PATH_ENHANCE
|
||||
endlocal
|
||||
|
||||
:PATH_ENHANCE
|
||||
%lib_path% enhance_path "%CMDER_ROOT%\vendor\bin"
|
||||
%print_debug% init.bat "START - vendor/bin(prepend): Env Var - PATH=%path%"
|
||||
set "path=%CMDER_ROOT%\vendor\bin;%path%"
|
||||
%print_debug% init.bat "END - vendor/bin(prepend): Env Var - PATH=%path%"
|
||||
|
||||
:USER_CONFIG_START
|
||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
||||
if defined CMDER_USER_BIN (
|
||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||
%print_debug% init.bat "START - bin(prepend): Env Var - PATH=%path%"
|
||||
if %max_depth% gtr 1 (
|
||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
||||
) else (
|
||||
set "path=%CMDER_ROOT%\bin;%path%"
|
||||
)
|
||||
%lib_path% enhance_path "%CMDER_ROOT%" append
|
||||
%print_debug% init.bat "END - bin(prepend): Env Var - PATH=%path%"
|
||||
|
||||
if defined CMDER_USER_BIN if defined CMDER_USER_ROOT (
|
||||
%print_debug% init.bat "START - user_bin(prepend): Env Var - PATH=%path%"
|
||||
if %max_depth% gtr 1 (
|
||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||
) else (
|
||||
set "path=%CMDER_USER_ROOT%\bin;%path%"
|
||||
)
|
||||
%print_debug% init.bat "END - user_bin(prepend): Env Var - PATH=!path!"
|
||||
)
|
||||
|
||||
%print_debug% init.bat "START - cmder_root(append): Env Var - PATH=%path%"
|
||||
set "path=%path%;%CMDER_ROOT%"
|
||||
%print_debug% init.bat "END - cmder_root(append): Env Var - PATH=%path%"
|
||||
|
||||
:: Drop *.bat and *.cmd files into "%CMDER_ROOT%\config\profile.d"
|
||||
:: to run them at startup.
|
||||
@@ -487,12 +542,40 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD
|
||||
|
||||
set initialConfig=
|
||||
|
||||
:CMDER_CONFIGURED
|
||||
if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
||||
if not exist "%CMDER_CONFIG_DIR%\user_init.cmd" (
|
||||
powershell -executionpolicy bypass -f "%cmder_root%\vendor\bin\create-cmdercfg.ps1" -shell cmd -outfile "%CMDER_CONFIG_DIR%\user_init.cmd"
|
||||
|
||||
set CMDER_INIT_END=%time%
|
||||
|
||||
if %time_init% gtr 0 (
|
||||
"%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
||||
if not exist "%CMDER_ROOT%\config\user_init.cmd" (
|
||||
%print_error% "Failed to generate Cmder config"
|
||||
)
|
||||
)
|
||||
|
||||
:CMDER_CONFIGURED
|
||||
if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
||||
set CMDER_INIT_END=%time%
|
||||
|
||||
if "%time_init%" == "1" if "%CMDER_INIT_END%" neq "" if "%CMDER_INIT_START%" neq "" (
|
||||
call "%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
||||
)
|
||||
|
||||
:CLEANUP
|
||||
set architecture_bits=
|
||||
set CMDER_ALIASES=
|
||||
set CMDER_INIT_END=
|
||||
set CMDER_INIT_START=
|
||||
set CMDER_USER_FLAGS=
|
||||
set CMDER_CLINK=
|
||||
set debug_output=
|
||||
set fast_init=
|
||||
set max_depth=
|
||||
set nix_tools=
|
||||
set path_position=
|
||||
set print_debug=
|
||||
set print_error=
|
||||
set print_verbose=
|
||||
set print_warning=
|
||||
set time_init=
|
||||
set verbose_output=
|
||||
set user_aliases=
|
||||
|
||||
exit /b
|
||||
|
||||
38
vendor/lib/lib_path.cmd
vendored
38
vendor/lib/lib_path.cmd
vendored
@@ -157,8 +157,12 @@ exit /b
|
||||
exit /b
|
||||
|
||||
:enhance_path_recursive
|
||||
call :set_path_recursive "%~1" "%~2" "%~3"
|
||||
exit /b
|
||||
|
||||
:set_path_recursive
|
||||
:::===============================================================================
|
||||
:::enhance_path_recursive - Add a directory and subs to the path env variable if
|
||||
:::set_path_recursive - Add a directory and subs to the path env variable if
|
||||
::: required.
|
||||
:::.
|
||||
:::include:
|
||||
@@ -167,7 +171,7 @@ exit /b
|
||||
:::.
|
||||
:::usage:
|
||||
:::.
|
||||
::: call "%~DP0lib_path" enhance_path_recursive "[dir_path]" [max_depth] [append]
|
||||
::: call "%~DP0lib_path" set_path_recursive "[dir_path]" [max_depth] [append]
|
||||
:::.
|
||||
:::required:
|
||||
:::.
|
||||
@@ -209,7 +213,11 @@ exit /b
|
||||
|
||||
if "%fast_init%" == "1" (
|
||||
if "%add_to_path%" neq "" (
|
||||
call :enhance_path "%add_to_path%" %position%
|
||||
if "%position%" == "append" (
|
||||
set "path=%path%;%add_to_path%"
|
||||
) else (
|
||||
set "path=%add_to_path%;%path%"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -218,15 +226,19 @@ exit /b
|
||||
exit /b
|
||||
)
|
||||
|
||||
%print_debug% :enhance_path_recursive "Env Var - add_path=%add_to_path%"
|
||||
%print_debug% :enhance_path_recursive "Env Var - position=%position%"
|
||||
%print_debug% :enhance_path_recursive "Env Var - depth=%depth%"
|
||||
%print_debug% :enhance_path_recursive "Env Var - max_depth=%max_depth%"
|
||||
%print_debug% :set_path_recursive "Env Var - add_path=%add_to_path%"
|
||||
%print_debug% :set_path_recursive "Env Var - position=%position%"
|
||||
%print_debug% :set_path_recursive "Env Var - depth=%depth%"
|
||||
%print_debug% :set_path_recursive "Env Var - max_depth=%max_depth%"
|
||||
|
||||
if %max_depth% gtr %depth% (
|
||||
if "%add_to_path%" neq "" (
|
||||
%print_debug% :enhance_path_recursive "Adding parent directory - '%add_to_path%'"
|
||||
call :enhance_path "%add_to_path%" %position%
|
||||
%print_debug% :set_path_recursive "Adding parent directory - '%add_to_path%'"
|
||||
if "%position%" == "append" (
|
||||
set "path=%path%;%add_to_path%"
|
||||
) else (
|
||||
set "path=%add_to_path%;%path%"
|
||||
)
|
||||
)
|
||||
call :set_depth
|
||||
call :loop_depth
|
||||
@@ -246,9 +258,9 @@ exit /b
|
||||
)
|
||||
|
||||
for /d %%i in ("%add_path%\*") do (
|
||||
%print_debug% :enhance_path_recursive "Env Var BEFORE - depth=%depth%"
|
||||
%print_debug% :enhance_path_recursive "Found Subdirectory - '%%~fi'"
|
||||
call :enhance_path_recursive "%%~fi" %depth% %max_depth% %position%
|
||||
%print_debug% :enhance_path_recursive "Env Var AFTER- depth=%depth%"
|
||||
%print_debug% :set_path_recursive "Env Var BEFORE - depth=%depth%"
|
||||
%print_debug% :set_path_recursive "Found Subdirectory - '%%~fi'"
|
||||
call :set_path_recursive "%%~fi" %depth% %max_depth% %position%
|
||||
%print_debug% :set_path_recursive "Env Var AFTER- depth=%depth%"
|
||||
)
|
||||
exit /b
|
||||
|
||||
77
vendor/profile.ps1
vendored
77
vendor/profile.ps1
vendored
@@ -7,15 +7,11 @@
|
||||
|
||||
$CMDER_INIT_START = Get-Date
|
||||
|
||||
# Compatibility with PS major versions <= 2
|
||||
# Determine the script root if not already set
|
||||
if (!$PSScriptRoot) {
|
||||
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
||||
}
|
||||
|
||||
if ($ENV:CMDER_USER_CONFIG) {
|
||||
Write-Verbose "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||
}
|
||||
|
||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set.
|
||||
if (!$ENV:CMDER_ROOT) {
|
||||
if ($ENV:ConEmuDir) {
|
||||
@@ -31,6 +27,12 @@ $ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
||||
# Recent PowerShell versions include PowerShellGet out of the box
|
||||
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue)
|
||||
|
||||
# Enable Debug and Verbose output if CMDER_DEBUG environment variable is set to '1' or 'true'
|
||||
if ($env:CMDER_DEBUG -and ($env:CMDER_DEBUG -match '^(1|true)$')) {
|
||||
$DebugPreference = 'Continue'
|
||||
$VerbosePreference = 'Continue'
|
||||
}
|
||||
|
||||
# Add Cmder modules directory to the autoload path.
|
||||
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
||||
|
||||
@@ -43,28 +45,40 @@ if (-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderMo
|
||||
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
||||
}
|
||||
|
||||
if ($env:CMDER_USER_CONFIG) {
|
||||
Write-Verbose "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||
}
|
||||
|
||||
# Read vendored Git Version
|
||||
$gitVersionVendor = Get-GitVersion -GitPath "$ENV:CMDER_ROOT\vendor\git-for-windows\cmd"
|
||||
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
||||
$gitVendorPath = Join-Path $ENV:CMDER_ROOT 'vendor\git-for-windows\cmd'
|
||||
$gitVersionVendor = Get-GitVersion -GitPath $gitVendorPath
|
||||
if (-not [string]::IsNullOrEmpty($gitVersionVendor)) {
|
||||
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
||||
} else {
|
||||
Write-Debug "GIT VENDOR is not present at '$gitVendorPath'"
|
||||
}
|
||||
|
||||
# Get user installed Git version(s) if found, and compare them with vendored version.
|
||||
foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
||||
Write-Debug "GIT PATH: {$git.Path}"
|
||||
Write-Debug "GIT USER PATH: $($git.Path)"
|
||||
$gitDir = Split-Path -Path $git.Path
|
||||
$gitDir = Get-GitShimPath -GitPath $gitDir
|
||||
$gitVersionUser = Get-GitVersion -GitPath $gitDir
|
||||
Write-Debug "GIT USER: ${gitVersionUser}"
|
||||
Write-Debug "GIT USER VERSION: ${gitVersionUser}"
|
||||
|
||||
$useGitVersion = Compare-GitVersion -UserVersion $gitVersionUser -VendorVersion $gitVersionVendor
|
||||
Write-Debug "Using Git Version: ${useGitVersion}"
|
||||
|
||||
# Use user installed Git
|
||||
if ($null -eq $gitPathUser) {
|
||||
Write-Debug "Detected Git from mingw bin directory"
|
||||
Write-Debug "Git Dir: ${gitDir}"
|
||||
if ($gitDir -match '\\mingw32\\bin' -or $gitDir -match '\\mingw64\\bin') {
|
||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 12))
|
||||
$gitPathUser = $gitDir.subString(0, $gitDir.Length - 12)
|
||||
} else {
|
||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 4))
|
||||
$gitPathUser = $gitDir.subString(0, $gitDir.Length - 4)
|
||||
}
|
||||
Write-Debug "Git Path User: ${gitDir}"
|
||||
}
|
||||
|
||||
if ($useGitVersion -eq $gitVersionUser) {
|
||||
@@ -90,7 +104,7 @@ if ($null -ne $ENV:GIT_INSTALL_ROOT) {
|
||||
|
||||
# Create 'vi' alias for 'vim' if vim is available
|
||||
if (Get-Command -Name "vim" -ErrorAction SilentlyContinue) {
|
||||
New-Alias -name "vi" -value vim
|
||||
New-Alias -name "vi" -value vim -errorAction SilentlyContinue
|
||||
}
|
||||
|
||||
# PSReadline configuration
|
||||
@@ -98,8 +112,7 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
||||
# Display an extra prompt line between the prompt and the command input
|
||||
Set-PSReadlineOption -ExtraPromptLineCount 1
|
||||
|
||||
# Add OSC 133;C support for Windows Terminal shell integration
|
||||
# This marks the start of command output (emitted when Enter is pressed)
|
||||
# Invoked when Enter is pressed to submit a command
|
||||
if ($env:WT_SESSION) {
|
||||
Set-PSReadLineKeyHandler -Key Enter -ScriptBlock {
|
||||
# Get the current command line
|
||||
@@ -110,7 +123,7 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
||||
# Accept the line first
|
||||
[Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()
|
||||
|
||||
# Emit OSC 133;C sequence to mark start of command output
|
||||
# Emit OSC 133;C to mark start of command output
|
||||
# This is written directly to the console after the command is accepted
|
||||
[Console]::Write("$([char]0x1B)]133;C$([char]7)")
|
||||
}
|
||||
@@ -221,20 +234,25 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
||||
$lastSUCCESS = $?
|
||||
$realLastExitCode = $LastExitCode
|
||||
|
||||
# Emit OSC 9;9 sequence for Windows Terminal directory tracking
|
||||
# This enables "Duplicate Tab" and "Split Pane" to preserve the working directory
|
||||
# Only active in Windows Terminal ($env:WT_SESSION) or ConEmu ($env:ConEmuPID)
|
||||
$loc = $executionContext.SessionState.Path.CurrentLocation
|
||||
if (($env:WT_SESSION -or $env:ConEmuPID) -and $loc.Provider.Name -eq "FileSystem") {
|
||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]9;9;`"$($loc.ProviderPath)`"$([char]0x1B)\"
|
||||
}
|
||||
# Terminal-specific escape sequences for Windows Terminal and ConEmu
|
||||
if ($env:WT_SESSION -or $env:ConEmuPID) {
|
||||
# Emit OSC 133;D to mark the end of command execution with exit code
|
||||
if ($env:WT_SESSION) {
|
||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;D;$realLastExitCode$([char]7)"
|
||||
}
|
||||
|
||||
# Emit OSC 133;A sequence for Windows Terminal shell integration
|
||||
# This marks the start of the prompt
|
||||
# Enables features like command navigation, selection, and visual separators
|
||||
# Only active in Windows Terminal ($env:WT_SESSION)
|
||||
if ($env:WT_SESSION) {
|
||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;A$([char]7)"
|
||||
# Emit OSC 9;9 to enable directory tracking
|
||||
# Enables "Duplicate Tab" and "Split Pane" to preserve the working directory
|
||||
$loc = $executionContext.SessionState.Path.CurrentLocation
|
||||
if ($loc.Provider.Name -eq "FileSystem") {
|
||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]9;9;`"$($loc.ProviderPath)`"$([char]0x1B)\"
|
||||
}
|
||||
|
||||
# Emit OSC 133;A to mark the start of the prompt
|
||||
# Enables features like command navigation, selection, and visual separators
|
||||
if ($env:WT_SESSION) {
|
||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;A$([char]7)"
|
||||
}
|
||||
}
|
||||
|
||||
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
||||
@@ -246,8 +264,7 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
||||
CmderPrompt
|
||||
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||
|
||||
# Emit OSC 133;B sequence for Windows Terminal shell integration
|
||||
# This marks the start of command input (after prompt, before user types)
|
||||
# Emit OSC 133;B to mark the start of command input (after prompt, before user types)
|
||||
if ($env:WT_SESSION) {
|
||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;B$([char]7)"
|
||||
}
|
||||
|
||||
26
vendor/psmodules/Cmder.ps1
vendored
26
vendor/psmodules/Cmder.ps1
vendored
@@ -249,3 +249,29 @@ function Get-GitStatusSetting {
|
||||
|
||||
return $true
|
||||
}
|
||||
|
||||
function yOrn( $question ) {
|
||||
Do {
|
||||
$Answer = Read-Host -Prompt "`n${question}? (y/n) "
|
||||
}
|
||||
Until ($Answer -eq 'y' -or $Answer -eq 'n' -or $Answer -eq 'yes' -or $Answer -eq 'no')
|
||||
|
||||
return $Answer
|
||||
}
|
||||
|
||||
function templateExpand($template_filename, $outfile) {
|
||||
$template = Get-Content "$template_filename" -Raw
|
||||
|
||||
$expanded = Invoke-Expression "@`"`r`n$template`r`n`"@"
|
||||
|
||||
$overwrite = 'y'
|
||||
if ((test-path "$outfile")) {
|
||||
$overwrite = yOrn "'$outfile' already exists do you want to overwrite it"
|
||||
}
|
||||
|
||||
if ($overwrite -match 'y') {
|
||||
$expanded | out-file -ErrorAction silentlycontinue -encoding ascii "$outfile"
|
||||
} else {
|
||||
write-host "Skipping Cmder '$shell' config generation at user request!"
|
||||
}
|
||||
}
|
||||
|
||||
51
vendor/start_git_bash.cmd
vendored
Normal file
51
vendor/start_git_bash.cmd
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
@echo off
|
||||
|
||||
if not defined CMDER_ROOT (
|
||||
if defined ConEmuDir (
|
||||
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do (
|
||||
set "CMDER_ROOT=%%~fi"
|
||||
)
|
||||
) else (
|
||||
for /f "delims=" %%i in ("%~dp0\..") do (
|
||||
set "CMDER_ROOT=%%~fi"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if defined ConEmuDir (
|
||||
set "gitCommand=--command=%ConEmuBaseDirShort%\conemu-msys2-64.exe"
|
||||
)
|
||||
|
||||
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||
set "PATH=%CMDER_ROOT%\vendor\git-for-windows\usr\bin;%PATH%"
|
||||
set "gitCmd=%CMDER_ROOT%\vendor\git-for-windows\git-cmd.exe"
|
||||
set "bashCmd=%CMDER_ROOT%\vendor\git-for-windows\usr\bin\bash.exe"
|
||||
) else if exist "%ProgramFiles%\git" (
|
||||
set "PATH=%ProgramFiles%\git\usr\bin;%PATH%"
|
||||
set "gitCmd=%ProgramFiles%\git\git-cmd.exe"
|
||||
set "bashCmd=%ProgramFiles%\git\usr\bin\bash.exe"
|
||||
if not exist "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh" (
|
||||
echo Run 'mklink "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh" "%CMDER_ROOT%\vendor\cmder_exinit"' in 'cmd::Cmder as Admin' to use Cmder with external Git Bash
|
||||
echo.
|
||||
echo or
|
||||
echo.
|
||||
echo Run 'echo "" ^> "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh"' in 'cmd::Cmder as Admin' to disable this message.
|
||||
)
|
||||
) else if exist "%ProgramFiles(x86)%\git" (
|
||||
set "PATH=%ProgramFiles(x86)%\git\usr\bin;%PATH%"
|
||||
set "gitCmd=%ProgramFiles(x86)%\git\git-cmd.exe"
|
||||
set "bashCmd=%ProgramFiles(x86)%\git\usr\bin\bash.exe"
|
||||
if not exist "%ProgramFiles(x86)%\git\etc\profile.d\cmder_exinit.sh" (
|
||||
echo Run 'mklink "%ProgramFiles^(x86^)%\git\etc\profile.d\cmder_exinit.sh" "%CMDER_ROOT%\vendor\cmder_exinit"' in 'cmd::Cmder as Admin' to use Cmder with external Git Bash
|
||||
echo.
|
||||
echo or
|
||||
echo.
|
||||
echo Run 'echo "" ^> "%ProgramFiles^(x86^)%\git\etc\profile.d\cmder_exinit.sh"' in 'cmd::Cmder as Admin' to disable this message.
|
||||
)
|
||||
)
|
||||
|
||||
if defined ConEmuDir (
|
||||
"%gitCmd%" --no-cd %gitCommand% "%bashCmd%" --login -i
|
||||
) else (
|
||||
"%bashCmd%" --login -i
|
||||
)
|
||||
40
vendor/start_git_mintty.cmd
vendored
Normal file
40
vendor/start_git_mintty.cmd
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
@echo off
|
||||
|
||||
if not defined CMDER_ROOT (
|
||||
if defined ConEmuDir (
|
||||
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do (
|
||||
set "CMDER_ROOT=%%~fi"
|
||||
)
|
||||
) else (
|
||||
for /f "delims=" %%i in ("%~dp0\..") do (
|
||||
set "CMDER_ROOT=%%~fi"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||
set "PATH=%CMDER_ROOT%\vendor\git-for-windows\usr\bin;%PATH%"
|
||||
set "gitCmd=%CMDER_ROOT%\vendor\git-for-windows\usr\bin\mintty.exe"
|
||||
) else if exist "%ProgramFiles%\git" (
|
||||
set "PATH=%ProgramFiles%\git\usr\bin;%PATH%"
|
||||
set "gitCmd=%ProgramFiles%\git\usr\bin\mintty.exe"
|
||||
if not exist "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh" (
|
||||
echo Run 'mklink "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh" "%CMDER_ROOT%\vendor\cmder_exinit"' in 'cmd::Cmder as Admin' to use Cmder with external Git Bash
|
||||
echo.
|
||||
echo or
|
||||
echo.
|
||||
echo Run 'echo "" ^> "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh"' in 'cmd::Cmder as Admin' to disable this message.
|
||||
)
|
||||
) else if exist "%ProgramFiles(x86)%\git" (
|
||||
set "PATH=%ProgramFiles(x86)%\git\usr\bin;%PATH%"
|
||||
set "gitCmd=%ProgramFiles(x86)%\git\usr\bin\mintty.exe"
|
||||
if not exist "%ProgramFiles(x86)%\git\etc\profile.d\cmder_exinit.sh" (
|
||||
echo Run 'mklink "%ProgramFiles^(x86^)%\git\etc\profile.d\cmder_exinit.sh" "%CMDER_ROOT%\vendor\cmder_exinit"' in 'cmd::Cmder as Admin' to use Cmder with external Git Bash
|
||||
echo.
|
||||
echo or
|
||||
echo.
|
||||
echo Run 'echo "" ^> "%ProgramFiles^(x86^)%\git\etc\profile.d\cmder_exinit.sh"' in 'cmd::Cmder as Admin' to disable this message.
|
||||
)
|
||||
)
|
||||
|
||||
"%gitCmd%" /bin/bash -l
|
||||
174
vendor/user_init.cmd.template
vendored
Normal file
174
vendor/user_init.cmd.template
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
@echo off
|
||||
|
||||
:: This file was autogenerated by Cmder init.bat
|
||||
::
|
||||
:: It is yours to edit and will not be touched again by Cmder.
|
||||
::
|
||||
:: If you wish to recreate this file simply rename it and Cmder will re-create it the next time it is run
|
||||
:: or run the followin command from a Cmder shell:
|
||||
::
|
||||
:: powershell -f %cmder_root%\vendor\bin\create-cmdercfg.ps1 -shell cmd [-outfile "[filename]"]
|
||||
::
|
||||
|
||||
if "%CMDER_CLINK%" == "1" (
|
||||
goto :INJECT_CLINK
|
||||
) else if "%CMDER_CLINK%" == "2" if defined WT_PROFILE_ID (
|
||||
goto :INJECT_CLINK
|
||||
) else if "%CMDER_CLINK%" == "2" (
|
||||
goto :CLINK_FINISH
|
||||
)
|
||||
|
||||
goto :SKIP_CLINK
|
||||
|
||||
:INJECT_CLINK
|
||||
%print_verbose% "Injecting Clink!"
|
||||
|
||||
:: Check if Clink is not present
|
||||
if not exist "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" (
|
||||
goto :SKIP_CLINK
|
||||
)
|
||||
|
||||
:: Run Clink
|
||||
if not exist "%CMDER_CONFIG_DIR%\settings" if not exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
||||
echo Generating Clink initial settings in "%CMDER_CONFIG_DIR%\clink_settings"
|
||||
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_CONFIG_DIR%\clink_settings"
|
||||
echo Additional *.lua files in "%CMDER_CONFIG_DIR%" are loaded on startup.
|
||||
)
|
||||
|
||||
if not exist "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" (
|
||||
echo Creating Cmder prompt config file: "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||
)
|
||||
|
||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
||||
|
||||
if errorlevel 1 (
|
||||
%print_error% "Clink initialization has failed with error code: %errorlevel%"
|
||||
goto :CLINK_FINISH
|
||||
)
|
||||
|
||||
set CMDER_CLINK=2
|
||||
goto :CLINK_FINISH
|
||||
|
||||
:SKIP_CLINK
|
||||
%print_warning% "Skipping Clink Injection!"
|
||||
|
||||
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
|
||||
chcp 65001>nul
|
||||
|
||||
:: Revert back to plain cmd.exe prompt without clink
|
||||
prompt `$E[1;32;49m`$P`$S`$_`$E[1;30;49mλ`$S`$E[0m
|
||||
|
||||
chcp %cp%>nul
|
||||
|
||||
:CLINK_FINISH
|
||||
if not defined GIT_INSTALL_ROOT set "GIT_INSTALL_ROOT=$env:GIT_INSTALL_ROOT"
|
||||
if not defined SVN_SSH set "SVN_SSH=$env:SVN_SSH"
|
||||
if not defined git_locale set git_locale=$env:git_locale
|
||||
if not defined LANG set LANG=$env:lang
|
||||
if not defined user_aliases set "user_aliases=$env:user_aliases"
|
||||
if not defined aliases set "aliases=%user_aliases%"
|
||||
if not defined HOME set "HOME=%USERPROFILE%"
|
||||
|
||||
set PLINK_PROTOCOL=$env:PLINK_PROTOCOL
|
||||
|
||||
set "path=%GIT_INSTALL_ROOT%\cmd;%path%"
|
||||
|
||||
set path_position=append
|
||||
if %nix_tools% equ 1 (
|
||||
set "path_position=append"
|
||||
) else (
|
||||
set "path_position="
|
||||
)
|
||||
|
||||
if %nix_tools% geq 1 (
|
||||
if exist "%GIT_INSTALL_ROOT%\mingw32" (
|
||||
if "%path_position%" == "append" (
|
||||
set "path=%path%;%GIT_INSTALL_ROOT%\mingw32\bin"
|
||||
) else (
|
||||
set "path=%GIT_INSTALL_ROOT%\mingw32\bin;%path%"
|
||||
)
|
||||
) else if exist "%GIT_INSTALL_ROOT%\mingw64" (
|
||||
if "%path_position%" == "append" (
|
||||
set "path=%path%;%GIT_INSTALL_ROOT%\mingw64\bin"
|
||||
) else (
|
||||
set "path=%GIT_INSTALL_ROOT%\mingw64\bin;%path%"
|
||||
)
|
||||
)
|
||||
if exist "%GIT_INSTALL_ROOT%\usr\bin" (
|
||||
if "%path_position%" == "append" (
|
||||
set "path=%path%;%GIT_INSTALL_ROOT%\usr\bin"
|
||||
) else (
|
||||
set "path=%GIT_INSTALL_ROOT%\usr\bin;%path%"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
set "path=%CMDER_ROOT%\vendor\bin;%path%"
|
||||
|
||||
:USER_CONFIG_START
|
||||
if %max_depth% gtr 1 (
|
||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
||||
) else (
|
||||
set "path=%CMDER_ROOT%\bin;%path%"
|
||||
)
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
if defined CMDER_USER_BIN (
|
||||
if %max_depth% gtr 1 (
|
||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||
) else (
|
||||
set "path=%CMDER_USER_ROOT%\bin;%path%"
|
||||
)
|
||||
)
|
||||
endlocal && set "path=%path%"
|
||||
|
||||
set "path=%path%;%CMDER_ROOT%"
|
||||
|
||||
call "%user_aliases%"
|
||||
|
||||
%lib_profile% run_profile_d "%CMDER_ROOT%\config\profile.d"
|
||||
if defined CMDER_USER_CONFIG (
|
||||
%lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
||||
)
|
||||
|
||||
call "%CMDER_ROOT%\config\user_profile.cmd"
|
||||
if defined CMDER_USER_CONFIG (
|
||||
if exist "%CMDER_USER_CONFIG%\user_profile.cmd" (
|
||||
call "%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||
)
|
||||
)
|
||||
|
||||
set "path=%path:;;=;%
|
||||
|
||||
:CMDER_CONFIGURED
|
||||
if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
||||
|
||||
set CMDER_INIT_END=%time%
|
||||
|
||||
if "%time_init%" == "1" if "%CMDER_INIT_END%" neq "" if "%CMDER_INIT_START%" neq "" (
|
||||
call "%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
||||
)
|
||||
|
||||
:CLEANUP
|
||||
set architecture_bits=
|
||||
set CMDER_ALIASES=
|
||||
set CMDER_INIT_END=
|
||||
set CMDER_INIT_START=
|
||||
set CMDER_USER_FLAGS=
|
||||
set debug_output=
|
||||
set fast_init=
|
||||
set max_depth=
|
||||
set nix_tools=
|
||||
set path_position=
|
||||
set print_debug=
|
||||
set print_error=
|
||||
set print_verbose=
|
||||
set print_warning=
|
||||
set time_init=
|
||||
set verbose_output=
|
||||
set user_aliases=
|
||||
|
||||
exit /b
|
||||
|
||||
|
||||
390
vendor/windows_terminal_default_settings.json
vendored
Normal file
390
vendor/windows_terminal_default_settings.json
vendored
Normal file
@@ -0,0 +1,390 @@
|
||||
{
|
||||
"$help": "https://aka.ms/terminal-documentation",
|
||||
"$schema": "https://aka.ms/terminal-profiles-schema",
|
||||
"actions": [
|
||||
{
|
||||
"command": {
|
||||
"action": "copy",
|
||||
"singleLine": false
|
||||
},
|
||||
"keys": "ctrl+shift+c"
|
||||
},
|
||||
{
|
||||
"command": "unbound",
|
||||
"keys": "ctrl+v"
|
||||
},
|
||||
{
|
||||
"command": "unbound",
|
||||
"keys": "ctrl+c"
|
||||
},
|
||||
{
|
||||
"command": "paste"
|
||||
},
|
||||
{
|
||||
"command": "find",
|
||||
"keys": "ctrl+shift+f"
|
||||
},
|
||||
{
|
||||
"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": {
|
||||
"colorScheme": "One Half Dark",
|
||||
"font": {
|
||||
"face": "Cascadia Code"
|
||||
}
|
||||
},
|
||||
"list": [
|
||||
{
|
||||
"colorScheme": "One Half Dark",
|
||||
"commandline": "cmd /k \"%WT_SETTINGS_DIR%\\..\\..\\init.bat\"",
|
||||
"guid": "{48946353-ebe8-4571-a591-7d609f31327a}",
|
||||
"hidden": false,
|
||||
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder.ico",
|
||||
"name": "Cmder",
|
||||
"startingDirectory": null,
|
||||
"tabTitle": "Cmder",
|
||||
"useAtlasEngine": false
|
||||
},
|
||||
{
|
||||
"colorScheme": "One Half Dark",
|
||||
"commandline": "%SystemRoot%\\System32\\cmd.exe /k \"%WT_SETTINGS_DIR%\\..\\..\\init.bat\"",
|
||||
"elevate": true,
|
||||
"guid": "{bdd957d0-c15a-49e6-9816-14b02351a071}",
|
||||
"hidden": false,
|
||||
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_red.ico",
|
||||
"name": "Cmder as Admin",
|
||||
"startingDirectory": null,
|
||||
"tabTitle": "Cmder as Admin"
|
||||
},
|
||||
{
|
||||
"colorScheme": "One Half Dark",
|
||||
"commandline": "PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command \"Invoke-Expression 'Import-Module ''%WT_SETTINGS_DIR%\\..\\..\\profile.ps1'''\"",
|
||||
"guid": "{eb1f6578-ce9d-47a9-a8c7-9b3fdd22302d}",
|
||||
"hidden": false,
|
||||
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_orange.ico",
|
||||
"name": "Cmder - PowerShell",
|
||||
"startingDirectory": null,
|
||||
"tabTitle": "Cmder",
|
||||
"useAtlasEngine": false
|
||||
},
|
||||
{
|
||||
"colorScheme": "One Half Dark",
|
||||
"commandline": "PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command \"Invoke-Expression 'Import-Module ''%WT_SETTINGS_DIR%\\..\\..\\profile.ps1'''\"",
|
||||
"elevate": true,
|
||||
"guid": "{c5225c3e-8619-4145-8182-2800814eeb17}",
|
||||
"hidden": false,
|
||||
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_purple.ico",
|
||||
"name": "Cmder - PowerShell as Admin",
|
||||
"startingDirectory": null,
|
||||
"tabTitle": "Cmder - PowerShell as Admin",
|
||||
"useAtlasEngine": false
|
||||
},
|
||||
{
|
||||
"colorScheme": "One Half Dark",
|
||||
"commandline": "%WT_SETTINGS_DIR%\\..\\..\\start_git_bash.cmd",
|
||||
"guid": "{c5c298e9-010e-4b8c-bc55-e3df81846b4c}",
|
||||
"hidden": false,
|
||||
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_blue.ico",
|
||||
"name": "Cmder - Bash",
|
||||
"startingDirectory": null,
|
||||
"tabTitle": "Cmder - Bash"
|
||||
},
|
||||
{
|
||||
"colorScheme": "One Half Dark",
|
||||
"commandline": "%WT_SETTINGS_DIR%\\..\\..\\start_git_bash.cmd",
|
||||
"elevate": true,
|
||||
"guid": "{545eb9ed-4c1c-49b3-8cc6-7eb41bd280ff}",
|
||||
"hidden": false,
|
||||
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_yellow.ico",
|
||||
"name": "Cmder - Bash as Admin",
|
||||
"startingDirectory": null,
|
||||
"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": "#282828",
|
||||
"black": "#282828",
|
||||
"blue": "#458588",
|
||||
"brightBlack": "#928374",
|
||||
"brightBlue": "#83A598",
|
||||
"brightCyan": "#8EC07C",
|
||||
"brightGreen": "#B8BB26",
|
||||
"brightPurple": "#D3869B",
|
||||
"brightRed": "#FB4934",
|
||||
"brightWhite": "#EBDBB2",
|
||||
"brightYellow": "#FABD2F",
|
||||
"cursorColor": "#FFFFFF",
|
||||
"cyan": "#689D6A",
|
||||
"foreground": "#EBDBB2",
|
||||
"green": "#98971A",
|
||||
"name": "Gruvbox Dark",
|
||||
"purple": "#B16286",
|
||||
"red": "#CC241D",
|
||||
"selectionBackground": "#FFFFFF",
|
||||
"white": "#A89984",
|
||||
"yellow": "#D79921"
|
||||
},
|
||||
{
|
||||
"background": "#272822",
|
||||
"black": "#3E3D32",
|
||||
"blue": "#03395C",
|
||||
"brightBlack": "#272822",
|
||||
"brightBlue": "#66D9EF",
|
||||
"brightCyan": "#66D9EF",
|
||||
"brightGreen": "#A6E22E",
|
||||
"brightPurple": "#AE81FF",
|
||||
"brightRed": "#F92672",
|
||||
"brightWhite": "#F8F8F2",
|
||||
"brightYellow": "#FD971F",
|
||||
"cursorColor": "#FFFFFF",
|
||||
"cyan": "#66D9EF",
|
||||
"foreground": "#F8F8F2",
|
||||
"green": "#A6E22E",
|
||||
"name": "Monokai",
|
||||
"purple": "#AE81FF",
|
||||
"red": "#F92672",
|
||||
"selectionBackground": "#FFFFFF",
|
||||
"white": "#F8F8F2",
|
||||
"yellow": "#FFE792"
|
||||
},
|
||||
{
|
||||
"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": [],
|
||||
"useAcrylicInTabRow": true,
|
||||
"wordDelimiters": " ()\"',;<>!@#$%^&*|+=[]{}~?\u2502"
|
||||
}
|
||||
Reference in New Issue
Block a user