#!/bin/env bash # check that clipboard doesn't contain text if wl-paste --list-types | grep -qv '^text/plain$'; then tempdir=$(mktemp -d) extension=$(grep -E "^$(wl-paste --list-types)" /etc/mime.types | awk '{print $2}') echo -n "Enter file name (extension .$extension will be appended): " >&2 read -e -r user_input attachment="$tempdir/$user_input.$extension" read -e -r -p "$(printf "Your file will be written to %s and attached. \n\nConfirm (y/n): " "$attachment" >&2)" confirm case "$confirm" in y) wl-paste >"$attachment" echo "$attachment" ;; *) exit 1 ;; esac else # clipboard contains a string (treat as path) out=$(wl-paste) if wl-paste --list-types | grep -q '^text/uri-list$' && wl-paste | grep -q '^file://'; then out=${out#file://} fi if [ ! -f "$out" ]; then read -e -r -p "$(printf "Your clipboard contains %s, which is not a valid attachment. \n\nPress enter to continue." "$out" >&2)" exit 1 fi read -e -r -p "$(printf "Your clipboard contains %s, which will be attached as a path. \n\nConfirm (y/n): " "$out" >&2)" confirm case "$confirm" in y) echo "$out" ;; *) exit 1 ;; esac fi