Discovered chalk. Via which I discovered Cmder, a (portable) console emulator for Windows based on ConEmu. Which is itself a console emulator for Windows.
I was aware of Console2 which I have previously used (discovered that via Scott Hanselman) but Cmder seems to be in active development, is prettier, and has a lot more features.
Notice I have multiple tabs open; they can run PowerShell, cmd.exe
, Bash, Putty(!), scripts you specify; tabs running in an admin context have a shield next to them; I can select themes for each tab (the default is Monokai which is quite pretty); I have a status bar which can show various bits and pieces of info; and it’s all in one window whose tabs I can keep switching through (I can create hotkeys to start tabs with a particular task and even set a bunch of tabs to start as one task and then select that task as the default).
I couldn’t find much help on how to use Cmder until I realized I can use the documentation of ConEmu as it’s based on the latter. For instance, this page has details on the -new_console
switches I use above. This page has details on the various command-line switches that ConEmu and Cmder accept. Scott Hanselman has a write-up on ConEmu which is worth reading as he goes into much more of the features.
Here’s my task definitions in case it helps anyone:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
<key name="Task1" modified="2015-03-05 06:24:11" build="140707"> <value name="Name" type="string" data="{Default}"/> <value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\cmder.exe""/> <value name="Cmd1" type="string" data="> powershell -new_console:d:%USERPROFILE% -new_console:P:"<PowerShell>" -new_console:t:"PowerShell" "/> <value name="Active" type="dword" data="00000001"/> <value name="Count" type="dword" data="00000004"/> <value name="Hotkey" type="dword" data="00000000"/> <value name="Cmd2" type="string" data="cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE% -new_console:t:"Cmd""/> <value name="Cmd3" type="string" data="powershell -new_console:d:%USERPROFILE% -new_console:P:"<PowerShell>" -new_console:t:"PowerShell Admin" -new_console:a"/> <value name="Cmd4" type="string" data="cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE% -new_console:t:"Cmd Admin" -new_console:a "/> </key> <key name="Task2" modified="2015-03-05 06:24:11" build="140707"> <value name="Name" type="string" data="{PowerShell}"/> <value name="GuiArgs" type="string" data=""/> <value name="Cmd1" type="string" data="powershell -new_console:d:%USERPROFILE% -new_console:P:"<PowerShell>" -new_console:t:"PowerShell" "/> <value name="Active" type="dword" data="00000000"/> <value name="Count" type="dword" data="00000001"/> <value name="Hotkey" type="dword" data="00001150"/> </key> <key name="Task3" modified="2015-03-05 06:24:11" build="140707"> <value name="Name" type="string" data="{PowerShell (Admin)}"/> <value name="Hotkey" type="dword" data="00000000"/> <value name="GuiArgs" type="string" data=""/> <value name="Cmd1" type="string" data="powershell -new_console:d:%USERPROFILE% -new_console:P:"<PowerShell>" -new_console:t:"PowerShell Admin" -new_console:a"/> <value name="Active" type="dword" data="00000000"/> <value name="Count" type="dword" data="00000001"/> </key> <key name="Task4" modified="2015-03-05 06:24:11" build="140707"> <value name="Name" type="string" data="{cmd}"/> <value name="Hotkey" type="dword" data="00000000"/> <value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\cmder.exe""/> <value name="Cmd1" type="string" data="cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE% -new_console:t:"Cmd""/> <value name="Active" type="dword" data="00000000"/> <value name="Count" type="dword" data="00000001"/> </key> <key name="Task5" modified="2015-03-05 06:24:11" build="140707"> <value name="Name" type="string" data="{cmd (Admin)}"/> <value name="Hotkey" type="dword" data="00000000"/> <value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\cmder.exe""/> <value name="Cmd1" type="string" data="cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE% -new_console:t:"Cmd Admin" -new_console:a "/> <value name="Active" type="dword" data="00000000"/> <value name="Count" type="dword" data="00000001"/> </key> <key name="Task6" modified="2015-03-05 06:24:11" build="140707"> <value name="Name" type="string" data="{Git bash}"/> <value name="Hotkey" type="dword" data="00000000"/> <value name="GuiArgs" type="string" data=""/> <value name="Cmd1" type="string" data=""%ProgramFiles%\Git\bin\sh.exe" --login -i"/> <value name="Active" type="dword" data="00000000"/> <value name="Count" type="dword" data="00000001"/> <value name="Cmd2" type="string" data="cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE% -new_console:t:"Cmd""/> <value name="Cmd3" type="string" data="powershell -new_console:d:%USERPROFILE% -new_console:P:"<PowerShell>" -new_console:t:"PowerShell Admin" -new_console:a"/> <value name="Cmd4" type="string" data="cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE% -new_console:t:"Cmd Admin" -new_console:a "/> </key> <key name="Task7" modified="2015-03-05 06:24:11" build="140707"> <value name="Name" type="string" data="{Azure PowerShell}"/> <value name="Hotkey" type="dword" data="00000000"/> <value name="GuiArgs" type="string" data=""/> <value name="Cmd1" type="string" data="powershell -NoExit -ExecutionPolicy Bypass -File "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Services\ShortcutStartup.ps1" -new_console:P:"<Murena scheme>" -new_console:t:"Azure""/> <value name="Active" type="dword" data="00000000"/> <value name="Count" type="dword" data="00000001"/> </key> |
Notice a single task can start multiple commands (tasks), each with its own settings.