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 annoyed → whine in public → feel dumb for whining in public → do 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