Files
omarchycn/shell/plugins/clipboard/watch.sh
T

47 lines
804 B
Bash
Executable File

#!/bin/bash
set -o pipefail
capture_script=${1:-}
[[ -n $capture_script && -x $capture_script ]] || exit 1
owner_pid=$PPID
watchdog_pid=""
cleanup() {
local pid
if [[ -n $watchdog_pid ]]; then
kill "$watchdog_pid" 2>/dev/null || true
fi
for pid in $(jobs -p); do
[[ $pid == $watchdog_pid ]] && continue
kill "$pid" 2>/dev/null || true
done
wait 2>/dev/null || true
}
stop() {
cleanup
exit 0
}
trap cleanup EXIT
trap stop HUP INT TERM
(
while kill -0 "$owner_pid" 2>/dev/null; do
sleep 1
done
kill -TERM "$$" 2>/dev/null || true
) &
watchdog_pid=$!
OMARCHY_CLIPBOARD_WATCH_MIME=text wl-paste --type text --watch "$capture_script" 2>/dev/null &
OMARCHY_CLIPBOARD_WATCH_MIME=image/png wl-paste --type image/png --watch "$capture_script" 2>/dev/null &
wait