Skip to content

Repository files navigation

TapLock

TapLock App

Menu bar app to temporarily disable keyboard and trackpad input, or take relaxing breaks on your Mac.


Version Build
macOS Swift License

Releated

Website CLI Windows Port Homebrew


Install

brew tap ugurcandede/tap
brew install --cask taplock-app

On Windows

Relax mode has a Windows port: taplock-windows — a single executable in the notification area, no installer and no admin rights. Download · details

Lock mode is not part of the port. Config and event log share the schema used here, so both builds read each other's files.


Features

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

Lock Mode

Indefinite Mode Custom Duration Settings
Indefinite Duration Settings

Lock Screen Overlay

Lock Screen

Relax Mode

Relax Setup Break Countdown Break Relaxing Countdown Relax Settings
Relax Setup Break Countdown Break Session Countdown Relax Settings

Overlay Themes

Minimal Mini
Minimal Mini
Breathing Breathing (dark)
Breathing Breathing Dark

Usage stats

Once a day TapLock sends an anonymous ping to Google Analytics: a random install id, the app version and which mode you last used (lock or relax). Nothing else — no keystrokes, no input data, no device names. Turn it off any time by unchecking send anonymous usage stats in settings.


Build from source

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.app

Architecture

Built 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

Requirements

macOS 13.0 (Ventura) or later · Apple Silicon or Intel · Accessibility permission

License

Source Available — free to use, not to modify or redistribute. See LICENSE.

About

Menu bar app to temporarily disable keyboard and trackpad input on your Mac

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages