blob: b6af09131988011e9b6744e3397589c36d0414c2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#!/usr/bin/env bash
cache_dir="${XDG_CACHE_HOME:-$HOME/.cache}/mailtohandler"
store_file="$cache_dir/store"
[ -d "$cache_dir" ] || mkdir -p "$cache_dir"
if [ -f "$store_file" ]; then
mapfile -d '' store_urls < "$store_file"
urls=( "${store_urls[@]}" "$@" )
else
urls=( "$@" )
fi
command="$(dmenu -p "${#urls[@]} emails $(printf "%.50s" "${1#mailto:}")..." <<OPTIONS
neomutt
clipsep
clipmline
abook_add
store
store_clear
OPTIONS
)"
case "$command" in
neomutt)
tmux neww -t social: neomutt -- "${urls[@]}"
;;
clipmline)
for link in "${urls[@]}"
do printf "%s\n" "${link#mailto:}"
done | xclip -sel clip
;;
clipsep)
for link in "${urls[@]}"; do
printf "%s" "${link#mailto:}" | xclip -sel clip
sleep 0.1
done
;;
abook_add)
abook_file="$HOME/.abook/addressbook"
abook_index="$(grep -E '^\[[0-9]+\]$' "$abook_file" | tail -n 1)"
abook_index="${abook_index#[}"
abook_index="${abook_index%]}"
for link in "${urls[@]}"
do
abook_index=$((abook_index+1))
abook_name="$(dmenu -p "Name for ${link#mailto:}:" < /dev/null)"
[ -n "$abook_name" ] && cat >> "$abook_file" <<ENTRY
[$abook_index]
name=$abook_name
email=${link#mailto:}
ENTRY
done
;;
store)
for link in "${urls[@]}"
do printf "%s\0" "$link"
done > "$store_file"
exit
;;
store_clear)
;;
*)
exit
esac
[ -f "$store_file" ] && rm "$store_file"
exit 0
|