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.
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.
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.
| 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. |
brew install --cask martincalander/tap/mac-drag-scroll- Download
MacDragScroll.dmgfrom the latest release. - Open the disk image and drag Mac Drag Scroll into Applications.
- Right-click the app in Finder, choose Open, then confirm the first launch.
- Grant Accessibility and Input Monitoring access when macOS asks.
Why does the first launch require right-click → Open?
Current releases are not Apple-notarized because notarization 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 downloaded build.
The project still publishes Sparkle signatures and GitHub build provenance so release files can be verified independently. See Security and Releasing.
Install without Homebrew
curl -fsSL https://github.com/martincalander/MacDragScroll/raw/main/install.sh | bashMac Drag Scroll needs two macOS permissions: Input Monitoring detects the external mouse button globally, and Accessibility sends scroll events to the target window. It does not use these permissions to record typing or inspect content.
Open System Settings → Privacy & Security, enable Mac Drag Scroll under both Accessibility and Input Monitoring, then reopen the app if macOS requests it. The Permissions tab shows live status and provides repair shortcuts.
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. |
| 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.
- 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.
Requirements: macOS 26.2 or later and a compatible version of Xcode.
git clone https://github.com/martincalander/MacDragScroll.git
cd MacDragScroll
xcodebuild -project macdragscroll.xcodeproj \
-scheme macdragscroll \
-configuration Debug \
buildRun the test suite with:
xcodebuild -project macdragscroll.xcodeproj \
-scheme macdragscroll \
-destination 'platform=macOS' \
testContributions are welcome. Start with Contributing, the Code of Conduct, and the Roadmap.
| 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. |
| Changelog | Version history and release notes. |
| Scorecard notes | OpenSSF posture, controls, and current limitations. |
| Releasing | Maintainer release and provenance process. |
- macOS 26.2 or later
- An external mouse with a middle button or clickable scroll wheel
- Accessibility and Input Monitoring permissions
Mac Drag Scroll is available under the MIT License.
Made by Martin Calander.



