TNS
VOXPOP
Why did I come to The New Stack today?
We're always glad to see you, but what is the reason for today's visit?
Researching a new technology and Google led me here.
0%
Social media previewed an intriguing post and I wanted to read the whole thing.
0%
I routinely stop by TNS for some good tech reading when I'm bored.
0%
For a glimpse of Alex Williams wearing his fedora. Grrr!
0%
Software Development

A Review of Warp, Another Rust-Based Terminal

Warp gives you the kind of IDE on your command line that you often assumed you would have, but you've never really had.
Jul 1st, 2023 6:00am by
Featued image for: A Review of Warp, Another Rust-Based Terminal

Given that I reviewed the code editor Zed a few weeks ago, it should not be too surprising that I look at the older sister project: Warp. Like Zed, Warp is written in Rust and effectively has its own GUI to ensure speed. The team has recently done some work with subshells, so I thought now might be the time to catch up. And of course there is some slightly superfluous AI in it too, as this is 2023.

Warp gives you the kind of IDE on your command line that you often assumed you would have, but you’ve never really had. Warp is described as “a terminal re-imagined to work from the ground up like a modern app” on one of the demo videos.

I think this post only has two audiences: people who have never considered that a terminal could be better, and those who simply haven’t got around to looking closely at Warp yet. I’ve used various terminal applications in my time, including “broadcast” style ones when installing updates into multiple servers. Most people use iTerm on the Mac, or Git bash on Windows. But otherwise, we are all pretty conservative with our terminals. The command line is that last dependable thing, the final source of truth, so we don’t expect much innovation here. Nevertheless, it is available. Ask yourself: would this help one of my own or my team’s workflows? Read on.

Warp is even more disinterested in a MS Windows version than Zed is: if implemented at all, it will be after a Web/Wasm version and Linux. Again, if this is where the audience is, then so be it.

Warp

Each command and response is made in its own block (think Notion). A block is just an atomic GUI element, like a little window. So you can move up the screen to your previous command blocks with the keystrokes CMD and up. Each block has a right-click context menu, as well as some hover menus.

But a block represents a completed command and response pair. If you run something like “top” which doesn’t terminate, you will not get a block — but you can still cmd-f and search for terms. This is interactive, so it will continually highlight whatever you chose.

One strong innovation is the ability to turn any block into a URL snippet, making it trivial to share interesting or erroneous responses. Because it wraps the block text into nice CSS and HTML, it retains much of the format of the original text. This, on its own, will very much please a QA team.

There is a ChatGPT integration. This is just a slightly smoother way of looking up things in Stack Overflow, but it is a profitable use case. I’ve certainly copied error text then fed it into Google and hoped to find a relevant forum response. So using ChatGPT is a play on that workflow. However, Warp already has strong completion hints, or auto suggestions. Look how after typing “git” then the letters “pu” it gave a sensible push hint.

Using an AI search at the same point, I simply get more jumping-off points for hints:

The trick here is to think about your own team’s workflow, as well as whether you would personally benefit. In terms of integration, I think auto-suggestion is much more useful — these seem to be based on something you have already typed, historically. Just as with an IDE, you can also use tab to show relevant flags, though I found this a little unpredictable.

There are heaps of useful additions that will be appreciated by those used to working long hours inside a terminal window. You can split a terminal into panes. You can rename and color terminal tabs for quick recognition. And you can save all your tabs, windows and panes to a “launch configuration” so you can switch projects and return to your favored setup.

Warp Drive and Workflows

Look, if I had a product called Warp, I would create a feature called Warp Drive too! Warp has the concept of teams, hence there is the concept of sharing things with the team. And Warp Drive is the workspace where you can share workflows with your team, or keep them personal.

The nomenclature is unfortunate, but the idea of a Warp workflow is simple — it is just a parameterized command. But this is quite a strong concept, for the same reason containers are strong. They convey a team’s context within an existing toolset.

Let me repeat one given a good example. I know I can grep inside a directory, but I usually can’t quite remember the format. Say I find an example within my history, like so:

Obviously, my previous use may not work in my current directory. But see that “$_” icon in the block hints? If I hit that I can parameterize my command:

I just need to tell it which the arguments are. By selecting “word” and pressing “New argument” I can parameterize this. Note that I fill in a definition as well as a default value:

Later, I can recall that from the Warp Drive left-hand side menu:

It saves the default values as well as preserving the definition — nice.

Now, there area lot of windows appearing here. This might be too busy for some folks, especially for a terminal.

I mentioned subshells earlier; the current version supports them better. If you launch a subshell from Warp (defined as any nested interactive shell session that’s spawned and running in the context of an existing, running shell), you have the option to make it a Warp shell (i.e. “Warpify” it) after launch. Warp doesn’t replace the shell application, so it has to track spawns like this.

On a lighter note, you can use your own custom prompt. I had my own simple PS1 style prompt defined within “.zshrc”, but I was still getting the austere prompt:

Under settings Features (not Appearance) you can “honor users custom prompt” and immediately the prompt in my current block becomes familiar:

Warp also recognizes the popular oh-my-zsh prompt renderer, as well as others like Spaceship. I already had oh-my-zsh installed, so a quick edit of my .zshrc file allowed the far nicer prompt:

So is all this free? Well, Warp is a product, and there is the usual free scheme for personal and small team use. But as with Zed, the point of Warp is that it will be a fully maintained system that will quickly respond to current user needs. So if you get involved now, you can influence their journey. Even though there is a reasonable chance Warp will get purchased as the energy of the creators dissipates, the community will ensure it stays true to its original principles.

Group Created with Sketch.
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.