Folks have been trying to
fix supercharge the console/command line on Windows since Day One. There’s a ton of open source projects over the year that try to take over or improve on “conhost.exe” (the thing that handles consoles like Bash/PowerShell/cmd on Windows). Most of these 3rd party consoles have weird or subtle issues. For example, I like Hyper as a terminal but it doesn’t support Ctrl-C at the command line. I use that hotkey often enough that this small bug means I just won’t use that console at all.
Per the CommandLine blog:
One of those weaknesses is that Windows tries to be “helpful” but gets in the way of alternative and 3rd party Console developers, service developers, etc. When building a Console or service, developers need to be able to access/supply the communication pipes through which their Terminal/service communicates with command-line applications. In the *NIX world, this isn’t a problem because *NIX provides a “Pseudo Terminal” (PTY) infrastructure which makes it easy to build the communication plumbing for a Console or service, but Windows does not…until now!
Looks like the Windows Console team is working on making 3rd party consoles better by creating this new PTY mechanism:
We’ve heard from many, many developers, who’ve frequently requested a PTY-like mechanism in Windows – especially those who created and/or work on ConEmu/Cmder, Console2/ConsoleZ, Hyper, VSCode, Visual Studio, WSL, Docker, and OpenSSH.
Very cool! Until it’s ready I’m going to continue to try out new consoles. A lot of people will tell you to use the cmder package that includes ConEmu. There’s a whole world of 3rd party consoles to explore. Even more fun are the choices of color schemes and fonts to explore.
For a while I was really excited about Hyper. Hyper is – wait for it – an electron app that uses HTML/CSS for the rendering of the console. This is a pretty heavyweight solution to the rendering that means you’re looking at 200+ megs of memory for a console rather than 5 megs or so for something native. However, it is a clever way to just punt and let a browser renderer handle all the complex font management. For web-folks it’s also totally extensible and skinnable.
As much as I like Hyper and its look, the inability to support hitting “Ctrl-C” at the command line is just too annoying. It appears it’s a very well-understood issue that will ultimately be solved by the ConPTY work as the underlying issue is a deficiency in the node-pty library. It’s also a long-running issue in the VS Code console support. You can watch the good work that’s starting in this node-pty PR that will fix a lot of issues for node-based consoles.
Until this all fixes itself, I’m personally excited (and using) these two terminals for Windows that you may not have heard of.
Terminus is open source over at https://github.com/Eugeny/terminus and works on any OS. It’s immediately gorgeous, and while it’s in alpha, it’s very polished. Be sure to explore the settings and adjust things like Blur/Fluent, Themes, opacity, and fonts. I’m using FiraCode Retina with Ligatures for my console and it’s lovely. You’ll have to turn ligature support on explicitly under Settings | Appearance.
Terminus also has some nice plugins. I’ve added Altair, Clickable-Links, and Shell-Selector to my loadout. The shell selector makes it easy on Windows 10 to have PowerShell, Cmd, and Ubuntu/Bash open all at the same time in multiple tabs.
I did do a little editing of the default config file to set up Ctrl-T for new tab and Ctrl-W for close-tab for my personal taste.
FluentTerminal is a Terminal Emulator based on UWP. Its memory usage on my machine is about 1/3 of Terminus and under 100 megs. As a Windows 10 UWP app it looks and feels very native. It supports ALT-ENTER Fullscreen, and tabs for as many consoles as you’d like. You can right-click and color specific tabs which was a nice surprise and turned out to be useful for on-the-fly categorization.
It’s not yet in the Windows Store (perhaps because it’s in active development) but you can easily download a release and install it with a PowerShell install.ps1 script.
I have found the default Keybindings very intuitive with the usual Ctrl-T and Ctrl-W tab managers already set up, as well as Shift-Ctrl-T for opening a new tab for a specific shell profile (cmd, powershell, wsl, etc).
Both of these are great new entries in the 3rd party terminal space and I’d encourage you to try them both out and perhaps get involved on their respective GitHubs! It’s a great time to be doing console work on Windows 10!
Sponsor: Check out the latest JetBrains Rider with built-in spell checking, enhanced debugger, Docker support, full C# 7.3 support, publishing to IIS and more advanced Unity support.