Skip to content

d0dg3r/MacPasteNext

MacPasteNext

MacPasteNext Logo

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.

What is this?

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.

Features

  • πŸ–± 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.

Screenshots

Dark Mode Light Mode
MacPasteNext Dark Mode MacPasteNext 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.png
    • assets/screenshot-light.png

Installation

Currently you must build the app from source:

  1. Clone this repository.

  2. Open terminal in the cloned directory.

  3. Build a release app bundle:

    chmod +x scripts/build-release.sh
    ./scripts/build-release.sh
  4. Self-sign locally (optional for quick local tests):

    codesign --force --deep --sign - dist/MacPasteNext.app
  5. Move dist/MacPasteNext.app to your /Applications/ folder and launch it.

Release pipeline (No Apple Developer subscription)

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.sh
  • scripts/sign-selfsigned.sh
  • scripts/smoke-test-macos.sh

One-time self-signed certificate setup

Run these steps on a macOS machine once, then reuse the same cert for all future releases.

  1. 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
  2. Export as .p12 (with password).

  3. Convert for GitHub secret:

    base64 -i MacPasteNext-selfsigned.p12 | pbcopy
  4. Add GitHub repository secrets:

    • MAC_CERT_P12_BASE64: base64 of the exported .p12
    • MAC_CERT_P12_PASSWORD: password used during export
    • MAC_CERT_IDENTITY: exact certificate name (for example MacPasteNext Self Signed)

Required variables

Set these in GitHub (Settings -> Secrets and variables -> Actions -> New repository secret):

  • MAC_CERT_P12_BASE64
  • MAC_CERT_P12_PASSWORD
  • MAC_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"

Triggering releases

  • 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.

Local preflight checks before CI

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-missing

Full app build/sign/smoke requires macOS because it depends on Apple tooling (sips, iconutil, codesign, security, spctl).

Permissions Required

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.

Sideload notes (self-signed builds)

Without Apple notarization, first launch may be blocked by Gatekeeper. Typical user flow:

  1. Right-click app -> Open.
  2. 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.app

Contributing

Community contributions to deal with macOS quirks are welcome. See CONTRIBUTING.md for our contribution guidelines.

Support and Reporting

Project Health

  • Roadmap: ROADMAP.md
  • Changelog: CHANGELOG.md
  • Code of Conduct: CODE_OF_CONDUCT.md
  • Security Policy: SECURITY.md
  • Privacy Policy: PRIVACY.md

License

Provided under the MIT License. See LICENSE for more information.

About

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.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors