February 21, 2020

The History of Command Palettes: How Typing Commands Became The Norm Again

From Terminal to GUI to Search again.

by @maguay

Founding editor @capiche. Writer. Amateur photographer. Information architect. Older work: @zapier, @AppStorm. Personal blog: @techinch.
maguay's avatar

It took little under a decade for the headline feature developer Jon Skinner added to Sublime Text’s second version to become one of the defining features of this decade’s software.

“Goto Anything” is how it started, a search pane to jump to other files. Open a folder, press CMD/Ctrl+P, start typing to see a list of matching files, then press Enter to jump to it. Seems simple enough: You think of a file you need, and without leaving the keyboard can switch to that file and continue work.

Within months, that search pane gained a companion: The now-famous Command Palette. “The Command Palette provides a quick way to access commands that don't warrant a key binding, and would usually be hidden away in a menu,” explained Skinner. This time, you’d press CMD/Ctrl+Shift+P and get a search bar, only here you’d search through program features.

sublime text command palette

Type Save to find the Save as… command without looking through the File menu. Type Theme to change your text colors without clicking. With the Package Manager plugin, you could browse Sublime Text add-ons and install them, like a mini keyboard-powered App Store.

Compared to clicking each menu looking for a command, or hovering over every button in a toolbar, waiting for its tooltip to flash for a second with a hint of what it does, the Command Palette felt like magic. Tell the program what you wanted to do, and it’d do it. It was search that worked for you, a terminal you wanted to use.

It was the interface computers had needed all along.

Hide and seek.

DOS

Typing into blank boxes is how personal computing started. The earliest Apple computers and PCs started with a command prompt, a C:\>_ waiting at your command.

Enter dir to browse files, type to view a text file, and so on. Easy enough if you remembered a command, equally easy to mess everything up if you manage to type format or rm -rf in Unix.

Thus, toolbars and menus, the graphical user interface that made computers approachable. “People need to feel that they can try things without damaging the system,” recommended Apple’s Human Interface Guidelines, the software design handbook for the Macintosh.

MacPaint

Floppy disk and trash can icons made computers feel understandable, approachable even. As Netscape founder Marc Andreessen said in a demo of the earlier Mosaic web browser, “Instead of having to actually use cryptic commands... you can just point and click on things you're interested in.” It was decades before smartphones would make software something you could actually touch and manipulate, but the mouse was close enough. We could figure this out.

Figure out, though, often meant trial and error. Computing replaced the terror of the blank page with the thrill of clicking an unknown button. Windows 95’s Minesweeper became the perfect analogy for toolbar buttons, where behind each button might lay a bomb.

It was manageable at first, with merely 19 buttons in WordPad and 20 in MacPaint. But the 75 unlabeled buttons in recent versions of Photoshop are a digital minefield that take years to learn. They keep people from trying out new software, make developers default to their old terminal habits instead of playing button roulette.

“Personal computers are just too hard to use, and it’s not your fault,” opened tech journalist Walt Mossberg’s first column in 1991. Despite designers’ best intentions, that same feeling still rang true a decade later.

When search started working.

If searching for the right button wasn’t hard enough, finding files wasn’t much easier. You could click through folders if you took the time to organize, but if you saved everything to your desktop, finding document187.doc was an exercise in frustration at best, slow enough that Windows XP’s search box included an animated dog to keep you company while you waited.

But as annoying as desktop search was at the time, it hinted at how computing should be. After all, Google could find anything on the web faster than you could find stuff on your own computer. What if you could just tell your computer what you wanted, and it’d find and run it?

Then Google came to the desktop, with a tool in 2004 to search the web or your computer for files and programs in a keystroke. Suddenly we’d come full circle. The fastest way to launch programs was to type their name into a box, only a box that looked a bit more stylish than the terminal of old.

Suddenly search was everywhere.

2007 was quite the year for search. It’s when Excel gained Formula AutoComplete (as surprising as it seems that it wasn’t included all along), so you could start typing and Excel would suggest the formula you likely wanted. It’s when Visual Studio also got a file search box that doubled as a command prompt. Two years earlier, Apple had added Spotlight to the Mac (the same search tool build into your iPhone today), but it’s what Apple added to the Mac’s search in 2007 that moved search forward.

Finder feature search

