Skip to content

martincalander/MacDragScroll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mac Drag Scroll app icon

Mac Drag Scroll

Middle-button drag scrolling that feels at home on macOS.
Hold the wheel, move the mouse, and glide through long pages, editors, timelines, and canvases.

Latest release Checks 3/3 OpenSSF Scorecard OpenSSF Best Practices macOS 14 or later MIT license

English · 日本語 · 简体中文

Mac Drag Scroll controlling a long document with a compact Liquid Glass drag indicator

Download for macOS  ·  Install with Homebrew  ·  Build from source

Mac Drag Scroll brings the familiar Windows-style middle-click drag gesture to an external mouse on macOS. It is a small native menu bar utility: no account, no cloud service, and no interference with normal trackpad gestures.

See It in Action

Hold the middle mouse button, drag to scroll, flick to reverse, and release to stop

Press and hold the middle mouse button, then move away from the origin. Distance controls speed, direction controls the scroll vector, and releasing stops immediately. The compact visualizer can be resized, restyled, animated, or turned off.

Why Mac Drag Scroll

Natural control Scroll vertically, horizontally, or diagonally with one continuous gesture.
Stable targeting The gesture stays attached to the window where the drag began.
External-mouse focus Trackpad gestures are ignored instead of being intercepted or remapped.
Responsive feedback The one-dot Liquid Glass visualizer reacts to direction, distance, double-clicks, and fast reversals.
Menu bar native Run quietly in the background and open Settings only when needed.
Made to recover Permission repair, persistent preferences, local diagnostics, and verified updates are built in.

Quick Start

Homebrew

brew install --cask martincalander/tap/mac-drag-scroll

Direct Download

  1. Download MacDragScroll.dmg from the latest release.
  2. Open the disk image and drag Mac Drag Scroll into Applications.
  3. Right-click the app in Finder, choose Open, then confirm the first launch.
  4. Grant Accessibility access when macOS asks.

Drag Mac Drag Scroll into the Applications folder

Why does the first launch require right-click → Open?

Current releases carry a stable project code signature but are not Apple Developer ID signed or notarized because that requires a paid Apple Developer membership. macOS may therefore block a normal double-click on a newly downloaded build. In Finder, right-click Mac Drag Scroll, choose Open, and confirm. This is required once for each manually downloaded build.

The pinned project identity keeps the Accessibility grant stable across updates. Sparkle signatures and GitHub build provenance independently protect and document release files. See Security and Releasing.

Install without Homebrew
curl -fsSL https://github.com/martincalander/MacDragScroll/raw/main/install.sh | bash

Grant Permissions

Mac Drag Scroll needs Accessibility permission to detect the configured mouse button globally and send scroll events to the target window. It does not use this permission to record typing or inspect content. Input Monitoring is not required.

Enable Accessibility for Mac Drag Scroll

Open System Settings → Privacy & Security → Accessibility and enable Mac Drag Scroll. The app checks automatically and starts monitoring as soon as access is active; a restart action appears only if macOS does not activate the event tap immediately.

When upgrading from 1.1.0 or earlier to 1.2.0, macOS requires one final Accessibility grant because the earlier builds used changing ad-hoc identities. Later updates retain the pinned identity and should not require permission again.

Tune the Feel

Open Settings from the menu bar icon.

Setting What it controls
Speed and acceleration Base scroll rate and how quickly it increases with drag distance.
Dead zone The neutral area around the gesture origin.
Precision mode Hold an additional configurable modifier during a drag for temporarily slower, finer scrolling.
Cursor hold Optionally keep the pointer at the middle-click origin so pointer-sensitive content continues scrolling.
Trigger Middle click by default, with guarded alternatives for primary and secondary buttons.
Visualizer Size, opacity, tint, glass intensity, and motion effects.
Excluded apps Applications where drag scrolling should stay disabled.
Launch behavior Login startup and whether the helper remains in the menu bar.
Updates Automatic checks, release history, and manual update controls.

Preferences are stored per macOS user and survive app updates and normal uninstall/reinstall cycles. Details and recovery paths are documented in Support.

Built for Trust

  • Local by design: no account, analytics, advertising, or cloud backend.
  • Narrow input scope: only the configured mouse trigger starts scrolling; trackpad gestures are filtered out.
  • Permission aware: scrolling disables itself when required access is missing or revoked.
  • Inspectable releases: automated checks, secret scanning, CodeQL, Sparkle signatures, and GitHub attestations run through the public repository.
  • Private diagnostics: crash reports stay on the Mac until the user chooses to share them.

Read Privacy, Security, and the implementation Architecture.

Build from Source

Requirements: macOS 14 or later and Xcode 26.2 or later.

git clone https://github.com/martincalander/MacDragScroll.git
cd MacDragScroll
xcodebuild -project macdragscroll.xcodeproj \
  -scheme macdragscroll \
  -configuration Debug \
  build

Run the test suite with:

xcodebuild -project macdragscroll.xcodeproj \
  -scheme macdragscroll \
  -destination 'platform=macOS' \
  test

Contributions are welcome. Start with Contributing, the Code of Conduct, and the Roadmap.

Project Guide

Resource Purpose
Support Permission repair, diagnostics, and common questions.
Architecture Runtime boundaries, safety invariants, and event flow.
Privacy What the app can access and what it never collects.
Security Vulnerability reporting and release verification.
Governance Maintainer roles, review policy, and project decisions.
Changelog Version history and release notes.
Scorecard notes OpenSSF posture, controls, and current limitations.
Releasing Maintainer release and provenance process.

Requirements

  • macOS 14 or later
  • An external mouse with a middle button or clickable scroll wheel
  • Accessibility permission

Credits

License

Mac Drag Scroll is available under the MIT License.

Made by Martin Calander.

About

Windows-style drag scrolling for external mice on macOS. Free premium app.

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages