summaryrefslogtreecommitdiff
path: root/scripts/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/Scripts')
-rwxr-xr-xscripts/Scripts/clipboard53
1 files changed, 34 insertions, 19 deletions
diff --git a/scripts/Scripts/clipboard b/scripts/Scripts/clipboard
index 93789a0..ae5c9dc 100755
--- a/scripts/Scripts/clipboard
+++ b/scripts/Scripts/clipboard
@@ -1,29 +1,44 @@
#!/usr/bin/env bash
+tmp_dir="/tmp/cliphist-rofi"
+
clipboard_mode() {
- if [ "$ROFI_RETV" = "0" ]; then
- cliphist list | while IFS= read -r line; do
- id="${line%% *}"
- content="${line#* }"
-
- if [[ "$content" == *"[[ binary data"* ]]; then
- printf '󰋩 IMAGE: %s\0info\x1f%s\n' "$id" "$id"
- else
- printf '%s\0info\x1f%s\n' "$content" "$id"
- fi
- done
- else
- cliphist decode "$ROFI_INFO" | wl-copy
- exit 0
- fi
+ if [ "$ROFI_RETV" = "0" ]; then
+ rm -rf "$tmp_dir"
+ mkdir -p "$tmp_dir"
+
+ cliphist list | while IFS=$'\t' read -r id content; do
+ if [[ "$content" == *"[[ binary data"* ]]; then
+ ext="png"
+
+ if [[ "$content" =~ image/(jpeg|jpg|png|bmp|gif|webp) ]]; then
+ ext="${BASH_REMATCH[1]}"
+ fi
+
+ if [[ "$ext" == "jpeg" ]]; then
+ ext="jpg"
+ fi
+
+ imgfile="$tmp_dir/$id.$ext"
+ printf '%s' "$id" | cliphist decode > "$imgfile"
+ printf '󰋩 IMAGE: %s\0icon\x1fthumbnail://%s\0info\x1f%s\n' "$id" "$imgfile" "$id"
+ else
+ printf '%s\0info\x1f%s\n' "$content" "$id"
+ fi
+ done
+ else
+ printf '%s' "$ROFI_INFO" | cliphist decode | wl-copy
+ exit 0
+ fi
}
export -f clipboard_mode
if [ -z "$ROFI_RETV" ]; then
- rofi -modi "clipboard:$0" \
- -show clipboard \
- -theme ~/.config/rofi/clipboard.rasi
+ rofi -modi "clipboard:$0" \
+ -show clipboard \
+ -show-icons \
+ -theme ~/.config/rofi/clipboard.rasi
else
- clipboard_mode "$@"
+ clipboard_mode "$@"
fi