to get a quake-style terminal on windows

My primary work and development environment is Linux. Ubuntu on machines with desktops, Debian on servers.

On Ubuntu machines one of the first things I set up is tilda, which gives me a Quake-style terminal: available all the time, starts hidden, and displays across the top half of my primary monitor on a global hotkey (I use F1). I think the built-in tabs are kind of ugly so I really go nuts and run a GNU screen session inside it0. Tilda means I always have a terminal available, no matter what virtual desktop I'm on or what I'm doing.

On Windows, whenever I want to do anything vaguely work- or server-related, I automatically hit F1 at least a couple times before I remember I'm on Windows and I don't have Tilda. I sadly start up Pageant and navigate around my external network of Linux machines with the (really very nice) PuTTY session manager. I'll hit F1 again at least a few more times though, just for good measure.

The other day I was annoyed enough about not having access to my preferred workflow (can we have a civilization) that I did what all overprivileged tech workers do when they're annoyed and whined about it on social media. Just the act of whining made me think a little harder about the problem, and contemplate all the work Microsoft has done to make itself more attractive to the Linux-dominant OSS community, and realize that surely, surely, there is a solution by now.

the hunt begins (and ends almost immediately)

It was almost too easy: yes, Windows Terminal (not to be confused with cmd.exe, which is all I'd ever used on Windows) does indeed have a Quake mode.

step 0: get windows terminal

It's installable from the Microsoft Store. I'm still confused about why the Microsoft Store exists. Whatever.

step 1: get a debian profile for windows terminal

I've written some PowerShell but I have no desire to live in that place.

The Windows Subsystem for Linux was already enabled on my system, but the Virtual Machine Platform was not, so a cheeky

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --update

in an admin PowerShell terminal got me up and running. After that,

wsl --install Debian

and behold, a Debian profile appeared in my Windows Terminal tab options.

step 2: quake mode

Quake mode for Windows Terminal isn't an application setting; it's a special mode that can apply to one instance of the Terminal. There are several ways to kick it off, but I'm here because I can't stop hitting F1, so I went straight to the keybinds. Open up the Terminal settings, click Open JSON file in the bottom left, and add a new item to the actions property:

  "command": { "action": "quakeMode" },
  "keys": "f1"

it's got some quirks

I want my Quake-mode terminal to be available on login with F1, and I want the tabs displayed because I may need to hop into a Window shell environment.

The first thing is sort of possible but it's hinky: I can make Terminal run on startup, but I can't reliably make it launch minimized in Quake mode. To borrow from AlexHunterCodes in the Github issue tracking this feature request,

I have to accept the always-present tray icon that does nothing and is either visible or not visible when a normal Terminal window is open (depending on how you configure it), and I have to manually close the default Terminal window that opens on startup every time....Plus, when I open the Quake terminal, it appears as another Terminal window in the taskbar.

Not a dealbreaker, but not ideal.

The second thing, having tabs displayed on startup, doesn't seem to be possible right now. I've worked around it with another keybind, so I can manually pop up the tabs if I need them:

  "command": { "action": "toggleFocusMode" },
  "keys": "alt+f1"

bonus round: a farewell to putty

Having set up a workable Quake-style terminal running Bash1, I belatedly realized that I could probably replace PuTTY, which I've been using on Windows for decades. I do one SSH keypair per system, so I figured if I could convert my PuTTY private key to a regular SSH private key, I could use it in my fake little Debian environment.

Shockingly, the Debian installed by WSL doesn't include SSH:

sudo apt install openssh-client

I used PuTTYgen to export the private key in what it called OpenSSH key format, but that didn't work on its own. I had to also convert it to PEM format:

ssh-keygen -p -f my-key-exported-from-putty -m pem

I configured my SSH client to use the new key as its default identity in ~/.ssh/config:

IdentityFile ~/.ssh/my-key-exported-from-putty

and then manually copied my saved PuTTY sessions over into Host definitions. I know, I know, I could have exported them from the registry and then thrown together a cute script to dump them out in the right format (hell that might even exist already), but you know what, there were only like eight or so and I try to avoid making myself the subject of an xkcd strip.

and all i had to do was whine a bit

So far this get annoyedwhine in publicfeel dumb for whining in publicdo something system is working out great for me, but I feel like there's some wasted effort I could probably trim.

#windows #linux #debian #wsl #windowsTerminal #tilda

0 Yes, I know about tmux, thanks 1 No, it's not dash, yes, I know about zsh/fish/csh/ksh/besteversh, thanks