51 lines
1.1 KiB
Bash
Executable File
51 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Native messaging host: copy a Chromium tab URL to the clipboard
|
|
# omarchy:hidden=true
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_PATH="${BASH_SOURCE[0]}"
|
|
export OMARCHY_PATH="${OMARCHY_PATH:-$(cd -- "$(dirname -- "$SCRIPT_PATH")/.." && pwd)}"
|
|
export PATH="$OMARCHY_PATH/bin:/usr/local/bin:/usr/bin:$PATH"
|
|
|
|
parse_url() {
|
|
jq -r '.url // empty' 2>/dev/null <<<"$1" || true
|
|
}
|
|
|
|
copy_url() {
|
|
local url="$1"
|
|
|
|
[[ -n $url ]] || return 1
|
|
printf '%s' "$url" | wl-copy --type text/plain
|
|
omarchy-notification-send -g "URL copied to clipboard"
|
|
}
|
|
|
|
reply_copied() {
|
|
if [[ $1 == "true" ]]; then
|
|
printf '\x0f\x00\x00\x00{"copied":true}'
|
|
else
|
|
printf '\x10\x00\x00\x00{"copied":false}'
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
local length payload url
|
|
|
|
length=$(head -c4 | od -An -v -tu4 --endian=little | tr -d ' ')
|
|
[[ -n ${length:-} ]] && (( length > 0 )) || exit 0
|
|
|
|
payload=$(head -c "$length")
|
|
url=$(parse_url "$payload")
|
|
|
|
if copy_url "$url"; then
|
|
reply_copied true
|
|
else
|
|
reply_copied false
|
|
fi
|
|
}
|
|
|
|
if [[ ${BASH_SOURCE[0]} == "$0" ]]; then
|
|
main "$@"
|
|
fi
|