mirror of
https://github.com/leahneukirchen/mblaze
synced 2024-11-15 18:14:02 +00:00
59 lines
1.1 KiB
Plaintext
59 lines
1.1 KiB
Plaintext
|
#!/bin/sh
|
||
|
# mmailto mailto:... - mailto: handler spawning mcom in a terminal emulator
|
||
|
|
||
|
tryterm() {
|
||
|
if [ -z "$TERMINAL" ] && command -v "$1" >/dev/null; then
|
||
|
TERMINAL="$*"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
tryterm x-terminal-emulator
|
||
|
tryterm urxvt
|
||
|
tryterm xterm
|
||
|
|
||
|
if [ -z "$TERMINAL" ]; then
|
||
|
echo 'No terminal emulator found, set $TERMINAL.' 1>&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
IFS='
|
||
|
'
|
||
|
|
||
|
exec $TERMINAL -e mcom $(
|
||
|
awk -v url="$1" '
|
||
|
|
||
|
function decode(s) {
|
||
|
hexdigits = "0123456789abcdef"
|
||
|
for (i = 1; i < length(s); i++) {
|
||
|
if (substr(s, i, 3) ~ /%[0-9a-fA-F][0-9a-fA-F]/) {
|
||
|
c = sprintf("%c", (index(hexdigits, tolower(substr(s, i+1, 1)))-1) * 16 + \
|
||
|
index(hexdigits, tolower(substr(s, i+2, 1)))-1)
|
||
|
if (c == "\n") c = " "
|
||
|
s = substr(s, 1, i-1) c substr(s, i+3)
|
||
|
i += 2
|
||
|
}
|
||
|
}
|
||
|
return s
|
||
|
}
|
||
|
|
||
|
BEGIN {
|
||
|
url = decode(url)
|
||
|
sub(/^mailto:/, "", url)
|
||
|
split(url, parts, "?")
|
||
|
to = parts[1]
|
||
|
split(parts[2], fields, "&")
|
||
|
args[1] = to
|
||
|
for (i in fields) {
|
||
|
split(fields[i], kv, "=")
|
||
|
if (kv[1] != "r") {
|
||
|
args[length(args)+1] = "-" kv[1]
|
||
|
args[length(args)+1] = kv[2]
|
||
|
}
|
||
|
}
|
||
|
for (i in args) {
|
||
|
print decode(args[i])
|
||
|
}
|
||
|
}
|
||
|
'
|
||
|
)
|