# Written By Fredrik Hbinette <hubbe@hubbe.net>
# All rights reserved. No warrenties, use at your own risk.
# This source is distributed under the GNU GENERAL PUBLIC LICENCE,
# see the file "COPYING" for more information.

# Configure file for plugger version 5.1
# Commands which are not installed on your system will not
# be used.


changequote([,])

dnl define(MPVERSION,esyscmd([mplayer -help 2>&1 | (read r1 r2 r3; echo $r2)]))

## Mplayer version: MPVERSION

define(MP_CMD,[mplayer -quiet -cache 8192 -vop pp -autoq 99 -nojoystick -nofs -zoom -osdlevel 1 $1 >/dev/null 2>/dev/null </dev/null])

define(MP_EMBED,[embed ignore_errors:MP_CMD(-xy $xsize -wid $hexwindow $1)])
define(MP_NOEMBED,[noembed ignore_errors maxaspect swallow(MPlayer):MP_CMD($1)])

define(MP_ENTRIES_STREAM,[url MP_EMBED($1 "$url")
	url MP_NOEMBED($1 "$url")])

define(MP_ENTRIES_NO_STREAM,[MP_EMBED($1 "$file")
	MP_NOEMBED($1 "$file")])

ifelse(substr(MPVERSION,0,3),1.0, [
## ** Mplayer streams broken
  define(MP_ENTRIES,[MP_ENTRIES_NO_STREAM($1)])
  define(MP_BROKEN_STREAM)
], [
  define(MP_ENTRIES,[MP_ENTRIES_STREAM($1)])
])


ifelse(esyscmd([mplayer -afm help 2>&1 | grep vorbis]),[],[
  define(MP_NO_VORBIS)
],[
  define(MP_VORBIS)
])

syscmd([test "`type -p xmms 2>/dev/null`" = "/usr/bin/xmms" -a -f /usr/lib/xmms/Input/librh_mp3.so -a \! -f /usr/lib/xmms/Input/libmpg123.so])
ifelse(sysval,0,[
## XMMS has no mp3 support
  define(XMMS_MP3,[have(urkiliburkelgurk): x])
],[
## XMMS probably has mp3 support
  define(XMMS_MP3,[nokill exits:xmms])
])
  


###################
### Video       ###
###################

##
## MPEG 1/2
##
video/mpeg: mpeg, mpg, mpe: MPEG video
video/x-mpeg: mpeg, mpg, mpe: MPEG video
video/x-mpeg2: mpv2, mp2ve: MPEG2 video
	MP_ENTRIES_STREAM()
	exits nokill: xine -pq "$file" 2>/dev/null 1>/dev/null
	stream: mtvp -W$window - 2>/dev/null 1>/dev/null
	loop:mtvp -l -W$window "$file"
	:mtvp -W$window "$file"
	loop: xanim +Av100 -Zr +W$window +q +f "$file"
	: xanim +Av100 -Zr +W$window +q +Ze +f "$file"


##
## Audio Video Interleav format (AVI)
##
video/msvideo: avi: AVI video
video/x-msvideo: avi: AVI video
application/x-drm-v2:asx:Windows Media
application/x-mplayer2: wmv,asf: Windows Media
application/x-mplayer2:wmv:WMV
video/x-ms-asf:asf,asx:Windows Media
video/x-ms-asf-plugin: asf,asx,wmv,wvx: Windows Media
video/x-ms-wm:asf:MSNBCPlayer
video/x-ms-wmv:wmv:Windows Media
video/x-ms-wvx:wvx:Windows Media	
video/sgi-movie: movie,movi,mv: SGI video
video/x-sgi-movie: movie,movi,mv: SGI video
	MP_ENTRIES_STREAM()
	exits nokill: xine -pq "$file" 2>/dev/null 1>/dev/null
	loop:xanim +Av100 -Zr +W$window +q +f "$file"
	:xanim +Av100 -Zr +W$window +q +Ze +f "$file"

