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
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
P and get a search bar, only here you’d search through program features.
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.
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.
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
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.
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.
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.
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.
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.
There was an easier way all along: Keyboard shortcuts, where you’d press
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.
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.
What makes a command palette?
“A command palette has quite a few parts,” said Vohra:
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.
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
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.
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.
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...
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...
I've been using Confluence since 2013, and in my opinion, it's the best document collaboration tool. Lately, I've seen that Notion is getting trendy. Any Notion heavy user around?
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.
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 -cto 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.
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!
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.
No mention of quicksilver?
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.
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)
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?
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 🙂
The difference between the terminal command palette of yore. and the command palette in today's tools are fuzzy search, auto-complete and natural language discovery. The drive being towards natural language interfaces for systems which help us extend our abilities to interact with the system without explicitly being aware of the domain vocabulary
Great point. I often have to Google obscure Terminal commands before using them, when in Alfred I can just type part of what I’m looking for and it finds them. That has made text-driven interfaces far more accessible.
Of course Emacs started all of this, almost 50 years ago. But more recently, I've come to believe (and not in a good way) that voice is the new command-line: you have to phrase your request just so in order for it to be understood, with only cryptic error messages. A "command palette" for voice I/O is sorely needed!