Repository navigation
hammerspoon: replace Seal with a native glass launcher - #66
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replace Seal's
hs.chooserinterface with a native glass launcher while retaining its Lua plugin engine and the existing Cmd+P shortcut.Launcher.spoonunderhammerspoon/.hammerspoon/vendored/, with upstream provenance and MIT attribution. Keep the four configured plugins and existingseal_*settings namespaces.modules.chooser, a chooser-compatible adapter backed by a persistent Swift/AppKit process. No globalhs.chooserpatch and no chooser fallback.CLAUDE.mdas requested.Implementation
Lua retains original choice objects, query matching, plugin callbacks, and action execution. Swift handles rendering, input, keyboard navigation, editing shortcuts, cancellation, and focus.
The newline-delimited JSON bridge acknowledges full snapshots and coalesces pending updates to avoid dropped
hs.task:setInputwrites. Session/revision/input counters reject stale results and selections. Completion waits for the native panel to hide; plugin callback errors cannot disable streaming. Reload cleanup preserves the existing window-state persistence callback.The final simplification pass unifies native/programmatic queries, avoids rematching on display-only changes, and skips hidden-window rendering. API coverage and remaining compatibility gaps are documented in
vendored/Launcher.spoon/README.md; this is intentionally not fullhs.chooserparity.Setup
Stow the Hammerspoon package, then:
make -C ~/.hammerspoon nativeReload Hammerspoon and press Cmd+P. Compilation requires Apple Command Line Tools with a macOS 26+ SDK. Runtime uses glass on macOS 26+ and a visual-effect material on macOS 13–25. Generated binaries remain ignored.
Validation
make formatand pre-commit on all changed files.make lint: existing unrelatedbash/.bash_profileformatting issue and missing localshellcheckblock the shell hooks. Other full-repository hooks and all changed-file hooks pass.