##
## Quicktime (Problems with seeking)
##
video/quicktime: mov,qt: Quicktime video
video/x-quicktime: mov,qt: Quicktime video
application/x-quicktimeplayer:mov:Quicktime
	MP_ENTRIES_STREAM()
	exits nokill: xine -pq "$file" 2>/dev/null 1>/dev/null
	loop:xanim +Av100 -Zr +W$window +q +f "$file"
	:xanim +Av100 -Zr +W$window +q +Ze +f "$file"


##
## OGG video
##
video/x-theora::OGG stream with video
video/theora::OGG stream with video
video/ogg::OGG stream with video
video/x-ogg:ogm,ogv:OGG stream with video
	MP_ENTRIES_STREAM()

##
## Various others
##
video/dl: dl: DL video
video/x-dl: dl: DL video
video/sgi-movie: movie,movi,mv: SGI video
video/x-sgi-movie: movie,movi,mv: SGI video
video/anim: iff,anim5,anim3,anim7: IFF video
video/x-anim: iff,anim5,anim3,anim7: IFF video
video/fli: fli, flc: FLI video
video/x-fli: fli, flc: FLI video
	MP_ENTRIES_STREAM()
	loop:xanim +Av100 -Zr +W$window +q +f "$file"
	:xanim +Av100 -Zr +W$window +q +Ze +f "$file"


##################
### Sound      ###
##################

##
## MIDI
##
audio/mid: midi,mid: MIDI audio file
audio/x-mid: midi,mid: MIDI audio file
audio/midi: midi,mid: MIDI audio file
audio/x-midi: midi,mid: MIDI audio file
	controls: timidity -s 48000 -a -idqqqqqqq "$file" >/dev/null 2>/dev/null
	controls: playmidi $file


##
## MP2/3
##
audio/mp3: mp3: MPEG audio
audio/x-mp3: mp3: MPEG audio
audio/mpeg2: mp2: MPEG audio
audio/x-mpeg2: mp2: MPEG audio
audio/mpeg3: mp3: MPEG audio
audio/x-mpeg3: mp3: MPEG audio
audio/mpeg: mpa,abs,mpega: MPEG audio
audio/x-mpeg: mpa,abs,mpega: MPEG audio
	controls url: mpg123 -q -b 128 "$url"
	controls url: mpg321 -q "$url"
	controls url noisy ignore_errors: mplayer -quiet "$url" </dev/null
	controls : mpg123 -q -b 128 "$file"
	url XMMS_MP3 "$url"
	repeat swallow(alsaplayer): alsaplayer -q "$file" >/dev/null
	controls: amp -b 200 -q "$file"
	controls: maplay "$file"
	controls: mpeg3play "$file"

##
## MP2/3 playlists
##
audio/mpeg-url: m3u: MPEG music resource locator
audio/x-mpeg-url: m3u: MPEG music resource locator
audio/mpegurl: m3u: MPEG music resource locator
audio/x-mpegurl: m3u: MPEG music resource locator
audio/mpeg-url: m3u: MPEG music resource locator
audio/x-mpeg-url: m3u: MPEG music resource locator
audio/x-scpls:pls:Shoutcast Playlists
	controls: mpg123 -q -b 128 -@ - <"$file"
	controls: mpg321 -q -@ "$file"
	XMMS_MP3 "$file"
	:internal:url

##
## OGG streams
##
application/ogg: ogg: Ogg Vorbis stream
application/x-ogg: ogg: Ogg Vorbis stream
ifdef([MP_VORBIS],[	MP_ENTRIES_STREAM()
])	controls url: ogg123 -q -b 128 "$url"
	nokill exits:xmms "$file"
	url nokill exits:xmms "$url"
	repeat swallow(alsaplayer): alsaplayer -q "$file" >/dev/null

##
## OGG _audio_ streams
##
audio/ogg: ogg: Ogg Vorbis audio stream
audio/x-ogg: ogg: Ogg Vorbis audio stream
	controls url: ogg123 -q -b 128 "$url"
	controls url noisy ignore_errors: mplayer -quiet "$url" </dev/null
	nokill exits:xmms "$file"
	repeat swallow(alsaplayer): alsaplayer -q "$file" >/dev/null
