Visit the website · Download for Mac
Control your Mac's system volume by sliding one finger along the physical edge of its trackpad, wherever the cursor is on screen.
EdgeVolume is an experimental desktop utility built with Tauri 2, Rust, React, and TypeScript. A small floating indicator shows the current volume and whether it is increasing or decreasing.
Platform status: The macOS prototype is implemented and has been tested on an Apple Silicon Mac. Windows development has started: source builds include audio controls and read-only touchpad diagnostics. Windows physical edge gestures are not implemented or hardware-validated yet.
1. Enable gestures. Open EdgeVolume and click Enable gestures. Start with the default Right edge.
2. Slide on the trackpad itself. Place one finger inside the rightmost strip and slide up to increase volume or down to decrease it. Your cursor can be anywhere on the screen. Lift your finger when you are done. This guide shows the default direction; Reverse direction swaps up and down.
3. Watch the popup. It shows the actual volume percentage and whether volume is increasing or decreasing, then disappears after you stop. The guide above is an illustration; the image below is a screenshot of the real Mac app.

The green strip marks the active part of the physical trackpad. Choose Left, Right, or Both, adjust Edge width if the strip feels too narrow, and adjust Sensitivity to change how quickly volume moves. The screenshot shows gestures paused; click Enable gestures to start.
EdgeVolume-v0.1.0-apple-silicon.dmg. For an Intel processor, download EdgeVolume-v0.1.0-intel.dmg.Rust, Node.js, npm, Xcode, and Terminal are not needed to use the downloaded app. Requires macOS 15 or newer. ZIP downloads containing the same app are also available.
This is an early-access release: the apps are ad-hoc signed, not Apple Developer ID signed or notarized. macOS may require your approval before the first launch. If you choose to run it, follow Apple's instructions for an app from an unidentified developer. Do not disable your Mac's security protections.
Only approve the app if you downloaded it from this repository's release page and trust it.
This approves that app for future launches. The Open Anyway option appears after you have tried opening the blocked app. See Apple's official instructions. If the warning says the app is damaged or will harm your computer, stop and check the download rather than treating it as a normal first-launch approval.
You can close the settings window and keep using the gesture. Click the EdgeVolume menu bar icon to open preferences, pause gestures, or quit. After reopening the app, enable gestures again.
Apple Silicon hardware input was tested on macOS 27.0.1. Intel builds are compiled in GitHub Actions; Intel trackpad behavior and other macOS versions still need hands-on validation.
Want to change the code? The developer setup below is separate from installing the downloaded app.
Download the Windows development ZIP · Verified build and artifacts
This is an experimental audio and touchpad diagnostic build. Physical trackpad edge gestures are not enabled yet. It includes system volume read/write, a volume indicator preview, explicit ±5 percentage point test buttons, and background touchpad report counts.
You do not need Rust, Node.js, npm, or C++ developer tools. If WebView2 is missing, the installer uses Tauri's WebView2 bootstrapper, which may need an internet connection. The installer is unsigned, so Windows may show an unknown-publisher warning; only use a repository build you trust.
The linked development artifact expires on 21 October 2026 and GitHub requires sign-in to download it. After expiry, use a newer successful run in Windows development builds. These artifacts are for testing and are separate from supported public releases.
See the Windows read-only probe and tester checklist for reporting results. Increasing report counts do not yet prove physical finger coordinates or working edge gestures.
xcode-select --install if needed.Release builds target macOS 15 or newer. Hardware input was validated on Apple Silicon, macOS 27.0.1; other hardware and OS versions still need validation. The original PRD's macOS 12+ target is deferred.
git clone https://github.com/reveuse12/edge-volume.git
cd edge-volume
npm ci
npm run tauri dev
This launches the native desktop app and its development frontend. Running npm run dev alone opens the preferences frontend without access to native trackpad input or system volume.
A normal edge swipe needs no keyboard key or stationary hold. Require Option key is an optional extra safeguard. Starting outside the strip, sideways movement, multiple fingers, releasing Option when required, interrupted active input, changing fingers, or a large coordinate jump cancels the gesture until all fingers lift. Volume changes are limited to 60 percentage points per second. Preferences show why a touch was rejected.
Closing preferences keeps EdgeVolume running in the menu bar. Choose Quit EdgeVolume from its menu to exit.
The indicator appears near the lower-right corner of the display associated with its window. On macOS a native nonactivating panel draws the indicator directly, independently of the preferences WebView. It is configured to join desktop Spaces and other apps' fullscreen Spaces, stay visible when EdgeVolume is inactive, and display above ordinary app windows. It follows the display containing the cursor. It stays above ordinary windows, does not take keyboard focus, and ignores clicks. It reads volume back from the audio device after adjustments, so the percentage reflects the reported output level.
Click Preview volume indicator in preferences to show your current volume for five seconds without changing it.
# TypeScript check and production frontend build
npm run build
# Gesture engine tests
cargo test --locked --manifest-path src-tauri/Cargo.toml
# Package the desktop application
npm run tauri build
The macOS app is generated at:
src-tauri/target/release/bundle/macos/EdgeVolume.app
For a development bundle, run npm run tauri build -- --debug. Its app is under src-tauri/target/debug/bundle/macos/. Builds use an ad-hoc signature. Developer ID signing and Apple notarization are not configured.
To check native trackpad input and audio access independently of the UI:
clang tools/mac-probe.c src-tauri/native/mac.c \
-framework CoreFoundation -framework CoreAudio -framework CoreGraphics \
-o /tmp/edgevolume-probe
/tmp/edgevolume-probe
Touch the trackpad during the five-second probe. It reports adapter startup, the audio read status, and aggregate frame counts. It does not change volume.
Physical trackpad contacts
→ macOS native input adapter
→ Rust edge gesture state machine
→ CoreAudio default output volume
→ React preferences and floating indicator
The macOS adapter dynamically loads Apple's private MultitouchSupport framework to receive normalized finger coordinates. Ordinary cursor or scroll events cannot identify the physical trackpad edge.
The Rust engine requires a single contact that begins inside an active edge, applies an activation deadzone, rejects invalid gestures, and clamps volume to 0–100%. CoreAudio reads and writes the current default output device. Unsupported audio outputs temporarily pause gestures; the enabled preference is kept so an adjustable output can resume automatically. Output changes cancel the current touch, and volume writes stay bound to the output where the gesture began.
Settings are stored in Tauri's application configuration directory as settings.json. Trackpad contact data is held in memory; the app does not send it over the network or write it to logs.
| Path | Purpose |
|---|---|
src/main.tsx | Preferences and volume indicator UI |
src/style.css | UI styling |
src-tauri/src/gesture.rs | Gesture recognition and tests |
src-tauri/src/main.rs | Desktop lifecycle, settings, commands, tray, and indicator |
src-tauri/native/mac.c | macOS physical contact and CoreAudio adapters |
src-tauri/native/windows.cpp | Windows endpoint audio and background HID diagnostics |
src-tauri/native/overlay.m | macOS cross-app and fullscreen overlay behavior |
tools/windows-probe.cpp | Read-only Windows hardware diagnostic |
tools/mac-probe.c | Read-only hardware diagnostic |
PRD_ Cross-Platform Trackpad Edge Volume Control.md | Requirements and implementation clarifications |
The observation-only input adapter does not currently request Accessibility or Input Monitoring permission. A future input suppression adapter will need its own permission handling and validation.
On 7 October 2026:
These checks establish a working Mac prototype, not cross-platform release readiness.
The .github/workflows/release.yml workflow builds and tests separate Apple Silicon and Intel apps when a version tag is pushed. It verifies each app's signature and architecture, packages a DMG and ZIP, creates SHA-256 checksums, and publishes a GitHub prerelease only after both builds succeed.
To publish a new version, update the version in package.json, src-tauri/Cargo.toml, and src-tauri/tauri.conf.json, regenerate the lockfiles, update release notes and download links, then push the matching vX.Y.Z tag. No release signing secrets are required for the current ad-hoc builds. A smoother first-launch experience requires Apple Developer ID signing and notarization in a later release.
macOS app search can show more than one EdgeVolume entry when it finds multiple .app bundles. Developers may have a debug app, a release app, and a packaging test copy in src-tauri/target/, alongside the installed copy in /Applications.
These are separate files, not evidence that multiple app processes are running. For everyday use, open Finder → Applications → EdgeVolume. Build and test copies are not required by the installed app and can be moved to Trash when you no longer need them. Installing from the DMG alone does not create the debug or packaging test copies.
These changes are in the development source; the original v0.1.0 macOS release DMG predates them.
The app still observes input without suppressing pointer movement or macOS gestures. Avoid the feature in apps where those movements would be disruptive, or exclude them. The private macOS touch API and Windows contact decoding remain limitations.
The website lives in landing/ and is hosted at edgevolume.vercel.app. Vercel uses landing as the project root and serves the static files without a build step. GitHub pushes to the production branch deploy the website.
To preview locally: python3 -m http.server 4173 --directory landing. The volume slider is an illustration and does not change system volume. Download links point to the existing early-access release; update them when a new release is published.
Visit the website · Download for Mac
Control your Mac's system volume by sliding one finger along the physical edge of its trackpad, wherever the cursor is on screen.
EdgeVolume is an experimental desktop utility built with Tauri 2, Rust, React, and TypeScript. A small floating indicator shows the current volume and whether it is increasing or decreasing.
Platform status: The macOS prototype is implemented and has been tested on an Apple Silicon Mac. Windows development has started: source builds include audio controls and read-only touchpad diagnostics. Windows physical edge gestures are not implemented or hardware-validated yet.
1. Enable gestures. Open EdgeVolume and click Enable gestures. Start with the default Right edge.
2. Slide on the trackpad itself. Place one finger inside the rightmost strip and slide up to increase volume or down to decrease it. Your cursor can be anywhere on the screen. Lift your finger when you are done. This guide shows the default direction; Reverse direction swaps up and down.
3. Watch the popup. It shows the actual volume percentage and whether volume is increasing or decreasing, then disappears after you stop. The guide above is an illustration; the image below is a screenshot of the real Mac app.

