Skip to content

- Terminal app

I run all three major desktop OS's as well as a handful of minor ones. One of those I have used since the early days of DOS is Windows by Microsoft.

I never got over writing applications that run in the terminal or using them. There is something ambiguous about running applications in a GUI. The precision needed to get a mouse in the exact right position, when not just typing leads to many power-users staying at the keyboard, and many GUI applications having an undo button.

A Shaky past

Windows has never had a good terminal application before. CMD, or command.exe are both functional, PowerShell is obscure and reminds me more of writing code than operating a powerful machine of pre-built parts. Most of the time I use git bash, which is a branded MinGW experience. Cygwin is another solution I have used. Both are fantastic for someone used to systems like Linux, Unix, or BSD, sometimes referred to as POSIX compliant.

Rather than have multiple terminal icons windows terminal allows me to launch a number of terminal experiences. The three covered here are Docker Toolbox, Git Bash and Cygwin.

Editing

I will not go into detail about installing windows terminal. It is written by Microsoft and available via the Windows Store. Once installed, you can edit the settings of the application using ctrl+,.

The primary section we will concern ourselves with is "list" which itself is under "profiles".

Docker Toolbox

I Use docker toolbox rather than docker desktop for several reasons. The first is that I think the engineering quality of docker desktop integration for OSX and windows are sub-par, due to not working well with other tooling I use. Launching it starts a Virtual Machine, which I manage using VirtualBox, so that I can use the same docker commands as I would use in Linux. This is because it is running in a Linux virtual machine.

Download docker toolbox stable

JSON file details
						
{
	// Make changes here to the cmd.exe profile.
	"guid": "{d0c43742-ea75-5417-ea75-afceeeaa6101}",
	"name": "Docker Toolbox",
	"commandline": "\"%PROGRAMFILES%\\git\\bin\\bash.exe\" -i -l \"%PROGRAMFILES%\\Docker Toolbox\\start.sh\"",
	"hidden": false,
	"closeOnExit": true,
	"icon": "%SystemDrive%\\Program Files\\Docker Toolbox\\docker-quickstart-terminal.ico",
	"historySize": 4096,
	"padding": "0, 0, 0, 0",
	"suppressApplicationTitle": true,
	"tabTitle": "Docker Toolbox",
}
						
					

If you should wish to change the default terminal to Docker toolbox, then the following edit to the "defaultProfile" will help.

						
"defaultProfile": "{d0c43742-ea75-5417-ea75-afceeeaa6101}",
						
					

Cygwin

I will leave specific guides to installing and downloading Cygwin out of this guide. Again focusing on just the JSON.

JSON file details
						
{
	// Make changes here to the cmd.exe profile.
	"guid": "{c1631064-ea75-5417-ea75-afceeeaa6101}",
	"name": "Cygwin Terminal",
	"commandline": "\"%SystemDrive%\\cygwin64\\bin\\bash.exe\" -l",
	"hidden": false,
	"closeOnExit": true,
	"icon": "%SystemDrive%\\cygwin64\\Cygwin.ico",
	"historySize": 4096,
	"padding": "0, 0, 0, 0",
	"suppressApplicationTitle": true,
	"tabTitle": "Cygwin Terminal",
}
						
					

If you should wish to change the default terminal to Cygwin then the following edit to the "defaultProfile" will help.

						
"defaultProfile": "{c1631064-ea75-5417-ea75-afceeeaa6101}",
						
					

Git Bash (MinGW)

JSON file details
						
{
	// Make changes here to the cmd.exe profile.
	"guid": "{d0c43742-ea75-5417-ea75-afceeeaa6101}",
	"name": "Docker Toolbox",
	"commandline": "\"%PROGRAMFILES%\\git\\bin\\bash.exe\" -i -l \"%PROGRAMFILES%\\Docker Toolbox\\start.sh\"",
	"hidden": false,
	"closeOnExit": true,
	"icon": "%SystemDrive%\\Program Files\\Docker Toolbox\\docker-quickstart-terminal.ico",
	"historySize": 4096,
	"padding": "0, 0, 0, 0",
	"suppressApplicationTitle": true,
	"tabTitle": "Docker Toolbox",
}
						
					

If you should wish to change the default terminal to Git Bash (MinGW) then the following edit to the "defaultProfile" will help.

						
"defaultProfile": "{deadbeef-ea75-5417-ea75-afceeeaa6101}",
						
					

Closing

There is not more to offer than this. PowerShell and traditional command line are built-in to the terminal. Adding these should not prevent them from continuing to run. If you do encounter a problem, write a blog post about it, and send a WebMention to this post, or raise an issue on my blog GitHub. I Cannot guarantee I can or will help, but I would be interested to know.

By