#!/usr/bin/env bash # ollie:parallel read # args_json: {"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"get|set|history|clear"},"text":{"type":"string","description":"Text to set (for set action)"},"index":{"type":"string","description":"History index (for history action, default: 0)"}}} # ollie:prompt # ## gui_clipboard # # Read/write KDE clipboard via Klipper. # # - Actions: `get`, `set`, `history`, `clear` # # ``` # gui_clipboard(action="get") # gui_clipboard(action="set", text="copied text") # ``` # ollie:end set -euo pipefail source "$(dirname "$0")/_lib/args.sh" SERVICE="org.kde.klipper" PATH_OBJ="/klipper" IFACE="org.kde.klipper.klipper" cmd=$(arg_require "action") 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=$(arg_require "text") gdbus call --session --dest "$SERVICE" \ --object-path "$PATH_OBJ" \ --method "$IFACE.setClipboardContents" "$text" >/dev/null echo "OK: clipboard set" ;; history) index=$(arg_get "index" "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 "error: unknown action: $cmd (use get|set|history|clear)" >&2 exit 1 ;; esac