The green strip marks the active part of the physical trackpad. Choose Left, Right, or Both, adjust Edge width if the strip feels too narrow, and adjust Sensitivity to change how quickly volume moves. The screenshot shows gestures paused; click Enable gestures to start.
EdgeVolume-v0.1.0-apple-silicon.dmg. For an Intel processor, download EdgeVolume-v0.1.0-intel.dmg.Rust, Node.js, npm, Xcode, and Terminal are not needed to use the downloaded app. Requires macOS 15 or newer. ZIP downloads containing the same app are also available.
This is an early-access release: the apps are ad-hoc signed, not Apple Developer ID signed or notarized. macOS may require your approval before the first launch. If you choose to run it, follow Apple's instructions for an app from an unidentified developer. Do not disable your Mac's security protections.
Only approve the app if you downloaded it from this repository's release page and trust it.
This approves that app for future launches. The Open Anyway option appears after you have tried opening the blocked app. See Apple's official instructions. If the warning says the app is damaged or will harm your computer, stop and check the download rather than treating it as a normal first-launch approval.
You can close the settings window and keep using the gesture. Click the EdgeVolume menu bar icon to open preferences, pause gestures, or quit. After reopening the app, enable gestures again.
Apple Silicon hardware input was tested on macOS 27.0.1. Intel builds are compiled in GitHub Actions; Intel trackpad behavior and other macOS versions still need hands-on validation.
Want to change the code? The developer setup below is separate from installing the downloaded app.
Download the Windows development ZIP · Verified build and artifacts
This is an experimental audio and touchpad diagnostic build. Physical trackpad edge gestures are not enabled yet. It includes system volume read/write, a volume indicator preview, explicit ±5 percentage point test buttons, and background touchpad report counts.
You do not need Rust, Node.js, npm, or C++ developer tools. If WebView2 is missing, the installer uses Tauri's WebView2 bootstrapper, which may need an internet connection. The installer is unsigned, so Windows may show an unknown-publisher warning; only use a repository build you trust.
The linked development artifact expires on 21 October 2026 and GitHub requires sign-in to download it. After expiry, use a newer successful run in Windows development builds. These artifacts are for testing and are separate from supported public releases.
See the Windows read-only probe and tester checklist for reporting results. Increasing report counts do not yet prove physical finger coordinates or working edge gestures.
xcode-select --install if needed.Release builds target macOS 15 or newer. Hardware input was validated on Apple Silicon, macOS 27.0.1; other hardware and OS versions still need validation. The original PRD's macOS 12+ target is deferred.
git clone https://github.com/reveuse12/edge-volume.git
cd edge-volume
npm ci
npm run tauri dev
This launches the native desktop app and its development frontend. Running npm run dev alone opens the preferences frontend without access to native trackpad input or system volume.
A normal edge swipe needs no keyboard key or stationary hold. Require Option key is an optional extra safeguard. Starting outside the strip, sideways movement, multiple fingers, releasing Option when required, interrupted active input, changing fingers, or a large coordinate jump cancels the gesture until all fingers lift. Volume changes are limited to 60 percentage points per second. Preferences show why a touch was rejected.
Closing preferences keeps EdgeVolume running in the menu bar. Choose Quit EdgeVolume from its menu to exit.
The indicator appears near the lower-right corner of the display associated with its window. On macOS a native nonactivating panel draws the indicator directly, independently of the preferences WebView. It is configured to join desktop Spaces and other apps' fullscreen Spaces, stay visible when EdgeVolume is inactive, and display above ordinary app windows. It follows the display containing the cursor. It stays above ordinary windows, does not take keyboard focus, and ignores clicks. It reads volume back from the audio device after adjustments, so the percentage reflects the reported output level.
Click Preview volume indicator in preferences to show your current volume for five seconds without changing it.
# TypeScript check and production frontend build
npm run build
# Gesture engine tests
cargo test --locked --manifest-path src-tauri/Cargo.toml
# Package the desktop application
npm run tauri build
The macOS app is generated at:
src-tauri/target/release/bundle/macos/EdgeVolume.app
For a development bundle, run npm run tauri build -- --debug. Its app is under src-tauri/target/debug/bundle/macos/. Builds use an ad-hoc signature. Developer ID signing and Apple notarization are not configured.
To check native trackpad input and audio access independently of the UI:
clang tools/mac-probe.c src-tauri/native/mac.c \
-framework CoreFoundation -framework CoreAudio -framework CoreGraphics \
-o /tmp/edgevolume-probe
/tmp/edgevolume-probe
Touch the trackpad during the five-second probe. It reports adapter startup, the audio read status, and aggregate frame counts. It does not change volume.
Physical trackpad contacts
→ macOS native input adapter
→ Rust edge gesture state machine
→ CoreAudio default output volume
→ React preferences and floating indicator
The macOS adapter dynamically loads Apple's private MultitouchSupport framework to receive normalized finger coordinates. Ordinary cursor or scroll events cannot identify the physical trackpad edge.
The Rust engine requires a single contact that begins inside an active edge, applies an activation deadzone, rejects invalid gestures, and clamps volume to 0–100%. CoreAudio reads and writes the current default output device. Unsupported audio outputs temporarily pause gestures; the enabled preference is kept so an adjustable output can resume automatically. Output changes cancel the current touch, and volume writes stay bound to the output where the gesture began.
Settings are stored in Tauri's application configuration directory as settings.json. Trackpad contact data is held in memory; the app does not send it over the network or write it to logs.
| Path | Purpose |
|---|---|
src/main.tsx | Preferences and volume indicator UI |
src/style.css | UI styling |
src-tauri/src/gesture.rs | Gesture recognition and tests |
src-tauri/src/main.rs | Desktop lifecycle, settings, commands, tray, and indicator |
src-tauri/native/mac.c | macOS physical contact and CoreAudio adapters |
src-tauri/native/windows.cpp | Windows endpoint audio and background HID diagnostics |
src-tauri/native/overlay.m | macOS cross-app and fullscreen overlay behavior |
tools/windows-probe.cpp | Read-only Windows hardware diagnostic |
tools/mac-probe.c | Read-only hardware diagnostic |
PRD_ Cross-Platform Trackpad Edge Volume Control.md | Requirements and implementation clarifications |
The observation-only input adapter does not currently request Accessibility or Input Monitoring permission. A future input suppression adapter will need its own permission handling and validation.
On 7 October 2026:
These checks establish a working Mac prototype, not cross-platform release readiness.
The .github/workflows/release.yml workflow builds and tests separate Apple Silicon and Intel apps when a version tag is pushed. It verifies each app's signature and architecture, packages a DMG and ZIP, creates SHA-256 checksums, and publishes a GitHub prerelease only after both builds succeed.
To publish a new version, update the version in package.json, src-tauri/Cargo.toml, and src-tauri/tauri.conf.json, regenerate the lockfiles, update release notes and download links, then push the matching vX.Y.Z tag. No release signing secrets are required for the current ad-hoc builds. A smoother first-launch experience requires Apple Developer ID signing and notarization in a later release.
macOS app search can show more than one EdgeVolume entry when it finds multiple .app bundles. Developers may have a debug app, a release app, and a packaging test copy in src-tauri/target/, alongside the installed copy in /Applications.
These are separate files, not evidence that multiple app processes are running. For everyday use, open Finder → Applications → EdgeVolume. Build and test copies are not required by the installed app and can be moved to Trash when you no longer need them. Installing from the DMG alone does not create the debug or packaging test copies.
These changes are in the development source; the original v0.1.0 macOS release DMG predates them.
The app still observes input without suppressing pointer movement or macOS gestures. Avoid the feature in apps where those movements would be disruptive, or exclude them. The private macOS touch API and Windows contact decoding remain limitations.
The website lives in landing/ and is hosted at edgevolume.vercel.app. Vercel uses landing as the project root and serves the static files without a build step. GitHub pushes to the production branch deploy the website.
To preview locally: python3 -m http.server 4173 --directory landing. The volume slider is an illustration and does not change system volume. Download links point to the existing early-access release; update them when a new release is published.