Hidden in the release notes of OS X Leopard was Help Menu Search. “A new search field in the Help menu displays all relevant menu items in the active application,” explained Apple, Spotlight for all your software features. Click help, start typing, and you could find the command you need in seconds, no trial and error required. Suddenly Photoshop’s Crop tool or Excel’s Replace function and every other hidden software feature were easy to find.

Spotlight itself feels like a modern command line. Type an app name to launch it, 3+5 to see its sum, $25 in Euro to convert currency, and more. Paired with search inside your app’s features, you had the best of the terminal paired with the best of graphical interfaces.

Buttons and menus, after all, have text describing their functions. Add search and suddenly everything was more discoverable, no cryptic commands or oddly shortened words like dir needed. Menu items and button tooltips use real words, after all, the terms you’d use to describe them in real life. Search those words and you’d find the tool you need.

Taking shortcuts.

There was an easier way all along: Keyboard shortcuts, where you’d press CMD or Ctrl+C to copy and so on.

They're faster, for sure. “Keyboard is by far the most efficient way to navigate and control modern digital technology 90% of the time,” said @Blakejmyer in a Capiche discussion about keyboard shortcuts. “Super users are keyboard only.” As engineer coach @MorganJLopes said, “The efficiency of navigating a computer without shifting hand position compounds over time.”

“A mouse is okay for browsing the web, but for getting working done I prefer a keyboard.” @ahubbs. As @AndrewPenry said, “You can't beat the speed of not moving your hands to another device or to touch the screen.”

The problem they're like magic incantations, secret codes passed down from computer classes and textbooks, not the things you’d discover on your own. “Once you know what you're doing, the keyboard is much faster for things you do all the time,” said @dharmesh. But you've got to know what you're doing first.

“If you don’t know a shortcut, how do you look it up? And if you don't know a feature exists, how do you find it?,” mused Superhuman founder Rahul Vohra in an email conversation about command palettes.

Enter the command palette.

Early text editors like Vim took the command line approach, with commands such as :wq to save your work and quit the program. They’re fast to use once you learn them—but you have to learn them in the first place.

Thus the genius of the command palette in Sublime Text—and its early predecessor in the Mac’s help menu search. You don’t have to learn what to press or even know what to look for. Just type and get the feature you need.

Superhuman command palette

What makes a command palette?

“A command palette has quite a few parts,” said Vohra:

  • “A single shortcut to invoke the palette
  • A fuzzy matcher to find commands
  • A way to see the direct shortcuts for next time”

Height project management app founder Michael Villar said something similar. “There are a bunch of reasons why a command palette is interesting: it makes features completely accessible from the keyboard and discoverable in a standardized UI, makes shortcuts findable, and hides the underlying complexity behind a piece of software.”

So when the Superhuman team set out to make a more efficient email experience, they knew keyboard shortcuts would speed you up and search was critical to the email experience. “And then it struck us,” said Vohra: “the answer was staring right at us in our text editor.” Sublime Text’s command palette took a single shortcut to open, matched what you typed to the commands, and showed shortcuts so you could remember next time. Superhuman brought the same to email.

iA Writer search

The Mac’s menu search inspired other developers to build similar tools. When iA Writer developer Oliver Reichenstein was asked about the inspiration for their iPhone app’s search that combines file and feature search in one dialog, he starts: “Well, in Help…”

The team behind writing app Ulysses skipped feature search, but still says their in-app search was inspired by Spotlight. “We took the elements we liked, a shortcut, quick entry, simple result preview and selection, and built our own mini-version of this search into the app,” said Ulysses co-founder Max Seelemann.

And some found inspiration even further back, in the terminal. As Alfred search tool co-founder Vero Pepperrell said when asked where they’d first encountered a command palette, “Using a command line was the original way you'd interact with any computer.” It just took some refinement and polish to make them usable by everyone.

“Command palettes are a vastly superior UI than point-and-click and can democratize the speed engineers experience in our editors,” said Command E founder Tom Uebel. Developers had long experienced their simplicity, perfect over generations in Terminal, Vim, Visual Studio, Sublime Text, and their successors. Power users discovered them in the Mac’s help search.

And now they’re everywhere.

Photoshop has a command palette hidden in its search tool, added in 2017 as a way to both search for stock media and to sort through the vast array of features in the photo editor. Microsoft Office has a command palette, in the top of the ribbon where the “Tell me what to do” box lets you search for Word, Excel, and PowerPoint features with a click or a press of Alt+Q. Notion changed the idea a bit, put its core tools behind a / menu, where you type a slash then continue typing to find the tool you want. Nuclino, a team notes tool, and Deepnote, a data science tool, are among the new apps that are built around command palettes. They went from being a headline new feature to something you should almost expect new software will have.

Computers without screens.

When computer scientist Alan Kay laid out his vision for computers, he among other rules the following:

“The service must not be esoteric to use. (It must be learnable in private.)”

Terminals, unlabeled buttons, and keyboard shortcuts never quite hit that. We could learn them in private, sure, but they definitely were esoteric to use, at first anyhow. It took combining a few things from each into a search bar to get a new feature that could turn everyone into power users.

Then as soon as it came to desktop software, the search bar disappeared again in the newest devices. Alexa, Siri, and Google Assistant all are essentially command palettes, activated by voice with no interface to see. Hey Siri, what's the weather? or Alexa, turn off living room lights or Ok Google, find directions to the airport, and it is so.

“People need to feel that they can try things without damaging the system,” said Apple’s Human Interface Guide, and the ease at which children learn to interact via voice perhaps means voice assistants at least have got the no-fear-of-damaging-the-system right.

Maybe Siri’s a command palette when we don’t want to type—and real command palettes are the way to simplify work the rest of the time. Maybe the future’s less about looking for the tool we need, and more telling computers exactly what we need, and it actually working.

FORMAT WITH MARKDOWN; DRAG AND DROP IMAGES
NBNite's avatar
@NBNite (replying to maguay )
5 months ago

The future should hold the perfect balance of options - text commands for those who prefer to type and voice commands for those who prefer to speak.

Another great read @maguay!

2 points
maguay's avatar
@maguay (replying to @NBNite )
5 months ago

Thank you!

Yeah, I think it’s an interesting thing how the new more natural language text commands map well to voice control. Bits and pieces towards the future of ambient computing.

2 points
goleary's avatar
@goleary (replying to maguay )
2 months ago

I love the article. One comment however is that voice interfaces (Alexa, Siri, Google...) all feel severely limited in terms of discover-ability when compared to something like a command palette. It's too hard to figure out what's possible to do with them.

2 points
maguay's avatar
@maguay (replying to @goleary )
2 months ago

Great point there—voice-based interfaces make discover almost impossible without randomly saying stuff. Traditional terminal interfaces were almost as bad, where you could say type compgen -c to list all commands, but good luck figuring out what each one does. The Command Palette solves this a bit with fuzzy matching, description text, and a list of top options that make it easier to explore commands. Still absolutely can be difficult to discover what's possible, though, without playing around.

2 points
pendolino's avatar
@pendolino (replying to maguay )
2 months ago

No mention of quicksilver?

1 point
maguay's avatar
@maguay (replying to @pendolino )
2 months ago

That would have been another good tool to mention—along with honestly OS X Spotlight and earlier Sherlock, and the Watson app before that. The core thing with command palettes here is that they’re a way to surface features inside a program rather than being the entire program—but the category of system search tools in general could fit here too.

2 points
pendolino's avatar
@pendolino (replying to @maguay )
2 months ago

Well the really cool thing about Quicksilver was that it was way more than a search tool. It allows the user to invoke and do so many things without leaving the command line. Some of the things you could do included complex triggers, file management, app interfaces and more. Unfortunately support for updates and plugins slowly withered causing it to be abandoned by most users though there's still a tiny cohort that use it.https://qsapp.com/about.php (comparison to Spotlight)

2 points
maguay's avatar
@maguay (replying to @pendolino )
2 months ago

Gottcha, so a bit closer to today’s Alfred. On app interfaces, does that mean Quicksilver could search through menu options and such, like a modern day in-app command palette?

2 points
pendolino's avatar
@pendolino (replying to @maguay )
2 months ago

I think it was the 'user interface plugin' that did that https://qsapp.com/about.php. From the description: "Access the menus and windows of running applications."

Way ahead of its time QS was it 🙂

1 point
What's the best tool for building a customized API documentation?

Let's say you have an API you want to document and you want to: - Let your users test their calls to the API thanks to a "playground" like the one on the Figma API - Be able to customize it to matc...

What's the best way to get feedback about a design or product?

Do you have a favorite survey or poll tool to get feedback, or a unique process to get actionable insights from your users about your design, product features, pricing, and more? There was an inte...

The community for power users.