Skip to content

About

Native macOS menu bar controls for reversible input-latency experiments

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Mac Latency Control

CI License: MIT macOS 13+

Mac Latency Control is a native, open-source menu bar app for controlled and reversible macOS input-latency experiments. It keeps each change independent, records exact preference snapshots before mutations, and avoids private system hooks.

It is an experimental tuning and measurement tool, not a promise of Windows latency parity. A user-space app cannot bypass WindowServer or remove the physical display pipeline.

What It Controls

Control Behavior Scope
Native mouse acceleration off Writes com.apple.mouse.linear after a snapshot Cursor trajectory, not click timestamps
LinearMouse active Starts or stops LinearMouse Never edits LinearMouse configuration
Light trackpad click Sets the two click thresholds to 0 Physical actuation pressure
Cursor shake magnification off Writes CGDisableCursorLocationMagnification Cursor visibility behavior
Silent audio primer Runs a silent 48 kHz AudioQueue with 128-frame app buffers Keeps the output path active; does not set a device or Logic Pro buffer
Launch at login Uses SMAppService.mainApp Official macOS login item

The benchmark panel can open Normal Chrome or an isolated Direct Present profile with one targeted experiment:

--disable-features=VSyncAlignedPresentationForScrolling

VSync and Chrome's frame limiter remain enabled. The app never adds --disable-gpu-vsync, --disable-frame-rate-limit, --run-all-compositor-stages-before-draw, GamePolicy, or taskpolicy.

Safety Boundary

Mac Latency Control does not restart or modify Dock, Finder, SystemUIServer, WindowServer, display modes, display arrangement, AWDL, private WindowServer defaults, or CoreAudio device buffer sizes. Logic Pro remains the owner of its I/O buffer.

Every managed preference change creates a JSON restore point first. Multi-key changes use rollback-on-failure transactions. Event-tap inspection is explicit because reading Core Graphics tap statistics resets their measurement window.

See Safety and Technical Audit.

Requirements

  • macOS 13 Ventura or newer
  • Xcode Command Line Tools for source builds
  • Google Chrome only for the browser benchmark buttons
  • LinearMouse only for its optional process switch

No third-party runtime dependencies are bundled.

Install From Source

git clone https://github.com/Neekzu/MacLatencyControl.git
cd MacLatencyControl
make verify
make install

The app is installed at:

~/Applications/Mac Latency Control.app

The installer verifies the app before replacing an existing installation. It also migrates the legacy external audio primer only after the in-process primer confirms that it is running. A timestamped migration backup is retained under ~/Library/Application Support/MacLatencyControl/MigrationBackups.

Release archives are currently ad-hoc signed and not Apple-notarized. Building from source is the most transparent installation path.

Use

  1. Click the bolt icon in the macOS menu bar.
  2. Change one switch at a time.
  3. Run alternating benchmark sets under the same hardware and display state.
  4. Use Restore latest to restore the most recent captured preference state.

The audio primer is off for a fresh installation. Existing legacy users retain their active primer state during migration.

For a defensible test protocol, use Benchmarking.

Local Data

The app stores only local logs, audits, state, and restore snapshots:

~/Library/Application Support/MacLatencyControl/

There is no analytics, telemetry, account, update checker, or background network request. Benchmark buttons open their destinations in Chrome. See Privacy.

Development

make test       # Swift unit tests
make icon       # regenerate the original app icon
make app        # release .app bundle
make archive    # .app plus ZIP and SHA-256
make verify     # tests, bundle checks, safety scan, privacy scan

The project is a dependency-free Swift Package using AppKit, CoreGraphics, AudioToolbox, and ServiceManagement. Architecture notes are in Architecture.

Uninstall

make uninstall

Snapshots and audits are preserved. To remove local data and app defaults too:

./Scripts/uninstall.sh --purge-data

Uninstalling does not silently rewrite input preferences. Restore a snapshot in the app first when that is the desired outcome.

Project Status

Version 1.0.1 packages the proven-safe subset of a longer macOS input-latency investigation. The remaining OS-wide compositor floor is not fixable through a supported public user-space API. Reports with controlled A/B data are welcome.

The project originated from a community investigation in r/macOS.

Contributions are welcome under the MIT License. Please read Contributing and the Code of Conduct.

About

Native macOS menu bar controls for reversible input-latency experiments

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages