Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScrollToggle

Windows-style middle-click scrolling for macOS. Hold (or click) the middle mouse button to drop an anchor, then move the mouse to scroll in any direction — the further from the anchor, the faster it scrolls.

A tiny menu bar app, single Swift file, no dependencies.

Features

  • Hold middle button (default 0.2 s) to enter scroll mode; move the mouse to scroll, speed grows with distance from the anchor
  • Quick middle-click passes through to apps unchanged (e.g. open link in new tab)
  • Scroll mode stays on after release — exit with another click or Esc
  • Horizontal + vertical scrolling with a dead zone around the anchor
  • Menu bar settings: Scroll Speed (0.5×–3×) and Hold Delay (0.1–0.5 s), persisted across restarts
  • Enable/disable toggle in the menu

Install

Requires macOS 12+ and Xcode Command Line Tools (xcode-select --install).

git clone https://github.com/iburakct/ScrollToggle.git
cd ScrollToggle
./build.sh
open ~/Applications/ScrollToggle.app

On first launch macOS asks for Accessibility permission (System Settings → Privacy & Security → Accessibility). This is required to observe the middle mouse button and post scroll events. Grant it and the app starts working immediately — the arrow icon appears in your menu bar.

To launch at login: System Settings → General → Login Items → add ScrollToggle.

Uninstall

osascript -e 'quit app "ScrollToggle"'
rm -rf ~/Applications/ScrollToggle.app

Optionally remove it from the Accessibility list in System Settings and delete its settings with defaults delete local.burak.scrolltoggle.

Privacy note

The app installs a CGEvent tap that listens for mouse buttons and key-down events. The keyboard part is used solely to detect the Esc key (to exit scroll mode) — nothing is logged, stored, or transmitted. The app makes no network connections at all; it's ~200 lines of Swift, read it yourself: main.swift.

Tuning

Speed and hold delay are in the menu bar menu. Dead zone size and anchor overlay size are constants at the top of main.swift if you want to tweak and rebuild.

License

MIT

About

Windows-style middle-click scrolling for macOS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages