Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quiet Pointer

Quiet Pointer

A big friendly hand for your cursor. Poke included.

A native macOS menu bar app that replaces the system cursor on demand with a large, highly visible hand pointer — perfect for screen shares, recordings, and live demos. Click, and the hand pokes. Part of the Quiet Apps family.

macOS Swift SwiftUI License: MIT Release Downloads Stars

Install · Features · Usage · Build from source · FAQ


Why

You're presenting. You say "click here" — and half the room can't find your tiny arrow on a 4K screen.

Quiet Pointer lives in your menu bar. One hotkey (⌃⌥P) swaps the system cursor for a big cartoon hand that everyone can follow. Click, and the hand does a satisfying poke — click faster and the pokes get wilder. Only the cursor's appearance changes: clicking, dragging, selecting, and navigating all work exactly as before. No cloud. No account. No telemetry.

Features

Current release: version 1.1.4, build 6 — see CHANGELOG for per-build notes

The hand

  • System-wide cursor replacement — a cartoon hand pointer (white glove) atop a long fading shadow beam floats above every app and follows the mouse pixel-for-pixel; the fingertip is the hotspot
  • Two hand stylesClassic glove (upright pointer) or Comic glove (diagonal "mouse cursor" glove with a striped cuff and a straight shadow beam along the arm's axis)
  • Replaces the real arrow — while enabled, the macOS cursor is hidden (CGDisplayHideCursor) and the hand stands in; toggling off restores the arrow instantly
  • Vector-drawn in code — stays crisp at any size and display scale, no bundled images
  • Multi-monitor — one overlay per display, rebuilt automatically when displays change; the hand crosses screens seamlessly

The poke

  • Click "poke" animation — a single click just moves the pointer; rapid repeat clicks fire a comic burst at the fingertip that cycles through four styles (sparkle → spikes → jagged ring → double-sparkle) and grows with the click count
  • Two click motionsPoke (forward jab + swell) or Press (the hand + shadow recoil down the shadow's axis and bounce back against the clicked point)
  • Four expressiveness modesShy finger → Gentle nudge → Bold poke → In your face — each with its own jab distance, scale, speed, and wobble
  • Speed-reactive intensity — rapid clicks ramp the poke up to 3× the base animation
  • Works everywhere — clicks are caught with global NSEvent monitors, so pokes fire no matter which app is focused

Customization

  • Color — White (soft grey shadow, grey/blue bursts) or Black (dark shadow beam, black bursts); the glove itself is always white
  • Hand size — slider in Preferences, from subtle to billboard
  • Shadow length — slider from a short stub to a very long beam
  • Expressiveness slider — the same four-stop slider in the menu bar menu and in Preferences
  • Global hotkey — default ⌃⌥P, remappable in Preferences; works even when Quiet Pointer isn't focused
  • Launch at login — optional, one toggle in Preferences; the hand also restores its last on/off state on relaunch

Native macOS feel

  • Menu bar agent — no Dock icon (LSUIElement + .accessory policy)
  • 100% Swift — SwiftUI Preferences + AppKit overlay
  • No external dependencies — Apple frameworks only
  • No permissions required — no Accessibility, no Input Monitoring, no network

Install

Note: Quiet Pointer is not code-signed with an Apple Developer ID. macOS Gatekeeper will warn on first launch. The steps below work around it automatically.

Homebrew (recommended)

brew tap quietapps/quietpointer
brew install --cask quietpointer

The cask strips the macOS quarantine attribute on install so Gatekeeper does not block launch. The tap is at quietapps/homebrew-quietpointer.

Direct download

  1. Grab the latest QuietPointer-*.zip from Releases
  2. Unzip → drag Quiet Pointer.app into /Applications
  3. Strip the quarantine attribute (or right-click → Open once):
xattr -cr "/Applications/Quiet Pointer.app"
  1. Launch Quiet Pointer — the hand icon appears in your menu bar
  2. Click it (or press ⌃⌥P) and the hand takes over your cursor

If the app doesn't open (Gatekeeper blocked it)

macOS silently blocks unsigned binaries on first launch. Fix it once with any of these:

Option A — Right-click open (no Terminal needed)

  1. Open Finder → /Applications
  2. Right-click Quiet Pointer.appOpen
  3. Click Open in the warning dialog
  4. macOS remembers your choice for every future launch

Option B — Terminal

xattr -cr "/Applications/Quiet Pointer.app"

Option C — System Settings

  1. Try to launch the app — macOS shows a blocked notification
  2. Open System Settings → Privacy & Security
  3. Scroll to the message about Quiet Pointer
  4. Click Open Anyway

Updating

Homebrew

brew update
brew upgrade --cask quietpointer

Direct download

Download the newer zip from Releases, drag the new Quiet Pointer.app over the old one in /Applications, then run:

xattr -cr "/Applications/Quiet Pointer.app"

Your preferences are stored separately and are unaffected by app updates.

Uninstalling

Homebrew

# Remove the app and its preferences (via the cask's zap stanza)
brew uninstall --cask --zap quietpointer

# Drop the tap
brew untap quietapps/quietpointer

# Purge Homebrew's download cache
brew cleanup --prune=all -s

Optional manual cleanup if you skipped --zap:

defaults delete app.quiet.QuietPointer 2>/dev/null
rm -rf ~/Library/Preferences/app.quiet.QuietPointer.plist \
       ~/Library/Caches/app.quiet.QuietPointer \
       ~/Library/Saved\ Application\ State/app.quiet.QuietPointer.savedState

Direct download

# Move the app to Trash
rm -rf "/Applications/Quiet Pointer.app"

# Remove preferences
defaults delete app.quiet.QuietPointer 2>/dev/null
rm -rf ~/Library/Preferences/app.quiet.QuietPointer.plist \
       ~/Library/Caches/app.quiet.QuietPointer \
       ~/Library/Saved\ Application\ State/app.quiet.QuietPointer.savedState

Usage

Action How
Show / hide the hand Click the menu bar icon → Show hand, or press ⌃⌥P
Poke Click anything — rapid clicks poke harder
Set expressiveness Menu bar → drag the Shy finger ⟷ In your face slider
Switch hand style Menu bar → Hand style, or Preferences → Pointer
Change shadow / burst color Menu bar → Color (White / Black)
Change click motion Preferences → Clicks → Click motion (Poke / Press)
Adjust shadow length Menu bar slider, or Preferences → Pointer
Toggle click animation Menu bar → Animate on click
Remap the hotkey Menu bar → Preferences… → Global Hotkey → press new keys
Check for updates Menu bar → Check for Updates…
Quit Menu bar → Quit

Screen capture

Quiet Pointer is a real overlay drawn on top of the whole screen, so it appears in full-screen captures and recordings — share Entire Screen in Zoom/Meet, full-display capture in OBS/Loom/QuickTime.

It will not appear when you share a single application window: macOS composites single-window capture from that window's own content only and excludes everything drawn outside it — including the overlay and the real system cursor. Share the whole screen to show the hand.

Permissions

None. Quiet Pointer needs no Accessibility, no Input Monitoring, and no network access.

  • The global hotkey uses Carbon's RegisterEventHotKey, which works without Accessibility
  • Mouse tracking and click detection use global NSEvent monitors for mouse events, which macOS allows without special permission
  • Zero network calls — no analytics, no telemetry

How it works

Requirement Implementation
Cursor replacement One borderless, transparent, click-through NSWindow per display, above the shielding-window level, draws the hand and hides the real cursor with CGDisplayHideCursor
Follows the mouse Mouse events wake a per-display CADisplayLink; each frame pins the fingertip to NSEvent.mouseLocation, so movement is frame-synced (high-rate mice coalesce to one update per refresh) and the link pauses when the mouse is idle
Click poke Mouse-down monitors trigger a CAKeyframeAnimation jab (translate + scale + wobble) anchored at the fingertip, plus a CAShapeLayer starburst
Speed reactivity ClickMonitor keeps a sliding window of recent click timestamps and scales the animation up to 3×
Global hotkey Carbon RegisterEventHotKey — works unfocused, no Accessibility permission needed
Multi-monitor One overlay per NSScreen; the set is rebuilt on didChangeScreenParameters
No Dock icon LSUIElement + .accessory activation policy

The hand itself is vector-drawn in code (HandCursorRenderer), so it stays crisp at any size and display scale and ships no bundled image.

Build from source

Requirements

  • macOS 26.0 (Tahoe) or later
  • Xcode 26.0 or later

No paid Apple Developer account required — the project uses automatic signing with any personal team.

Steps

git clone https://github.com/quietapps/QuietPointer.git
cd QuietPointer
open QuietPointer.xcodeproj

Press ⌘R in Xcode. The hand icon appears in your menu bar.

Or from the command line:

xcodebuild -project QuietPointer.xcodeproj -scheme QuietPointer -configuration Release build

Project layout

QuietPointer/
├── main.swift                     # Accessory app bootstrap (no dock icon)
├── AppDelegate.swift              # Status item, menu, hotkey wiring
├── Info.plist                     # LSUIElement, bundle config
├── QuietPointer.entitlements
├── Managers/
│   ├── CursorManager.swift        # Overlay lifecycle, mouse tracking, hide/show
│   ├── HotKeyManager.swift        # Carbon global hotkey
│   └── ClickMonitor.swift         # Click-cadence → intensity
├── Models/
│   ├── PokeMode.swift             # Expressiveness modes, click motions, burst designs
│   ├── HandStyle.swift            # Hand styles + pointer colors
│   ├── Preferences.swift          # UserDefaults-backed settings
│   └── KeyCodeNames.swift         # Key-code → display string
├── Cursor/
│   ├── HandCursorRenderer.swift   # Vector hand drawing (both glove styles)
│   ├── HandCursorView.swift       # Hand layer + poke animation
│   └── CursorOverlayWindow.swift  # Transparent all-display overlay
└── Views/
    ├── PreferencesView.swift      # SwiftUI preferences + hotkey recorder
    └── PreferencesWindowController.swift

No external dependencies — Apple frameworks only (AppKit, SwiftUI, Carbon hotkeys, CoreAnimation).

Configuration

All settings are in Preferences (menu bar icon → Preferences…). Reset to defaults:

defaults delete app.quiet.QuietPointer

FAQ

Does Quiet Pointer send any data anywhere? No. Zero network calls. No analytics, no telemetry.

Does it change how clicking works? No. Only the cursor's appearance changes. Clicking, dragging, selecting, and navigating all behave exactly as before — the overlay is fully click-through.

Why doesn't the hand show up in my Zoom share? You're sharing a single window. macOS excludes everything drawn outside that window from single-window capture — including the overlay and the real cursor. Share your entire screen instead.

Does it need Accessibility permission? No. The hotkey uses Carbon's RegisterEventHotKey and mouse tracking uses global NSEvent monitors — neither requires Accessibility or Input Monitoring.

Does it work with multiple displays? Yes. One overlay per display, rebuilt automatically when you plug or unplug monitors. The hand crosses screens seamlessly.

The poke is too much (or not enough). Drag the Shy finger ⟷ In your face slider in the menu bar menu (or the matching slider in Preferences → Clicks). You can also disable Animate on click entirely.

Does it slow my Mac down? No. Movement is display-link driven — at most one update per screen refresh, no matter how fast your mouse reports — and the link pauses about a second after the mouse stops. CPU is 0 % while the hand is idle, and zero when it's hidden.

How do I quit? Click the menu bar icon → Quit.

Credits

Interaction design inspired by Pokey. All code and art here are independent and original — no Pokey assets are used.

The classic glove pointer is derived from "MultiTouch-Interface Mouse-theme 1-finger" by BenBois on openclipart.org, released into the public domain. Its SVG path data is parsed and re-rendered by HandCursorRenderer; the comic glove is original traced vector artwork rendered the same way.

License

MIT © Quiet Apps


If Quiet Pointer makes your demos easier to follow, drop a ⭐ on the repo.

About

A macOS menu bar utility that replaces the system cursor on demand with a large, highly visible **hand pointer** so it stands out in screen shares, recordings, and live calls. When you click, the hand does a satisfying **poke** — and the faster you click, the wilder it gets.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages