Class: Launchy::Browser

Inherits:
Application show all
Defined in:
lib/launchy/browser.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Application

#app_list, application_classes, #cygwin_app_list, #darwin_app_list, find_application_class_for, find_executable, #find_executable, inherited, known_os_families, my_os, #my_os, my_os_family, #my_os_family, #nix_desktop_environment, #run, #testing_app_list, #windows_app_list

Constructor Details

#initializeBrowser

Returns a new instance of Browser.



38
39
40
41
42
# File 'lib/launchy/browser.rb', line 38

def initialize
  @browser = nil
  @nix_app_list = []
  raise "Unable to find browser to launch for os family '#{my_os_family}'." unless browser
end

Class Method Details

.desktop_environment_browser_launchersObject



9
10
11
12
13
14
15
16
# File 'lib/launchy/browser.rb', line 9

def desktop_environment_browser_launchers
  @desktop_environment_browser_launchers ||= {
    :kde     => "kfmclient",
    :gnome   => "gnome-open",
    :xfce    => "exo-open",
    :generic => "htmlview"
  }
end

.fallback_browsersObject



17
18
19
# File 'lib/launchy/browser.rb', line 17

def fallback_browsers
  @fallback_browsers ||=  %w[ firefox seamonkey opera mozilla netscape galeon ]
end

.handle?(*args) ⇒ Boolean

return true if this class can handle the given parameter(s)

Returns:

  • (Boolean)


25
26
27
28
29
30
31
32
33
34
35
# File 'lib/launchy/browser.rb', line 25

def handle?(*args)
  begin
    Launchy.log "#{self.name} : testing if [#{args[0]}] (#{args[0].class}) is a url."
    uri = URI.parse(args[0])
    result =  [URI::HTTP, URI::HTTPS, URI::FTP].include?(uri.class)
  rescue Exception => e
    # hmm... why does rcov not see that this is executed ?
    Launchy.log "#{self.name} : not a url, #{e}"
    return false
  end
end

.run(*args) ⇒ Object



20
21
22
# File 'lib/launchy/browser.rb', line 20

def run(*args)
  Browser.new.visit(args[0])
end

Instance Method Details

#browserObject

return the full command line path to the browser or nil



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/launchy/browser.rb', line 73

def browser
  if not @browser then
    if ENV['LAUNCHY_BROWSER'] and File.exists?(ENV['LAUNCHY_BROWSER']) then
      Launchy.log "#{self.class.name} : Using LAUNCHY_BROWSER environment variable : #{ENV['LAUNCHY_BROWSER']}"
      @browser = ENV['LAUNCHY_BROWSER']
    elsif ENV['BROWSER'] and File.exists?(ENV['BROWSER']) then
      Launchy.log "#{self.class.name} : Using BROWSER environment variable : #{ENV['BROWSER']}"
      @browser = ENV['BROWSER']
    elsif app_list.size > 0 then
      @browser = app_list.first
      Launchy.log "#{self.class.name} : Using application list : #{@browser}"
    else
      msg = "Unable to launch. No Browser application found."
      Launchy.log "#{self.class.name} : #{msg}"
      $stderr.puts msg
    end
  end
  return @browser
end

#desktop_environment_browser_launchersObject



44
45
46
# File 'lib/launchy/browser.rb', line 44

def desktop_environment_browser_launchers
  self.class.desktop_environment_browser_launchers
end

#fallback_browsersObject



48
49
50
# File 'lib/launchy/browser.rb', line 48

def fallback_browsers
  self.class.fallback_browsers
end

#nix_app_listObject

Find a list of potential browser applications to run on *nix machines. The order is:

1) What is in ENV['LAUNCHY_BROWSER'] or ENV['BROWSER']
2) xdg-open
3) desktop environment launcher program
4) a list of fallback browsers


58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/launchy/browser.rb', line 58

def nix_app_list
  if @nix_app_list.empty?
    browser_cmds = ['xdg-open']
    browser_cmds << desktop_environment_browser_launchers[nix_desktop_environment]
    browser_cmds << fallback_browsers
    browser_cmds.flatten!
    browser_cmds.delete_if { |b| b.nil? || (b.strip.size == 0) }
    Launchy.log "#{self.class.name} : Initial *Nix Browser List: #{browser_cmds.join(', ')}"
    @nix_app_list = browser_cmds.collect { |bin| find_executable(bin) }.find_all { |x| not x.nil? }
    Launchy.log "#{self.class.name} : Filtered *Nix Browser List: #{@nix_app_list.join(', ')}"
  end
  @nix_app_list
end

#visit(url) ⇒ Object

launch the browser at the appointed url



94
95
96
# File 'lib/launchy/browser.rb', line 94

def visit(url)
  run(browser,url)
end