This will come off as angry old-man-yells-at-UI but man do I dislike the concept of a command palette. It just feels so lazy. Stuff everything wherever you want and the command palette will sort it out.
I'm happy to change my mind, maybe there's good use cases for it/people that really like the concept... but every time I have to use one, it feels suboptimal. As if there was a logical menu structure & keymap on the roadmap, but the software needed shipping, so now everything is everywhere and the user will just have to search for it.
Edit: thank you everyone for the thoughtful replies. I will try to love these things in the coming weeks.
I've been using a "command palette" in the same app since the mid 90s, on lots of different operating systems, and I've never really found that it's a lazy way to make commands available. Mostly what I want to use is available from a menu, and/or available from keyboard bindings, but if I wish I can also pull up the command palette and run the command directly -- sometimes that's handy if I personally know what the command is called but I can't remember which menu it might be in, or what the key binding is.
Of course, it's not called a "command palette"; normally Emacs calls it `execute-extended-command`, and more commonly people will refer to it as the minibuffer.
But that's just me doing the angry-old-man-yells-about-ancient-useful-UI thing. ;-)
This is not quite a command palette, but in macOS apps, you can press command-shift-/ to search the names of menu commands. I use that frequently in apps that I don't use regularly (and hence don't remember where all the menu items are). Very helpful for discoverability.
I use the command palette in VSCode frequently. Almost everything is available as a keybinding, or with a few clicks in nested menus, but I've only committed a subset to memory. The command palette means I only need remember the name of something to quickly find it again.
The Textual CP can also provide dynamic commands. Like opening a file. If I wanted to open "foo.py" I could hit "ofp" to match the "open foo.py" command (or any other matching fuzzy search). That's likely to be faster than a file open dialog.
Notion too. Slash commands (command pallete) provide a quick and easy way to execute actions without navigating through menus. I would argue that slash commands are much more discoverable than keyboard or graphical menus since they present of the option for documentation snippets.
Sublime Text where the current style of Command Palette was created/popularised does have hierarchical menus, context menus, and keybindings with the commands. The Palette is an alternative interface for accessing the same stuff.
have you ever used spotlight?
1password?
sublime?
vscode?
there are definitely use cases where a command palette is a vast improvement over navigating through multiple folders/menus, and it keeps your hands from leaving the keyboard
I'm happy to change my mind, maybe there's good use cases for it/people that really like the concept... but every time I have to use one, it feels suboptimal. As if there was a logical menu structure & keymap on the roadmap, but the software needed shipping, so now everything is everywhere and the user will just have to search for it.
Edit: thank you everyone for the thoughtful replies. I will try to love these things in the coming weeks.