Created by Joe Mild. Because in 2026, he was still absolutely sick of macOS being too stupid for basic Linux copy & paste. Sometimes you just have to fix this shit yourself.
MacPasteNext is a lightweight, background macOS application that finally brings the beloved Linux X11-style middle-click copy-paste functionality to your Mac. In addition, it packs an elegant system-wide microphone mute toggle mapped directly to your mouse buttons, complete with colorized visual feedback in your menu bar.
MacPasteNext. Because middle-click just makes sense.
- π± Auto-Copy on Selection: Highlight text in any app, and it is instantly copied to your clipboard.
- π± Middle-Click Paste: Click your middle mouse button to paste your clipboard instantaneously.
- π€ Global Microphone Mute: Toggle your system microphone on/off using a side mouse button. It remembers your previous volume level and displays a distinct Red/Green indicator in the macOS Menu Bar.
- π Localization: Fluent in both English and German.
- π Debug Friendly: Fully integrated real-time logging console visible directly in the app.
| Dark Mode | Light Mode |
|---|---|
![]() |
![]() |
These screenshots can be refreshed using the GitHub Actions workflow:
Capture macOS Screenshots(.github/workflows/screenshots.yml)- The workflow creates real macOS screenshots and commits updates to:
assets/screenshot-dark.pngassets/screenshot-light.png
Currently you must build the app from source:
-
Clone this repository.
-
Open terminal in the cloned directory.
-
Build a release app bundle:
chmod +x scripts/build-release.sh ./scripts/build-release.sh
-
Self-sign locally (optional for quick local tests):
codesign --force --deep --sign - dist/MacPasteNext.app
-
Move
dist/MacPasteNext.appto your/Applications/folder and launch it.
This project supports a GitHub Actions macOS ARM release pipeline using one persistent self-signed certificate. This keeps app identity stable across releases for sideloading:
- Constant bundle id:
io.github.joemild.macpastenext - Always sign with the same certificate identity
- Run smoke checks on each release build
Workflow file:
.github/workflows/release.yml
Scripts:
scripts/build-release.shscripts/sign-selfsigned.shscripts/smoke-test-macos.sh
Run these steps on a macOS machine once, then reuse the same cert for all future releases.
-
Create a self-signed code-signing certificate in Keychain Access
- Keychain Access -> Certificate Assistant -> Create a Certificate
- Name example:
MacPasteNext Self Signed - Identity Type:
Self Signed Root - Certificate Type:
Code Signing
-
Export as
.p12(with password). -
Convert for GitHub secret:
base64 -i MacPasteNext-selfsigned.p12 | pbcopy -
Add GitHub repository secrets:
MAC_CERT_P12_BASE64: base64 of the exported.p12MAC_CERT_P12_PASSWORD: password used during exportMAC_CERT_IDENTITY: exact certificate name (for exampleMacPasteNext Self Signed)
Set these in GitHub (Settings -> Secrets and variables -> Actions -> New repository secret):
MAC_CERT_P12_BASE64MAC_CERT_P12_PASSWORDMAC_CERT_IDENTITY
Local equivalents for manual test runs:
export MAC_CERT_P12_BASE64="<base64_of_p12>"
export MAC_CERT_P12_PASSWORD="<your_p12_password>"
export MAC_CERT_IDENTITY="MacPasteNext Self Signed"- Beta tags use:
v1.0.0-beta.1,v1.0.0-beta.2, ... - Final/stable tags use:
v1.0.0,v1.0.1, ... - The release workflow publishes beta tags as GitHub pre-releases and final tags as normal releases.
- Each release builds, signs, runs smoke tests, uploads
MacPasteNext-macos-arm64.zip, and then triggers screenshot refresh automation.
These checks are safe on Linux and help catch obvious issues before pushing:
# Shell syntax checks
bash -n scripts/build-release.sh
bash -n scripts/sign-selfsigned.sh
bash -n scripts/smoke-test-macos.sh
bash -n scripts/validate-release-inputs.sh
# Changelog extraction sanity check (replace tag as needed)
./scripts/extract-changelog.sh v1.0.0-beta.1 CHANGELOG.md /tmp/release-notes.md allow-missingFull app build/sign/smoke requires macOS because it depends on Apple tooling (sips, iconutil, codesign, security, spctl).
Because MacPasteNext needs to monitor your global mouse clicks and natively simulate keypresses (Cmd+C / Cmd+V) to trick macOS into pasting text, the operating system requires you to grant it Accessibility permissions.
If things get stuck with the permissions cache (as macOS often does), there's a handy tccutil reset button built directly into the UI to reset it and prompt again.
Without Apple notarization, first launch may be blocked by Gatekeeper. Typical user flow:
- Right-click app -> Open.
- Confirm Open in the warning dialog.
If app is quarantined after download, advanced users can remove quarantine manually:
xattr -dr com.apple.quarantine /Applications/MacPasteNext.appCommunity contributions to deal with macOS quirks are welcome. See CONTRIBUTING.md for our contribution guidelines.
- Usage/setup questions: GitHub Discussions
- Bug reports: GitHub Issues
- Security vulnerabilities: GitHub Security Advisory (private)
- Code of Conduct concerns: Maintainer profile
- Roadmap:
ROADMAP.md - Changelog:
CHANGELOG.md - Code of Conduct:
CODE_OF_CONDUCT.md - Security Policy:
SECURITY.md - Privacy Policy:
PRIVACY.md
Provided under the MIT License. See LICENSE for more information.


