diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 311e46d..2b76f8b 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -94,7 +94,9 @@ jobs: - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle - run: cargo bundle --release + run: | + cargo bundle --release + scripts/copy-macos-dylib.sh "target/release/bundle/osx/Lan Mouse.app/Contents/MacOS/lan-mouse" - name: Zip bundle run: | cd target/release/bundle/osx @@ -120,7 +122,9 @@ jobs: - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle - run: cargo bundle --release + run: | + cargo bundle --release + scripts/copy-macos-dylib.sh "target/release/bundle/osx/Lan Mouse.app/Contents/MacOS/lan-mouse" - name: Zip bundle run: | cd target/release/bundle/osx diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index f5569e5..778e05e 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -112,7 +112,9 @@ jobs: - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle - run: cargo bundle + run: | + cargo bundle + scripts/copy-macos-dylib.sh - name: Zip bundle run: | cd target/debug/bundle/osx @@ -142,7 +144,9 @@ jobs: - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle - run: cargo bundle + run: | + cargo bundle + scripts/copy-macos-dylib.sh - name: Zip bundle run: | cd target/debug/bundle/osx diff --git a/.github/workflows/tagged-release.yml b/.github/workflows/tagged-release.yml index d047bb6..0892589 100644 --- a/.github/workflows/tagged-release.yml +++ b/.github/workflows/tagged-release.yml @@ -90,7 +90,9 @@ jobs: - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle - run: cargo bundle --release + run: | + cargo bundle --release + scripts/copy-macos-dylib.sh "target/release/bundle/osx/Lan Mouse.app/Contents/MacOS/lan-mouse" - name: Zip bundle run: | cd target/release/bundle/osx @@ -116,7 +118,9 @@ jobs: - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle - run: cargo bundle --release + run: | + cargo bundle --release + scripts/copy-macos-dylib.sh "target/release/bundle/osx/Lan Mouse.app/Contents/MacOS/lan-mouse" - name: Zip bundle run: | cd target/release/bundle/osx diff --git a/README.md b/README.md index b3ad523..802b4e1 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,6 @@ paru -S lan-mouse-git
Fedora - You can install Lan Mouse from the [Terra Repository](https://terra.fyralabs.com). @@ -94,6 +93,18 @@ dnf install lan-mouse ```
+
+ MacOS + +- Download the package for your Mac (Intel or ARM) from the releases page +- Unzip it +- Remove the quarantine with `xattr -rd com.apple.quarantine "Lan Mouse.app"` +- Launch the app +- Grant accessibility permissions in System Preferences + +
+ +
Manual Installation @@ -172,7 +183,15 @@ For a detailed list of available features, checkout the [Cargo.toml](./Cargo.tom MacOS ```sh -brew install libadwaita pkg-config +# Install dependencies +brew install libadwaita pkg-config imagemagick +cargo install cargo-bundle +# Create the macOS icon file +scripts/makeicns.sh +# Create the .app bundle +cargo bundle +# Copy all dynamic libraries into the bundle, and update the bundle to find them there +scripts/copy-macos-dylib.sh ```
diff --git a/dylibs/.gitignore b/dylibs/.gitignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/dylibs/.gitignore @@ -0,0 +1 @@ +* diff --git a/scripts/copy-macos-dylib.sh b/scripts/copy-macos-dylib.sh new file mode 100755 index 0000000..f2ba501 --- /dev/null +++ b/scripts/copy-macos-dylib.sh @@ -0,0 +1,93 @@ +#!/bin/sh +set -eu + +homebrew_path="" +exec_path="target/debug/bundle/osx/Lan Mouse.app/Contents/MacOS/lan-mouse" + +usage() { + cat < $dest" + cp -f "$old_path" "$dest" + # Ensure the copied dylib is writable so that xattr -rd /path/to/Lan\ Mouse.app works. + chmod 644 "$dest" + + echo "Updating $dest to have install_name of @rpath/$base_name..." + install_name_tool -id "@rpath/$base_name" "$dest" + + # Recursively process this dylib + fix_references "$dest" + fi + + echo "Updating $bin to reference @rpath/$base_name..." + install_name_tool -change "$old_path" "@rpath/$base_name" "$bin" + done +} + +fix_references "$exec_path" + +# Ensure the main executable has our Frameworks path in its RPATH +if ! otool -l "$exec_path" | grep -q "@executable_path/../Frameworks"; then + echo "Adding RPATH to $exec_path" + install_name_tool -add_rpath "@executable_path/../Frameworks" "$exec_path" +fi + +# Se-sign the .app +codesign --force --deep --sign - "$bundle_path" + +echo "Done!"