mirror-ghostty/macos
Mitchell Hashimoto 74e1c47623
macOS: Command Palette (#7153)
This introduces a command palette (inspired by @pluiedev's work in
#5681, but not using it as a base) for macOS.

The command palette is available in the `View` menu and also bindable
via `toggle_command_palette`, default binding is `cmd+shift+p` to match
VSCode.

The commands in the command palette must map to a _bindable_ action,
though they may not have an associated keybinding. This means that any
new binding actions we add in the future can be represented here and
also makes it easy in the future to add configuration to add new custom
entries to the command palette. For this initial PR, the available
commands are hardcoded (`src/input/commands.zig`).

I've noticed in other programs (VSCode, Zed), the command palette
contains pretty much _all available actions_ even if they're basically
useless in the context of a command palette. For example, Zed has the
"toggle command palette" action in the command palette and it... does
nothing (it probably should hide the palette). I followed @pluiedev's
lead and made this subjective in this PR but I wonder if we should
actually force all binding actions to be available.

There are various other improvements I'd like to make but omitted from
this PR for the sake of limiting scope:

* Instead of an entry with no matches doing nothing, we can allow users
to manually input _any_ configurable binding.
* Localization, since macOS doesn't have any yet. But for Linux when we
port this we probably have to change our strings extraction.

## Demo


https://github.com/user-attachments/assets/a2155cfb-d86b-4c1a-82b5-74ba927e4d69
2025-04-22 08:52:27 -07:00
..
Assets.xcassets macos: add a variety of artist-drawn alternate icons 2025-02-11 14:51:43 -08:00
Ghostty.xcodeproj macOS: extract TerminalCommandPalette 2025-04-21 09:18:46 -07:00
Sources macOS: Command Palette (#7153) 2025-04-22 08:52:27 -07:00
.gitignore build: LipoStep 2023-02-19 10:44:53 -08:00
Ghostty-Info.plist macos: disable auto-updates for local builds 2024-12-29 15:48:59 -05:00
Ghostty.entitlements macos: add entitlements for basically everything so macos asks 2023-11-23 09:00:20 -08:00
GhosttyDebug.entitlements macos: add Sparkle via Swift PM 2023-12-18 19:09:38 -08:00
GhosttyReleaseLocal.entitlements fix(macos): ReleaseLocal build configuration with "Library Validation" disabled 2023-12-20 16:54:58 -05:00