feat: configure a persistent global launcher shortcut
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Conjure
|
||||
|
||||
A native macOS application launcher. Open it normally, search for an application, and press Return to open it or bring its existing instance forward. Global shortcuts are deliberately deferred.
|
||||
A native macOS application launcher. Open it normally or activate it with a configured global shortcut, search for an application, and press Return to open it or bring its existing instance forward.
|
||||
|
||||
## Build, run, and install
|
||||
|
||||
@@ -33,11 +33,22 @@ Open `Package.swift` in Xcode to edit the project. Use the bundled app above to
|
||||
- Type to filter applications; the first match is selected automatically.
|
||||
- Up/Down or Control-K/Control-J changes the selection without leaving search or modifying its text.
|
||||
- Return, keypad Enter, the Open Application button, or a double-click opens the selection.
|
||||
- Escape, Command-W, or switching focus away dismisses the launcher.
|
||||
- Escape or Command-W dismisses the launcher and restores the previously active application. Switching focus away dismisses it without stealing focus back.
|
||||
- Reopen from Finder or the Dock to show it again with an empty search. Dismissal leaves the process running; Command-Q quits it.
|
||||
- Standard macOS text-editing shortcuts work in the search field.
|
||||
- Command-comma opens the native Settings window.
|
||||
- Drag the panel background to move it.
|
||||
|
||||
## Global shortcut
|
||||
|
||||
Open **Conjure → Settings…** (`⌘,`), click **Record Shortcut…**, and press a combination containing Command, Option, or Control. Shift can be added. The shortcut is saved locally and restored when Conjure starts. No shortcut is claimed until you choose one; **Clear** disables it.
|
||||
|
||||
For Command-Space, click **Use ⌘Space**. If it conflicts, open **System Settings → Keyboard → Keyboard Shortcuts** and disable or change the conflicting Spotlight or Input Sources binding, or another app's shortcut, then try again. The Settings window includes an **Open Keyboard Settings…** button. Conjure reports conflicts rather than modifying macOS preferences, and a failed change preserves your working shortcut.
|
||||
|
||||
The global shortcut shows the launcher with an empty query and search focused. Press it again while the launcher is focused to dismiss it and return to the previously active app. If Conjure is running in the background, the shortcut brings it forward. Recording temporarily pauses global activation; Escape, moving focus out of the recorder, or closing Settings cancels recording and restores the saved binding.
|
||||
|
||||
Activation uses the native macOS hotkey API, without an Accessibility permission or a global keyboard monitor. It works only while Conjure is running; it does not launch a quit app or enable launch at login.
|
||||
|
||||
## Discovery and search
|
||||
|
||||
Applications are discovered in `/Applications`, `/System/Applications`, `/System/Library/CoreServices/Applications`, and `~/Applications`, including nested folders. Discovery runs off the UI thread and refreshes whenever the launcher is presented. Hidden items, invalid bundles, and helpers inside application packages are excluded; symlinked applications are deduplicated by their canonical paths.
|
||||
@@ -60,8 +71,8 @@ The brown tint is 35% opaque over an active, behind-window `NSVisualEffectView`
|
||||
|
||||
AppKit still provides text editing, table navigation, scrolling, application icons, controls, menus, fonts, and visual-effect materials. The background uses cached native radial gradients that fade to transparent: static soft blobs, without animations, timers, image assets, blur filters, or third-party UI dependencies. Decorative drawing does not intercept clicks. Increased-contrast settings strengthen the selection outline, and text colors are tuned for readability across the glows and selection.
|
||||
|
||||
- `Sources/Conjure`: application lifecycle, native window, and application launching.
|
||||
- `Sources/ConjureKit`: filesystem discovery and search ranking.
|
||||
- `Tests/ConjureKitTests`: deterministic discovery and ranking checks.
|
||||
- `Sources/Conjure`: application lifecycle, launcher and Settings windows, and application launching.
|
||||
- `Sources/ConjureKit`: filesystem discovery, search ranking, launch history, and global shortcut registration.
|
||||
- `Tests/ConjureKitTests`: deterministic discovery, ranking, history, shortcut validation, and installation safety checks.
|
||||
|
||||
The launcher uses Apple's [visual-effect materials](https://developer.apple.com/documentation/appkit/nsvisualeffectview), [table row selection drawing](https://developer.apple.com/documentation/appkit/nstablerowview/drawselection(in:)), [application launching](https://developer.apple.com/documentation/appkit/nsworkspace/openapplication(at:configuration:completionhandler:)), and [reopen lifecycle](https://developer.apple.com/documentation/appkit/nsapplicationdelegate/applicationshouldhandlereopen(_:hasvisiblewindows:)).
|
||||
|
||||
Reference in New Issue
Block a user