Menu bar app to temporarily disable keyboard and trackpad input, or take relaxing breaks on your Mac.
brew tap ugurcandede/taplock
brew install --cask taplock-app| Feature | |
|---|---|
| 🔒 | Lock Mode — Menu bar icon with lock status indicator |
| ⏱️ | Quick presets: 30s, 1m, 2m, 5m, 10m |
| 🔢 | Custom duration input (seconds, minutes, hours) |
| ♾️ | Indefinite lock mode (5 min safety auto-unlock) |
| ⏳ | Pre-lock delay with visible countdown |
| ⌨️ | Keyboard only mode |
| 🧘 | Relax Mode — Periodic break reminders with calming overlays |
| 🎨 | Overlay color and transparency presets |
| 🔅 | Screen dimming |
| 🔇 | Silent mode |
| 🚨 | Emergency cancel: hold ⌘⌥⌃L for 3 seconds |
| Relax Setup | Break Countdown | Break Relaxing Countdown | Relax Settings |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Overlay Themes
| Minimal | Mini |
|---|---|
![]() |
![]() |
| Breathing | Breathing (dark) |
|---|---|
![]() |
![]() |
Requires Swift 5.9+. Uses TapLock as a git submodule.
git clone --recurse-submodules https://github.com/ugurcandede/taplock-app.git
cd taplock-app
swift build -c release
./scripts/bundle.sh .build/release/TapLockApp
open TapLock.appBuilt on TapLockCore from the taplock package:
| Module | Purpose |
|---|---|
| TapLockSession | Lock session orchestration (start/cancel/onEnd) |
| RelaxingSession | Relaxing session with interval timer and break lifecycle |
| InputBlocker | CGEvent tap for input blocking |
| BrightnessControl | Screen brightness control |
| CountdownWindow | Full-screen lock overlay with countdown |
| RelaxingWindow | Relaxing overlay with breathing/minimal/mini themes |
| ConfigStore | JSON persistence for relaxing session config |
macOS 13.0 (Ventura) or later · Apple Silicon or Intel · Accessibility permission
Source Available — free to use, not to modify or redistribute. See LICENSE.











