summaryrefslogtreecommitdiff
path: root/bin/dmenu/mailtohandler
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