ifdef([MP_VORBIS],[	MP_ENTRIES_STREAM()
])	


##
## Realaudio plugin
##
audio/x-pn-realaudio-plugin:rpm: RealPlayer Plugin Metafile
audio/x-pn-realaudio: ra,rm,ram: Realaudio-plugin resource locator
audio/x-realaudio: ra,rm,ram: RealAudio file
application/vnd.rn-realmedia: rm: RealMedia file
application/smil: smi: RealPlayer
audio/vnd.rn-realaudio: ra,ram: RealAudio file
audio/vnd.rn-realvideo: rv: RealVideo file
	exits nokill: realplay "$file"

##
## AU
##
audio/basic: au,snd: Basic audio file
audio/x-basic: au,snd: Basic audio file
	controls: play "$file"
	loop: xanim +Av100 -Zr +W$window +q +f "$file"
 	: xanim +Av100 -Zr +W$window +q +f +Ze "$file"


##
## WMP audio
##
audio/x-ms-wax:wax,wma:Windows Media	
	controls url noisy ignore_errors: mplayer -quiet "$url" </dev/null

##
## WAV files
##
audio/wav:wav:Microsoft wave file
audio/x-wav:wav:Microsoft wave file
audio/x-pn-wav:wav:Microsoft wave file
audio/x-pn-windows-acm:wav:Microsoft wave file
	controls: play "$file"
	controls: wavplay -q "$file"
	controls: bplay 1>/dev/null 2>/dev/null "$file"
	controls url noisy ignore_errors: mplayer -quiet "$url" </dev/null
	nokill exits:xmms "$file"
	loop: xanim +Av100 -Zr +W$window +q +f "$file"
	: xanim +Av100 -Zr +W$window +q +f +Ze "$file"
	repeat swallow(alsaplayer): alsaplayer -q "$file" >/dev/null
	controls: playwave "$file" >/dev/null 2>/dev/null
	controls: play "$file" >/dev/null 2>/dev/null

##
## Soundtracker Modules (Originally from the Amiga platform)
##
audio/mod: mod: Soundracker audio Module
audio/x-mod: mod: Soundracker audio Module
	controls loop: mikmod -l -q -i -f 60000 --hqmixer "$file" 2>/dev/null 1>/dev/null
	controls : mikmod -q -i -f 60000 --hqmixer "$file" 2>/dev/null 1>/dev/null
	controls : tracker -picky -quiet -frequency 65000 -oversample 4 "$file"
	controls loop: nspmod -r "$file" 2>/dev/null 1>/dev/null
	controls repeat: nspmod -l $repeat "$file" 2>/dev/null 1>/dev/null
	controls loop: xmp -l "$file" 2>/dev/null
	controls : xmp "$file" 2>/dev/null
	repeat swallow(alsaplayer): alsaplayer -q "$file" >/dev/null

###
### Commodore 64 emulated sound
###
audio/prs.sid: sid: SID Music
audio/x-sidtune: sid,psid,dat: Commodore 64 audio
audio/sidtune: sid,psid,dat: Commodore 64 audio
audio/psid: psid,sid,dat: Commodore 64 audio
audio/x-psid: psid,sid,dat: Commodore 64 audio
	controls: sidplay -ss -16 -f44100 "$file" >/dev/null 2>/dev/null

##
## YM player
##
audio/x-stsound: snd, psg, ym: Atari YM audio files
audio/stsound: snd, psg, ym: Atari YM audio files
	repeat have(mktemp) have(stsoundc) swallow(plugger-controller) fill nocheck: tmp="`mktemp /tmp/plugger.XXXXXXXXXX`" || exit 1 ; trap 'rm "$tmp" >/dev/null 2>/dev/null' EXIT 1 2 3 4 5 6 15; case "`file - <"$file"`" in *LHa*) lha -pq "$file" ;; *Zip*) gunzip <"$file" ;; *) cat "$file" ;; esac >"$tmp" && $controller "stsoundc $tmp" >/dev/null


