44 lines
1.4 KiB
Bash
Executable file
44 lines
1.4 KiB
Bash
Executable file
#!/bin/env bash
|
|
|
|
# if the clipboard is plain/text, we assume it's a path
|
|
# otherwise, we assume it's a mime-type to be pasted
|
|
if wl-paste --list-types | grep -qv '^text/plain$'; then
|
|
# clipboard contains a file
|
|
tempdir=$(mktemp -d)
|
|
wl-paste >temp
|
|
extension=$(grep -E "^$(wl-paste --list-types)" /etc/mime.types | awk '{print $2}')
|
|
# echo -n "File name: " >&2
|
|
# read -r user_input
|
|
read -e -r -p "$(echo -n "Enter file name (extension .$extension will be appended): " >&2)" 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
|
|
# read -e -r -p "$(echo -n "Your file will be written to $attachment and attached. Confirm (y/n): " >&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
|