-
Notifications
You must be signed in to change notification settings - Fork 0
/
.url_handler.sh
executable file
·142 lines (125 loc) · 3.72 KB
/
.url_handler.sh
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#! /bin/bash
# Copyright (c) 1998 Martin Schulze <[email protected]>
# Slightly modified by:
# Luis Francisco Gonzalez <[email protected]>
# Emanuele Rocca <[email protected]>
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
###########################################################################
# Configurable section
###########################################################################
#
# Any entry in the lists of programs that urlview handler will try out will
# be made of /path/to/program + ':' + TAG where TAG is one of
# PW: X11 program intended to live on after urlview's caller exits.
# XW: X11 program
# XT: Launch with an xterm if possible or as VT if not
# VT: Launch in the same terminal
# Customized the list of executable programs for HTTP URLs
http_prgs="/usr/bin/konqueror:PW /usr/bin/firefox:PW /usr/bin/lynx:XT /usr/bin/w3m:XT /usr/bin/links:XT"
https_prgs=$http_prgs
mailto_prgs="/usr/bin/mutt:VT /usr/bin/elm:VT /usr/bin/alpine:VT /usr/bin/pine:VT /usr/bin/mail:VT"
gopher_prgs="/usr/bin/gopher:XT /usr/bin/lynx:XT"
ftp_prgs="/usr/bin/ncftp:XT /usr/bin/lftp:XT $http_prgs"
file_prgs="/usr/bin/wget:XT /usr/bin/snarf:XT"
# Program used as an xterm (if it doesn't support -T you'll need to change
# the command line in getprg)
XTERM=/usr/bin/x-terminal-emulator
###########################################################################
# Change below this at your own risk
###########################################################################
function getprg()
{
local ele tag prog
for ele in $*
do
tag=${ele##*:}
prog=${ele%%:*}
if [ -x $prog ]; then
case $tag in
PW) [ -n "$DISPLAY" ] && echo "P:$prog" && return 0
;;
XW)
[ -n "$DISPLAY" ] && echo "X:$prog" && return 0
;;
XT)
[ -n "$DISPLAY" ] && [ -x "$XTERM" ] && \
echo "X:$XTERM -e $prog" && return 0
echo "$prog" && return 0
;;
VT)
echo "$prog" && return 0
;;
esac
fi
done
}
url=$1; shift
type=${url%%:*}
if [ "$url" = "$type" ]; then
type=${url%%.*}
case $type in
www|web|www[1-9])
type=http
;;
esac
url=$type://$url
fi
if [ "$type" = "ftp" ]; then
filename=${url##*/}
if [ $filename ]; then
echo "Is \"$filename\" a file? (y/N)";
read x
case $x in
y|Y)
type=file
;;
*)
;;
esac
fi
fi
case $type in
https)
prg=`getprg $https_prgs`
;;
http)
prg=`getprg $http_prgs`
;;
ftp)
prg=`getprg $ftp_prgs`
;;
mailto)
prg=`getprg $mailto_prgs`
;;
gopher)
prg=`getprg $gopher_prgs`
;;
file)
prg=`getprg $file_prgs`
;;
*)
echo "Unknown URL type. Please report URL and viewer to"
echo "[email protected]."
echo -n "Press enter to continue.."; read x
exit
;;
esac
if [ -n "$prg" ]; then
if [ "${prg%:*}" = "P" ]; then
nohup ${prg#*:} $url 2>/dev/null 1>/dev/null &
elif [ "${prg%:*}" = "X" ]; then
${prg#*:} $url 2>/dev/null &
else
$prg $url
fi
fi