#######################
### Images          ###
#######################

##
## Some common image formats
## BMP/PNG are normally handled directly by Mozilla.
## xli/xloadimage has security issues, uncomment at your own peril.
##
image/tiff: tiff,tif: TIFF image
image/x-tiff: tiff,tif: TIFF image
image/x-tif: tiff,tif: TIFF image
image/sun-raster: rs: SUN raster image
image/x-sun-raster: rs: SUN raster image
image/x-rgb: rgb: RGB Image
image/x-portable-pixmap: ppm: PPM Image
image/x-portable-graymap: pgm: PGM Image
image/x-portable-bitmap: pbm: PBM Image
image/x-portable-anymap: pnm: PBM Image
#image/x-MS-bmp: bmp: Windows Bitmap
image/x-ms-bmp: bmp: Windows Bitmap
#image/x-bmp: bmp: Windows Bitmap
#image/bmp: bmp: Windows Bitmap
#image/png: png: PNG image
#image/x-png: png: PNG image
	swallow(XVroot) maxaspect: xv -ima -igeom +9000+9000 -geometry +9000+9000 "$file"
	repeat swallow(gqview) fill: gqview -t "$file" >/dev/null 2>/dev/null
	repeat swallow(display) fill: display -geometry +9000+9000 "$file"
	repeat swallow(Sdtimage) fill: sdtimage "$file"
	exits: display -window $window -backdrop $file
	swallow(*qiv:) fill maxaspect: qiv -n "$file"
#	repeat swallow(xli) fill: xli -quiet "$file" >/dev/null 2>/dev/null
#	repeat swallow(xloadimage) fill: xloadimage -quiet "$file" >/dev/null 2>/dev/null
#	exits: xli -quiet -windowid $window "$file"
#	exits: xloadimage -quiet -windowid $window "$file"

##
## Photoshop files
## Requires 'convert' from the imagemagick package
## 
application/photoshop:psd:PhotoShop Image
application/x-photoshop:psd:PhotoShop Image
	have(xv) repeat swallow(XVroot) maxaspect: convert -flatten "$file" "pnm:-" | xv -ima -igeom +9000+9000 -geometry +9000+9000 -
	have(display) repeat swallow(display) fill: convert -flatten "$file" "pnm:-" | display -geometry +9000+9000 -
	have(xli) repeat swallow(xli) fill: convert -flatten "$file" "pnm:-" |  xli -quiet - >/dev/null 2>/dev/null
	have(xloadimage) repeat swallow(xloadimage) fill: convert -flatten "$file" "pnm:-" | xloadimage -quiet - >/dev/null 2>/dev/null
	have(xli) exits: convert -flatten "$file" "pnm:-" | xli -quiet -windowid $window -
	have(xloadimage) exits: convert -flatten "$file" "pnm:-" | xloadimage -quiet -windowid $window -
	have(display) exits: convert -flatten "$file" "pnm:-" | display -window $window -backdrop -


##
## GIMP files
## Requires 'xcftopnm', which normally comes with gimp.
## In debian, xcftopnm can be found in the package gimp1.2-perl
## 
image/x-xcf:xcf:Gimp Image
image/xcf:xcf:Gimp Image
application/x-gimp:xcf:Gimp Image
application/gimp:xcf:Gimp Image
	have(xv) repeat swallow(XVroot) maxaspect: xcftopnm "$file" | xv -ima -igeom +9000+9000 -geometry +9000+9000 -
	have(display) repeat swallow(display) fill: xcftopnm "$file" | display -geometry +9000+9000 -
	have(xli) repeat swallow(xli) fill: xcftopnm "$file" | xli -quiet - >/dev/null 2>/dev/null
	have(xloadimage) repeat swallow(xloadimage) fill: xcftopnm "$file" | xloadimage -quiet - >/dev/null 2>/dev/null
	have(xli) exits: xcftopnm "$file" | xli -quiet -windowid $window -
	have(xloadimage) exits: xcftopnm "$file" | xloadimage -quiet -windowid $window -
	have(display) exits: xcftopnm "$file" | display -window $window -backdrop -


