module Fm
MIMETYPES = Marshal.load(File.read(
File.join(MYDIR, 'data', 'mime.dat')))
def self.get_default_flags(file)
case file.mimetype
when /^(?:image|video)\//; 'd'
when 'application/pdf'; 'd'
else '' end
end
def self.filehandler(files, hash)
str = files.map{|x| x.sh}.join(' ')
type = files.first.mimetype
name = files.first.basename
mode = hash.mode
use = lambda do |sym|
hash.exec = App.send(sym, mode, name, str, files)
end
case type
when /^(video|audio)\//
use.call :mplayer
when "application/pdf"
use.call :evince
when /^(image)\//
use.call :image
else
case name
when /\.(swc|smc)/
use.call :zsnes
end
end
return hash
end
module App
def image(mode, name, str, file)
case mode
when 4; "feh --bg-scale #{str}"
when 5; "feh --bg-tile #{str}"
when 6; "feh --bg-center #{str}"
when 2; "gimp #{str}"
when 1; "feh -F #{str}"
else "feh #{str}"
end
end
def evince(mode, name, str, file)
"evince #{str}"
end
def mplayer(mode, name, str, files)
rest = name, str, files
case mode
when nil
if name =~ /720p/
mplayer(1, *rest)
else
mplayer(0, *rest)
end
when 0
return "mplayer -fs -sid 0 #{str}"
when 1
return "mplayer -vm sdl -sid 0 #{str}"
end
end
def zsnes(mode, name, str, files)
case mode
when 1
return "zsnes -ad sdl -o #{str}"
else
return "zsnes -ad sdl -u -o #{str}"
end
end
module_function *%w*
mplayer zsnes evince image
*
end
def self.getfilehandler_frompath(*files)
file = files.first
n = files.size
case file
when /\.(part|avi|mpe?[g\d]|flv|fid|mkv|mov|wm[av]|vob|php|divx?|og[gmv])$/i
if file =~ /720p/
return "mplayer -vm sdl #{file.sh}", false
else
return "mplayer -fs #{file.sh}", false
end
when /\.java$/
return "javac #{file.sh}", true
when /\.class$/
return log "java #{file.sh.before_last('.')}"
when /\.part$/
test = getfilehandler_frompath($`)
if test
return test
end
when /\.(swc|smc)$/i
return "zsnes -ad sdl -u -o #{file.sh}"
when /\.(zip|rar|tar|gz|7z|jar|bz2)$/i
return "aunpack #{file.sh}", false
when "Makefile"
return "make"
when /\.(jpe?g|png|gif)$/i
return "feh #{file.sh}", false
when /\.(html?|swf)$/i
return "firefox #{file.sh}"
when /\.pdf$/i
return "evince #{file.sh}"
when /\.txt$/i
return VI % file.sh
when /\.wav$/i
return "aplay -q #{file.sh}"
when /\.m3u$/i
# return "mpc play #{File.expand_path(file)[13..-1].sh}", false
return "/home/hut/bin/loadplaylist.rb #{file.sh}"
# return "cmus-remote -c && cmus-remote -P #{file} && cmus-remote -C 'set play_library=false' && sleep 0.3 && cmus-remote -n", false
end
end
def self.getfilehandler(file)
test = getfilehandler_frompath(file.basename)
if test
return test
end
if file.executable?
return "#{file.sh}", true
end
return VI % file.sh
end
end