Date: 2026-06-27
Status: Implemented in 8.1.5 and included in 8.1.6 release QA
Owner: Product / macOS platform
Target area: Hotkeys, external activation, help documentation
Minimum macOS: macOS 14.0
Some Mac users built muscle memory around the old trackpad gesture that opens Launchpad: pinch with thumb and three fingers. On newer macOS versions where the old Launchpad experience is no longer available in the same way, that gesture may no longer produce a useful launcher result for these users.
The product question is whether TagLauncher can bind itself directly to that trackpad gesture.
Decision:
TagLauncher should not attempt to capture or register the system-level trackpad gesture directly. The stable and App Store-safe path is to provide reliable invocation endpoints, then document how advanced users can map a third-party gesture tool to those endpoints.
Recommended product shape:
taglauncher://show--show-overlayExisting TagLauncher behavior:
src/Apptag/ProcessSingleton.swift--show-overlay posts TagLauncherExternalActivationRequested.showOrFocusOverlay().Relevant existing code:
src/Apptag/ProcessSingleton.swift:35src/Apptag/ProcessSingleton.swift:36--show-overlay.src/Apptag/ProcessSingleton.swift:52src/Apptag/ApptagApp.swift:1733src/Apptag/ApptagApp.swift:1742src/Apptag/ApptagApp.swift:1748showOrFocusOverlay().This means the project already has most of the internal activation path needed. The missing product layer is a clean public invocation surface and documentation.
Do not implement:
MultitouchSupport.framework.macOS does not provide a public, App Store-friendly API that lets a third-party app claim the system-level thumb + three-finger pinch gesture globally.
AppKit gesture events are designed for the active application and its responder/view hierarchy. They are not a stable registration mechanism for background launcher apps.
Low-level event taps are not a clean solution for this specific system gesture:
Private multitouch frameworks or raw device parsing are explicitly out of scope.
Use this chain:
User trackpad gesture
-> third-party gesture tool
-> TagLauncher public invocation endpoint
-> existing showOrFocusOverlay path
TagLauncher owns:
Third-party tools own:
Add a custom URL scheme:
taglauncher://show
Expected behavior:
Recommended future URL, optional:
taglauncher://quick-search
Not required for first release unless product wants a separate Quick Search gesture.
Existing internal path:
TagLauncher --show-overlay
For advanced documentation, the macOS open command can call the app with args:
open -na "TagLauncher" --args --show-overlay
Do not make this the primary user-facing recommendation if URL Scheme exists. URL Scheme is simpler for external tools.
Create a Help section:
Title:
Use a Trackpad Gesture to Open TagLauncher
Chinese title:
用触摸板手势打开 TagLauncher
Core message:
macOS does not let TagLauncher directly claim the system Launchpad gesture. To use a trackpad gesture, map the gesture in a third-party automation tool to taglauncher://show or to your TagLauncher global shortcut.
Chinese draft:
macOS 不允许 TagLauncher 直接接管系统级启动台手势。你可以使用第三方自动化工具,把触摸板手势映射到 taglauncher://show,或映射到 TagLauncher 的全局快捷键。
In Settings > Hotkeys, add a small help note or help button.
Recommended text:
Want to open TagLauncher with a trackpad gesture? Map your gesture to taglauncher://show using a gesture utility.
Chinese draft:
想用触摸板手势唤出 TagLauncher?可用手势工具将手势映射到 taglauncher://show。
Keep this as secondary help text. Do not make it a large settings section.
Primary documented tool:
Mention with caution:
Open-source/free option:
Avoid:
TagLauncher supports the Launchpad gesture.
Use:
You can map a trackpad gesture to TagLauncher using a gesture utility.
Chinese:
你可以使用手势工具,把触摸板手势映射到 TagLauncher。
This avoids implying TagLauncher owns or overrides system gestures.
Add CFBundleURLTypes to Info.plist.
Suggested scheme:
taglauncher
Supported routes:
taglauncher://show
Optional later:
taglauncher://quick-search
taglauncher://settings/hotkeys
Implement URL handling in the AppDelegate path.
Expected AppKit delegate method:
func application(_ application: NSApplication, open urls: [URL])
For taglauncher://show:
showOrFocusOverlay() path.For unknown URL:
If TagLauncher is not running and user opens:
taglauncher://show
Expected:
Implementation note:
If URL handling arrives before the app is fully initialized, queue a pending showOverlay request and execute it after applicationDidFinishLaunching.
If TagLauncher is already running:
taglauncher://show should route to the existing instance.Recommended:
taglauncher://show should show/focus, not toggle-hide.Reason:
External gesture tools may send repeated or delayed activations. A deterministic "show" command is safer than toggle.
Keep --show-overlay working.
Add tests or QA steps for:
open -na "TagLauncher" --args --show-overlay
This gives power users and automation tools a fallback if URL Scheme is unavailable.
Add a small secondary entry under the existing hotkey information:
Trackpad gestureUse a gesture utility to map a trackpad gesture to taglauncher://show.Open HelpChinese draft:
触摸板手势可用手势工具将触摸板手势映射到 taglauncher://show。查看帮助Do not add:
Help document should include:
taglauncher://show
open -na "TagLauncher" --args --show-overlay
Document only after verifying labels in the current BetterTouchTool UI.
Intended flow:
taglauncher://show
If BetterTouchTool cannot open URL directly in the selected action type, use command fallback:
open "taglauncher://show"
or:
open -na "TagLauncher" --args --show-overlay
TagLauncher should not request new permissions for this feature.
Expected:
This keeps TagLauncher simpler for App Store review and user trust.
Test taglauncher://show:
Expected:
Test:
open -na "TagLauncher" --args --show-overlay
Scenarios:
Expected:
Verify:
If BetterTouchTool is available:
taglauncher://show.If Hammerspoon is evaluated:
The feature is accepted when:
taglauncher://show is registered and works.taglauncher://show opens TagLauncher overlay.taglauncher://show focuses/shows the existing overlay.--show-overlay remains working.Rejected.
Reason:
No stable public API exists for a third-party app to claim the system Launchpad gesture globally.
Rejected.
Reason:
Requires private or brittle implementation paths, creates permission and App Store risk, and is likely to break across macOS releases.
Rejected for first release.
Reason:
Would imply TagLauncher owns gesture capture, increase complexity, and create user-support burden.
Rejected.
Reason:
TagLauncher should remain useful without external tools. BetterTouchTool can be documented as an optional integration, not a dependency.
taglauncher://show, or also taglauncher://quick-search?Open Help button, or only static help text?Recommended answers:
taglauncher://show.Open Help if the help page exists; otherwise static text.Apple:
External tools:
Do not build native trackpad gesture capture into TagLauncher.
Build and document a robust invocation endpoint instead:
taglauncher://show
Then let users map trackpad gestures to that endpoint with their preferred gesture utility. This is the lowest-risk path for macOS 26 compatibility, App Store review, privacy permissions, and long-term maintenance.