#!/usr/bin/env bash # patches the signal install so every launch loads signalpwm # ./install.sh patch # ./install.sh --uninstall restore the original set -euo pipefail project="$(cd "$(dirname "$0")" && pwd)" resources=/usr/lib/signal-desktop/resources data="${XDG_DATA_HOME:-$HOME/.local/share}/signalpwm" orig="$data/orig" if [[ "${1:-}" == "--uninstall" ]]; then sudo install -m644 "$orig/app.asar" "$resources/app.asar" echo "Restored original Signal."; exit 0 fi # signal loads the code from this copy mkdir -p "$data" if [[ -L "$data/src" ]]; then echo "keeping src symlink $data/src" else rm -rf "$data/src" && cp -r "$project/src" "$data/src" fi # after a signal update app.asar is clean again mkdir -p "$orig" if ! grep -qa signalpwm "$resources/app.asar"; then cp "$resources/app.asar" "$orig/app.asar" elif [[ ! -f "$orig/app.asar" ]]; then echo "signal is already patched but no backup exists in $orig" >&2; exit 1 fi # asar finds the native modules next to the asar, so link them beside this copy ln -sfn "$resources/app.asar.unpacked" "$orig/app.asar.unpacked" work="$(mktemp -d)" trap 'rm -rf "$work"' EXIT npx --yes @electron/asar extract "$orig/app.asar" "$work/app" cat >> "$work/app/bundles/preload/wrapper.js" <