ollie/tools/gui_clipboard

44 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# ollie:parallel read
# description: Read/write KDE clipboard via Klipper D-Bus. Args: [get|set|history] [text|index]
set -euo pipefail
SERVICE="org.kde.klipper"
PATH_OBJ="/klipper"
IFACE="org.kde.klipper.klipper"
cmd="${1:-get}"
case "$cmd" in
get)
gdbus call --session --dest "$SERVICE" \
--object-path "$PATH_OBJ" \
--method "$IFACE.getClipboardContents" | \
sed "s/^('//;s/')$//;s/\\\\n/\n/g"
;;
set)
text="${2:?usage: gui_clipboard set <text>}"
gdbus call --session --dest "$SERVICE" \
--object-path "$PATH_OBJ" \
--method "$IFACE.setClipboardContents" "$text" >/dev/null
echo "OK: clipboard set"
;;
history)
index="${2:-0}"
gdbus call --session --dest "$SERVICE" \
--object-path "$PATH_OBJ" \
--method "$IFACE.getClipboardHistoryItem" "$index" | \
sed "s/^('//;s/')$//;s/\\\\n/\n/g"
;;
clear)
gdbus call --session --dest "$SERVICE" \
--object-path "$PATH_OBJ" \
--method "$IFACE.clearClipboardHistory" >/dev/null
echo "OK: clipboard history cleared"
;;
*)
echo "usage: gui_clipboard [get|set|history|clear] [text|index]" >&2
exit 1
;;
esac