##
## Adobe Acrobat PDF
##
application/pdf: pdf: PDF file
application/x-pdf: pdf: PDF file
text/pdf: pdf: PDF file
text/x-pdf: pdf: PDF file
	repeat swallow(documentShell) fill: acroread  -tempFile +useFrontEndProgram -geometry +9000+9000  "$file"
	repeat swallow(documentShell) fill: acroexch -tempFile +useFrontEndProgram -geometry +9000+9000 "$file"
	repeat swallow(gv) fill: gv -safer -quiet -antialias -geometry +9000+9000 "$file" 2>/dev/null
	repeat swallow(xpdf) fill: xpdf -g +9000+9000 "$file" >/dev/null 2>/dev/null


##
## DVI
##
application/x-dvi: dvi: DVI file
        repeat swallow(kviewshell) fill: kdvi -geometry +9000+9000 "$file"
	repeat swallow(xdvi) fill: xdvi -safer -hush -geometry +9000+9000 "$file"


##
## Adobe Postscript
##
application/x-postscript: ps: PostScript file
application/postscript: ps: PostScript file
	repeat swallow(gv) fill: gv -safer -quiet -antialias -geometry +9000+9000 "$file" 2>/dev/null
	repeat swallow(Ggv) fill: ggv -antialias --geometry=+9000+9000 "$file" 2>/dev/null
	repeat swallow(ghostview) fill: ghostview -safer -quiet -geometry +9000+9000 "$file" 2>/dev/null
	repeat swallow(Pageview) fill: pageview "$file"
	fill have(ghostscript) swallow(ghostscript): sleep 9999999 | ghostscript -q -dSAFER -dBATCH -g${xsize}x${ysize} "$file" >/dev/null 2>/dev/null
	fill have(gs) swallow(ghostscript): sleep 9999999 | gs -q -dSAFER -dBATCH -g${xsize}x${ysize} "$file" >/dev/null 2>/dev/null


########################
## Office documents   ##
########################

define([OO],[have(soffice) nokill exits swallow(VCLSalFrame) fill: $oohelper $1
	have(ooffice) nokill exits swallow(VCLSalFrame) fill: $oohelper $1])



##
## Word Processor
##
application/rtf: rtf: Rich Text Format
application/x-msword: doc, dot: Microsoft Word Document
application/msword: doc, dot: Microsoft Word Document
application/vnd.sun.xml.writer: sxw: OpenOffice.org Writer Document
application/vnd.sun.xml.writer.template: stw: OpenOffice.org Writer Template Document
application/vnd.sun.xml.writer.global: sxg: OpenOffice.org Writer Global Document
application/vnd.stardivision.writer: sdw: StarWriter Document
application/x-starwriter: sdw: StarWriter Document
application/vnd.stardivision.writer-global: sgl: StarWriter Global Document
application/wordperfect5.1: wp: WordPerfect 5.1 Document
	OO(writer)
	repeat swallow(KWord) fill: kword -geometry +9000+9000 "$file"
	repeat swallow(AbiWord) fill: abiword -nosplash -geometry +9000+9000 "$file" >/dev/null 2>/dev/null
	repeat swallow(PCFileViewer) fill: sdtpcv "$file"
	repeat swallow(PCFileViewer) fill: /opt/SUNWdtpcv/bin/sdtpcv "$file"


##
## Spreadsheat
##
application/vnd.ms-excel: xls, xlb: Microsoft Excel Document
application/vnd.sun.xml.calc: sxc: OpenOffice.org Calc Document
application/vnd.sun.xml.calc.template: stc: OpenOffice.org Calc Template Document
application/vnd.stardivision.calc: sdc: StarCalc Document
application/x-starcalc: sdc: StarCalc Document
application/vnd.lotus-1-2-3: 123, wk1: Lotus 1-2-3 Document
	OO(calc)
	repeat swallow(PluggerGnumeric) fill: gnumeric --class PluggerGnumeric "$file"
	repeat swallow(PCFileViewer) fill: sdtpcv "$file"
	repeat swallow(PCFileViewer) fill: /opt/SUNWdtpcv/bin/sdtpcv "$file"


