First Impressions: Warp - The modern Rust based terminal

First Impressions: Warp - The modern Rust based terminal

Warp is a new terminal that has been out for MacOS for a while but has now just been released on Linux too as part of their "public beta" - known bugs and issues are still to be worked out. According to their github, plans for a Windows release and even the Web (thanks to WASM) are in the works as well 😮. Warp is a paid application, but is free to individuals. Warp AI free while in the public beta and will reduce to 20 requests per user per day thereafter.


Their website tagline reads:

Warp is the terminal reimagined with AI and collaborative tools for better productivity.

And provides a quick start video going over the more prominent features:

Setup

On first launch, the first thing that hits you is that you have to create a Warp account in order to use the terminal. This is very bizarre for a piece of terminal software, and looking around the internet it has thrown a lot of people off already. The mind immediately jumps to telemetry 😡 - and just another company to collect even more data on you. However, they do give you the ability to opt-out of telemetry 😄. If you leave telemetry on, you can view real-time logs and they even provide an exhaustive list of telemetry events in the name of transparency. OK, they get a pass, for now.

I was pleasantly surprised at how quick the setup process was. After first launch, I made a couple of changes in the settings; Increase font size, change font to FiraCode Nerd Font and selected a theme (Gruvbox Dark) and away I went. That is probably the quickest setup I have experienced when trying out a new terminal.

Features

Warp has some interesting features that separates it from the vast majority of terminal emulators I have tried (I am a long time kitty user). Warp introduces the concept of "blocks", where each block is an atomic unit capture of the command input and output. By breaking the output up like this, it allows for some interesting features such as the ability to share a block to third party applications via a web link or embed into a HTML document with iframe, or filter the blocks output as alternative to using traditional command line tools like grep.

As with just about every new app going forward, Warp is built with AI at the forefront, utilising "WarpAI" - which is always on hand, just type # at the command line or to ask about a particular block you highlight the block and press CTRL+SHIFT+SPACE. For example you can ask the AI how to replace a string in a file for instance and it will dutifully respond right there in the terminal, saving you that Google search.

In Warp the command prompt is pinned with a fixed, bottom aligned pane. As you create "block" history, the blocks fill up a scroll view that is the remainder of the current pane. At least, this is the default. It can be changed in the settings for a more classic terminal experience.

A useful feature I discovered quickly was the SSH wrapper. When I ssh into my home server that hash bash as the shell, then typing the first character and using TAB to autocomplete often fails as bash auto completion is case-sensitive by default (I have been too lazy to change it). However:

When you SSH into a remote box, you get all the features of Warp without any configuration on your part. The input editor, auto-completions, and history search work the same, regardless of machine.

Warp Docs - SSH Wrapper


Bridging the gap between modern code editors/IDEs and the terminal, Warp adds a command palette, CTRL + SHIFT + P to open it. From there you can execute a whole host of commands from navigation shortcuts to "workflows".

A workflow is a parameterized command you can name and save in Warp with descriptions and arguments. Workflows are searchable and easily accessed from the Command Palette so you can find and execute them without switching contexts.

Warp Docs - Workflows

The are plenty of predefined workflows for common use cases:

But you can also create your own to fit your needs. Executing a workflow as simple as selecting it then filling in any parameter values:


For the terminal layout, Warp supports windows, tabs and panes. Panes can be split vertically and horizontally and the active pane is indicated by an arrow in the top left. I don't find the arrow indicator enough and recommend turning on "Dim inactive panes" in the settings though as it instantly draws your eyes to the active pane. If you have a particular layout configuration that you use often you can save it as a "Launch configuration" for quick setup. Just open the command palette (CTRL-SHIFT-P) and search "Save new launch configuration".


Here's a summary of features:

  1. Smart Blocks: Warp structures the command line input and output into blocks, allowing users to easily navigate, rerun, and edit previous commands. This block-based interface helps in organizing the terminal's output more cleanly and intuitively.
  2. Command Palette: Much like the command palettes found in modern text editors and IDEs (Integrated Development Environments), Warp offers a command palette that allows users to search through and execute terminal commands and features without needing to remember specific key bindings.
  3. Workflow and Alias Suggestions: Warp can suggest aliases and workflows based on the commands you frequently use, potentially saving time and reducing repetitive typing.
  4. Input Assistance: Warp provides auto completion, syntax highlighting, and inline previews for commands. This feature supports not just file paths but also command options and arguments, making it easier to construct commands correctly on the first try.
  5. Collaboration and Sharing: Warp includes features for sharing command outputs or entire blocks directly from the terminal, facilitating collaboration with team members.
  6. Customization and Themes: Users can customize Warp's appearance with themes and visual settings, allowing for a personalized terminal experience that can match other tools or personal preferences.
  7. GPU Acceleration: Warp is built to leverage the GPU (Graphics Processing Unit) for rendering, which can significantly improve the speed and responsiveness of the terminal, especially with large amounts of output or when scrolling.
  8. Cross-shell Compatibility: While Warp introduces many features not traditionally found in terminal emulators, it aims to be compatible with popular shells like Bash, Zsh, and Fish, allowing users to leverage Warp's enhancements without changing their shell environment.
  9. Plugins and Integrations: Warp supports extending its functionality through plugins and integrations, enabling users to add new features or integrate with other tools and services.
  10. Search and Command History: Warp offers powerful search capabilities, allowing users to quickly find previous commands or output within their terminal history.

Summary

Warp re-imagines the terminal with its innovative features, AI integration, and focus on productivity and collaboration, despite initial concerns regarding account creation and telemetry. Its user-friendly setup, unique "blocks" concept, AI assistance, and advanced functionalities like the SSH wrapper, command palette, and workflows make it a promising tool for developers and IT professionals seeking a modern terminal experience.

It's a project that I am going to definitely keep my eye on, as there are aspects that make me not sure I am ready to make it my daily driver just yet. The developers state they have plans to make the code base (or at least, substantial parts of it) open source. It would nice to see that come to fruition.