The Daily Grind Just Got a Bit Smoother
For years, I put up with the default command prompt and PowerShell windows. You know the ones: fixed size, clunky copy-paste, one tab per window, and an absolute nightmare if you needed to juggle a command prompt, a PowerShell session, and a WSL instance all at once. My desktop was perpetually littered with open console windows, each demanding its own piece of the taskbar. It was inefficient, distracting, and frankly, a bit of an eyesore. I finally decided enough was enough and took the time to properly set up Windows Terminal on my main work rig.
Why the Default Falls Short, and Why This Works
The standard console hosts (`cmd.exe` and `powershell.exe`) are relics. They get the job done, sure, but they offer little in the way of comfort or modern functionality. No tabs, poor font rendering for anything but the most basic typefaces, and a complete lack of integrated profiles for different shell environments. Switching between a legacy command prompt, a full-blown PowerShell 7 session, and a Linux environment via WSL was a constant context switch that broke my flow.
Windows Terminal, on the other hand, isn’t just a prettier face. It’s a proper modern terminal emulator. It offers tabs, split panes, GPU-accelerated text rendering, and, crucially, a highly configurable profile system. This means I can have all my essential command-line environments—PowerShell, Cmd, WSL (Ubuntu, Debian, whatever), and even SSH connections—all in one window, accessible with a quick tab switch. It’s not about chasing the latest shiny object; it’s about solid, reliable productivity improvements that simply work.
Getting Your Terminal Just Right
Installation
First things first, get it installed. The easiest way is through the Microsoft Store. Just search for “Windows Terminal” and click Get. If you’re like me and prefer the command line for package management, you can use Winget:
winget install Microsoft.WindowsTerminal
Once installed, fire it up. You’ll likely see a default PowerShell prompt.
Basic Configuration and Profiles
- Open Settings: The quickest way is Ctrl+, (that’s Control and the comma key). Alternatively, click the small downward-pointing arrow next to the plus sign in the title bar, then select Settings.
- Default Profile: Under the Startup section, you’ll see a dropdown for Default profile. I usually set this to my preferred PowerShell 7 instance, but you might prefer WSL or even a good old command prompt.
- Startup Directory: For each profile you use regularly, it’s handy to set its starting directory.
- In the left pane, click on the profile you want to adjust (e.g., Windows PowerShell).
- Find the Starting directory field. I often set mine to `C:\Users\MyUsername` or even `//wsl.localhost/Ubuntu/home/MyUsername` for WSL profiles. This saves you a `cd` command every time you open a new tab.
- Adding New Profiles: Windows Terminal often auto-detects WSL distributions. If not, or if you need a custom one (like an SSH session), click Add a new profile at the bottom of the left pane.
- For an SSH profile, you’d typically select New empty profile, give it a name like “SSH to ServerX”, and then in the Command line field, you’d put something like `ssh username@server_ip_or_hostname`.
- For PowerShell 7, if it’s not auto-detected, ensure its path is correctly specified in the Command line field, e.g., `C:\Program Files\PowerShell\7\pwsh.exe`.
Visual Customization (Making it Bearable to Look At)
This is where it gets personal. I find a good terminal experience needs a clear, legible font and a comfortable color scheme.
- Font: In your profile settings (e.g., Windows PowerShell), navigate to the Appearance section. Under Text, the Font face is crucial. I’m partial to Cascadia Code PL or Fira Code for their ligatures, but any good monospace font will do. Adjust the Font size to your preference.
- Color Scheme: Still in Appearance, look for Color scheme. The terminal comes with a decent set of defaults. I’ve settled on “One Half Dark” for most of my profiles, but “Campbell” or “Solarized Dark” are also solid choices. You can explore others or even create your own if you’re feeling adventurous (though I rarely bother; the built-in ones are fine).
- Background and Opacity: If you want a bit of flair, you can set a Background image, though I keep mine clean. I do, however, often set a slight Opacity (around 90-95%) in the Background section. It’s subtle but can help blend the terminal into your desktop without being overly distracting.
Keybindings (My Daily Drivers)
The beauty of Windows Terminal is its customizable keyboard shortcuts. I’ve tweaked a few for quick navigation.
- Open settings.json: From the Settings UI, click Open JSON file at the bottom-left. This gives you full control.
- Add/Modify Actions: Scroll down to the `”actions”` array. Here are a few I find essential:
- New Tab with Specific Profile: I assign keys to quickly open a new tab with my most used profiles. For example:
{ "command": { "action": "newTab", "profile": "Windows PowerShell" }, "keys": "ctrl+shift+p" },{ "command": { "action": "newTab", "profile": "Ubuntu" }, "keys": "ctrl+shift+u" } - Split Panes: Super useful for viewing logs in one pane while interacting in another.
{ "command": { "action": "splitPane", "split": "auto", "profile": "Windows PowerShell" }, "keys": "alt+shift+d" }I usually bind this to open with my default profile, but you can specify any profile.
- Close Pane: The default for closing a tab (Ctrl+Shift+W) is also handy.
- New Tab with Specific Profile: I assign keys to quickly open a new tab with my most used profiles. For example:
Things people often get wrong
When I first started dabbling with `settings.json` directly, I made a classic beginner’s mistake. I tried to manually add a new color scheme from a web example, copy-pasting a large JSON block into the `”schemes”` array. I missed a comma or added an extra one somewhere, and suddenly, the terminal wouldn’t open. Just a blank window and then it’d close. My mistake was not using a linter or a JSON validator. The terminal has an implicit JSON schema, and if you mess up the syntax, it simply fails silently. I had to resort to backing up the file and then painstakingly comparing it to a fresh `settings.json` to find the rogue comma. Now, if I ever touch the raw JSON for anything more than a minor tweak, I always make a quick backup first, or I use a simple online JSON validator before saving, just to catch those silly syntax errors.
Another common one I see is people trying to manually define WSL profiles. Windows Terminal is quite good at auto-detecting your installed WSL distributions. If it’s not showing up, ensure your WSL distribution is installed and functioning correctly first, rather than trying to construct the `commandline` entry by hand.
Ultimately, a well-configured Windows Terminal isn’t about fancy looks; it’s about removing friction and making your daily command-line work less of a chore.
