On Tue, Jan 30, 2001 at 11:59:03AM -0500, Dan Boger wrote:
> On Tue, Jan 30, 2001 at 08:47:20AM -0800, Ben Reser wrote:
> > Not possible right now. urlview only knows how to use one program. You can
> > use the COMMAND option in the .urlview file to change from netscape to another
> > program but you can set one for ftp and one for http...
>
> unless you write a wrapper script, put it as your COMMAND, and have it
> check if it's an ftp url, or a https? url, or whatever...
>
Here's what i do.
1. in my ~/.muttrc i have
macro index <F9> |urlview\n 'extract web URLs and goto'
macro pager <F9> |urlview\n 'extract web URLs and goto'
2. in my ~/.urlview i have
COMMAND choose_web_vwr.sh '%s'
3. the script choose_web_vwr.sh asks the user whether to use
netscape, lynx, wget etc. with appropriate defaults depending
on file extension and whether http is found etc.. See
attachment for the script.
--
Disclaimer: These are my opinions, not those of my employer
Gerald K. Embery ; e-mail: [EMAIL PROTECTED]
Bureau of Meteorology Research Centre,
Melbourne, Australia ; http://www.bom.gov.au/ bmrc/medr/gke.html
#!/bin/ksh
# choose whether to use netscape/lynx/...
while test $# -gt 0
do
if `RunningX`
then
reply='x'
case $1 in
# piccy files to be viewed with Netscape
*.jpg|*.jpeg|*.gif|*.png)
openin='N'
opentype='openFile'
;;
# files to be downloaded (probably)
*.gz|*.tgz|*.tar|*.bz2|*.Z|*.rpm|*.deb)
openin='g'
opentype='openURL'
;;
http://*)
openin='n'
opentype='openURL'
;;
www.*)
openin='n'
opentype='openURL'
;;
ftp://*)
openin='n'
opentype='openURL'
;;
ftp.*)
openin='n'
opentype='openURL'
;;
/tmp/*)
openin='k'
opentype='openFile'
;;
/scratch*/*)
openin='k'
opentype='openFile'
;;
*.html)
openin='n'
opentype='openFile'
;;
*.htm)
openin='n'
opentype='openFile'
;;
*)
openin='n'
opentype='openFile'
;;
esac
#set -vx
filename=$1
# if a file, do we need to fill out with pathname?
if test "${opentype}" = 'openFile'
then
case $1 in
/*)
# full path provided ... good.
if test -f $1
then
filename=${1}
fi
;;
*)
# not full path name,
# can we fill in with current working directory ?
if test -f `pwd`/$1
then
filename=`pwd`/${1}
else
echo "File not found - searching in FINDPATH for possibles"
# check all our paths
tempfile=/scratch0/ch.$$
fncd $1 > $tempfile
vim -c "echo 'remove those you were NOT after'" $tempfile
filename=`cat $tempfile`
rm $tempfile
fi
;;
esac
fi
#set +vx
if test "${openin}" = 'n'
then
echo -n "Netscape/Lynx/W3m/linKs (n,l,w,k)[$openin]:"
elif test "${openin}" = 'N'
then
# here a (direct) file has been given only suitable for Netscape.
set -vx
(netscape -iconic -noraise -remote "${opentype}($filename)" || netscape
-install -iconic "$filename") &
set +vx
shift
if test $# -gt 0
then
sleep 20 # this is to allow netscape time between several images
fi
continue
else
echo -n "Netscape/Lynx/W3m/linKs/wGet/Text (n,l,w,k,g,t)[$openin]:"
fi
while [[ x$reply != x && $reply != [nlLwWkKgtq] ]]
do
read reply
if test x"${reply}" != xq # q for quit
then
if test x"${reply}" = x
then
reply=$openin
fi
if test "${reply}" = 'n'
then
set -vx
(netscape -iconic -noraise -remote "${opentype}($filename)" ||
netscape -install -iconic "$filename") &
set +vx
elif test "${reply}" = 'L'
then
set -vx
/libraries0/bmrc/bin/color_xterm -title "Lynx $filename" -geometry
100x30 -e /libraries0/bmrc/bin/lynx $filename &
set +vx
elif test "${reply}" = 'l'
then
set -vx
/libraries0/bmrc/bin/lynx $filename
set +vx
elif test "${reply}" = 'W'
then
set -vx
/libraries0/bmrc/bin/color_xterm -title "w3m $filename" -geometry
100x30 -bg wheat2 -fg black -bd orange -e /libraries0/bmrc/bin/w3m $filename &
set +vx
elif test "${reply}" = 'w'
then
set -vx
/libraries0/bmrc/bin/w3m $filename
set +vx
elif test "${reply}" = 'K'
then
set -vx
/libraries0/bmrc/bin/color_xterm -title "links $filename"
-geometry 100x30 -bg wheat2 -fg black -bd orange -e /libraries0/bmrc/bin/links
$filename &
set +vx
elif test "${reply}" = 'k'
then
set -vx
/libraries0/bmrc/bin/links $filename
set +vx
elif test "${reply}" = 't'
then
set -vx
/libraries0/bmrc/bin/lynx -dump -force_html $* | more
set +vx
elif test "${reply}" = 'g'
then
set -vx
if [[ $(/bin/pwd) = */$USER/* ]]
then
/libraries0/bmrc/bin/wget $*
else
if test ! -d /scratch0/$USER
then
mkdir /scratch0/$USER
fi
/libraries0/bmrc/bin/wget --directory-prefix=/scratch0/$USER $*
fi
set +vx
else
echo -n "??? dud reply. View using
Netscape/Lynx/W3m/linKs/wGet/plainText/Quit? {L,W,K --> own xterm}
(n,l,L,w,W,k,K,g,t,q)[$openin]:"
fi
fi
done
else
/libraries0/bmrc/bin/lynx -dump -force_html $* | more
fi
shift
done