Accessibility

Our mission is to make Warp the most accessible terminal for all developers. It includes fixing the UI, making it easier to use for experts and new engineers who are starting to use the command line.

Note that currently, these instructions are for macOS only. We don't yet fully support screenreaders or a11y on Linux.

We recognize the need to improve the experience for those visually impaired, as - to our best knowledge - other terminal emulator apps didn't do a good job in this area. This doc summarizes what we've done so far, how Warp works with VoiceOver, and outlines the main changes from the typical workflow. For the features documentation and its keyboard shortcuts, please go to the feature-specific page in the documentation.

Keep in mind that this is a work-in-progress and the current state is not a final state of accessibility in Warp.

How to use Warp with Voice Over?

The best way to start working with Warp & VoiceOver is to install it using Homebrew:

brew install warp

This will ensure that you can receive all future updates automatically, without the need to go through a macOS standard drag-and-drop installation process.

From there, Warp should seamlessly work with VoiceOver and start announcing what's happening on the screen and what actions you can take. This may be a major difference from other apps - as Warp announces stuff on its own, letting you know what's going on. There's currently no way to navigate between different UI elements using VO key combinations.

Once installed, it will ask you to log in. Warp also sends telemetry that we use to improve the overall user experience. You can find out more about that in the privacy section.

The login flow will require you to navigate between the app and your browser. The last step before you can start enjoying our new terminal app is filling up the onboarding survey.

The main terminal window is not that different from other terminals - there's a place to type commands (Command Input) and a list of the previously executed commands and their outputs. Warp groups those together - each command and output create a Block. You can navigate blocks with your keyboard to easily check what was the command, learn whether it was successful or not, and what was the output, as well as more easily copy the command, output, or both for further processing.

A main entry point for discovering new features and actions is our Command Palette, which you can access by executing the cmd-p shortcut.

Differences from the regular VoiceOver workflow

As you may notice, typical Voice Over navigation keys or settings do not currently work in Warp. In short - it's related to how our UI Framework is currently implemented and that as of now we don't yet offer a keyboard-accessible way to navigate the UI elements.

Instead, whenever you perform an action and/or something happens in the background, Warp announces it to you, letting you know what's going on and what possible actions you can take. Since it's a terminal, we care about all user actions being keyboard accessible from the start, so pretty much all our features have the assigned keybindings already. You can adjust the default keybindings following the guide from this GitHub repository: https://github.com/warpdotdev/keysets. You can also always fall back to using cmd-p to check the keybinding or execute the specific action.

A11y specific actions

Some a11y-specific settings are available through the command palette. For example, you can adjust the verbosity level of messages. Simply enter the Command Palette and type "a11y" to discover related options and their keybindings.

Future work

While not all Warp features are accessible yet, we've implemented a process around releasing new features and changes to the main app, to ensure that all new code provides proper a11y announcements.

This is not the ideal and final implementation. We're happy to hear your thoughts and ideas on how we can improve. The biggest milestone for this work is to add support for navigating the UI elements using the keyboard. Give Warp a try, and please, do not hesitate to share your feedback: you can reach us via email, chat with us on Discord, or file a ticket in our GitHub repo.

Last updated