44 lines
1.3 KiB
Bash
Executable File
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
|