Double-tap your thumb on the trackpad → your app grid.
A Launchpad-style, full-screen app launcher for macOS (Tahoe removed Launchpad), driven by a gesture no other tool uses: a thumb double-tap. Thumbstap tells your thumb apart from your fingertips using the touch-ellipse data that everyone else throws away.
- No conflicts. macOS reserves three- and four-finger swipes/pinches, but plain taps are unclaimed territory — nothing in the OS fights you for them.
- Thumbs are geometrically different. The raw multitouch stream reports each contact's ellipse (major/minor axis). Most tools only read position and finger count. The elongation ratio (major ÷ minor) separates thumbs from fingertips cleanly — measured on real hardware: fingertip taps 1.09–1.57, thumb taps 1.64–1.95, with no overlap.
- A tap you can't fire by accident. Combined with physical-click gating (see below), normal pointing, clicking, and dragging never trigger it.
- Thumb double-tap → full-screen frosted app grid; tap again (or Esc, or click outside) to close
- Dockless background app with a Stats-style menu-bar icon for opening the grid, pausing the gesture, launching at login, or quitting
- 7×6 paged grid with trackpad swipe paging and clickable page dots
- Localized app names (계산기, not Calculator) via the same Spotlight metadata the native launcher uses
- Search: just start typing when the grid opens; Enter launches the top hit
- Launchpad-style manual arrangement: long-press an icon → jiggle mode; drag to reorder with live reflow; drag to a screen edge to flip pages; order persists across restarts (new installs append at the end)
- Right-click an icon → add a Finder alias to the Desktop, or reveal in Finder
- Physical-click gating: real button clicks and a brief 0.15 s settling tail suppress gesture recognition, so click-dragging icons never reads as a thumb tap
- Per-user calibration for the thumb/fingertip boundary
- macOS 14+ on a Mac with a built-in trackpad (or Magic Trackpad)
- Xcode command line tools
- Works best with tap to click turned off (System Settings → Trackpad) — with it on, light taps also click whatever is under the cursor
brew install --cask 1jsjs/tap/thumbstapThen launch Thumbstap from /Applications. (The bundle is ad-hoc signed while the project has no Apple Developer ID; the Homebrew path installs without Gatekeeper friction, whereas a browser-downloaded zip will warn.)
git clone https://github.com/1jsjs/thumbstap.git
cd thumbstap
./Scripts/build-app.sh
open dist/Thumbstap.appThumbstap.app runs as a background agent: it has no Dock icon and keeps a small
grid icon in the right side of the menu bar. Use that menu to open the grid,
pause gesture recognition, launch Thumbstap at login, view app information, or
quit. The icon is blue while the gesture is active, orange while it is paused,
and red if the gesture engine cannot start.
For a quick development run without building the app bundle:
xcrun swift run thumbstap-appCalibrate the thumb boundary for your hand (recommended, ~30 seconds):
xcrun swift run thumbstap-demo calibrateThe result is saved to ~/Library/Application Support/Thumbstap/profile.json and shared by the app and the CLI demo. Your grid arrangement lives next to it in layout.json.
| Target | What it is |
|---|---|
Thumbstap |
Pure, hardware-free core: contact model, geometry classifier, tap detector, double-tap recognizer, calibrator. Fully unit-tested — no private API anywhere. |
CMultitouch |
Minimal C bridge to the private MultitouchSupport.framework. |
ThumbstapMultitouch |
The live TouchSource wrapping the bridge. |
thumbstap-demo |
CLI: verbose tap logging + calibration mode. |
ThumbstapApp |
The launcher GUI (SwiftUI overlay window + app grid). |
The private framework is linked only at the executable boundary; the core stays pure so the classification logic is testable and reusable.
xcrun swift test # core tests, no trackpad needed- Built on a private framework (
MultitouchSupport). No App Store, no sandbox, and an OS update could break it — this is the same foundation established trackpad utilities have shipped on for 15+ years, but the risk is real. - Ellipse thresholds were measured on one machine's trackpad family; run the calibrator on your hardware.
- The gesture attaches to every multitouch device present at launch: a Magic Trackpad connected later needs an app restart, the calibration profile is global (not per-device), and a Magic Mouse's touch surface is not filtered out yet. The grid itself is fully mouse-operable via the menu-bar icon.
- Reordering across a page boundary pops instead of morphing (Launchpad behaved similarly).