##
## Presentations
##
application/vnd.sun.xml.impress: sxi: OpenOffice.org Impress Document
application/vnd.sun.xml.impress.template: sti: OpenOffice.org Impress Template Document
application/vnd.stardivision.impress: sdd: StarImpress Document
application/vnd.stardivision.impress-packed: sdp: StarImpress Packed Document
application/x-starimpress: sdd: StarImpress Document
application/vnd.ms-powerpoint: ppt: Microsoft PowerPoint Slideshow
application/mspowerpoint: : Microsoft PowerPoint Slideshow
	OO(impress)

##
## Squiggels
##
application/vnd.sun.xml.draw: sxd: OpenOffice.org Draw Document
application/vnd.sun.xml.draw.template: std: OpenOffice.org Draw Template Document
application/vnd.stardivision.draw: sda: StarDraw Document
application/x-stardraw: sda: StarDraw Document
	OO(draw)

##
## Math?
##
application/vnd.sun.xml.math: sxm: OpenOffice.org Math Document
application/vnd.stardivision.math: smf: StarMath Document
application/x-starmath: smf: StarMath Document
	OO(math)


###############################
### Misc                    ###
###############################

##
## Molecules
##
chemical/x-pdb: pdb: Protein Data Bank file
model/x-pdb: pdb: Protein Data Bank file
        swallow(molecule) fill: /usr/X11R6/lib/xscreensaver/molecule -delay 20000 -geometry +9000+9000 -no-spin -molecule "$file"
        swallow(molecule) fill: /usr/local/lib/xscreensaver/molecule -delay 20000 -geometry +9000+9000 -no-spin -molecule "$file"
        swallow(molecule) fill: /usr/lib/xscreensaver/molecule -delay 20000 -geometry +9000+9000 -no-spin -molecule "$file"
        swallow(molecule) fill: molecule -delay 20000 -geometry +9000+9000 -no-spin -molecule "$file"


##
## Virtual Reality Modeling Language - VRML
##
model/vrml:vrl,vrml:Virtual Reality Modeling Language
model/x-vrml:vrl:Virtual Reality Modeling Language
world/vrml:vrl,vrml:Virtual Reality Modeling Language
world/x-vrml:vrl:Virtual Reality Modeling Language
x-world/vrml:vrl,vrml:Virtual Reality Modeling Language
x-world/x-vrml:vrl:Virtual Reality Modeling Language
	swallow(VRweb Scene Viewer) fill: vrweb -geometry +9000+9000  -URL "$url" "$file" >/dev/null 2>/dev/null

##
## Bittorrent files
##
application/bittorrent:torrent:Bittorrent
application/x-bittorrent:torrent:Bittorrent
	have(btdownloadcurses.py) swallow(plugger-bt) fill: xterm -geometry +9000+9000 -T plugger-bt -e 'btdownloadcurses.py --responsefile "$file"'

##
## DWIM (Do What I Mean)
## These lines allow plugger to display some documents which have
## the wrong mime-type. You can also add application/octet-stream here
## if you really don't like those pesky download windows.
##
#text/plain::For files with the wrong type
#plain/text::For files with the wrong type
#	:internal:dwim
#	have(less) swallow(plugger-text) fill: xterm -geometry +9000+9000 -T plugger-text -e 'less "$file"'
#	have(more) swallow(plugger-text) fill: xterm -geometry +9000+9000 -T plugger-text -e 'more "$file"'


##
## MAN pages
##
application/x-troff-man:man:MAN pages
	have(nroff) have(less) have(less) swallow(plugger-text) fill: xterm -geometry +9000+9000 -T plugger-text -e 'nroff -man -name "$file" | less'
	have(nroff) have(more) have(less) swallow(plugger-text) fill: xterm -geometry +9000+9000 -T plugger-text -e 'nroff -man -name "$file" | more'
	
	
