mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
Open clipboard entries from history
This commit is contained in:
Executable
+69
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Open a clipboard history entry
|
||||
# omarchy:group=clipboard
|
||||
# omarchy:args=--history-index <index>
|
||||
|
||||
history_index=""
|
||||
history_path="$HOME/.local/state/omarchy/clipboard-history.json"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--history-index)
|
||||
history_index="${2:-}"
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
echo "Usage: omarchy-clipboard-open --history-index <index>" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ $history_index =~ ^[0-9]+$ ]] || exit 1
|
||||
[[ -r $history_path ]] || exit 1
|
||||
|
||||
entry_type=$(jq -er --argjson index "$history_index" '.[$index].type' "$history_path") || exit 1
|
||||
|
||||
open_image() {
|
||||
local path="$1"
|
||||
|
||||
[[ -r $path ]] || exit 1
|
||||
exec satty --filename "$path" --output-filename "$path"
|
||||
}
|
||||
|
||||
open_text() {
|
||||
local text="$1"
|
||||
local url=""
|
||||
local open_dir=""
|
||||
local open_file=""
|
||||
|
||||
url=$(grep -Eom1 'https?://[^[:space:]"'\''<>]+' <<<"$text" || true)
|
||||
if [[ -z $url && $text =~ ^[[:space:]]*([[:alnum:]][[:alnum:].-]+\.[[:alpha:]]{2,})(/[^[:space:]]*)?[[:space:]]*$ ]]; then
|
||||
url="https://${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
|
||||
fi
|
||||
|
||||
if [[ -n $url ]]; then
|
||||
exec omarchy-launch-browser "$url"
|
||||
fi
|
||||
|
||||
open_dir="${XDG_STATE_HOME:-$HOME/.local/state}/omarchy/clipboard-open"
|
||||
mkdir -p "$open_dir"
|
||||
open_file=$(mktemp --tmpdir="$open_dir" clipboard.XXXXXX.txt) || exit 1
|
||||
printf '%s' "$text" >"$open_file"
|
||||
exec omarchy-launch-editor "$open_file"
|
||||
}
|
||||
|
||||
case "$entry_type" in
|
||||
image)
|
||||
path=$(jq -er --argjson index "$history_index" '.[$index].path' "$history_path") || exit 1
|
||||
open_image "$path"
|
||||
;;
|
||||
text)
|
||||
text=$(jq -er --argjson index "$history_index" '.[$index].text' "$history_path") || exit 1
|
||||
open_text "$text"
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user