Switched to IceCat web browser, and updated MPD usage.
[berthome:berthome.git] / links.lua
1 require ("awful")
2 require ("naughty")
3
4 -- Many of what's used here should have been loaded already!
5 local spawn = awful.util.spawn
6 local gsub = string.gsub
7 local match = string.match
8 local prompt = awful.prompt.run
9
10 local xbrowser="icecat"
11 local term_browser="w3m"
12
13 -- `mypromptbox' should be defined.
14
15 -- {{{ Helper functions
16
17 local function open_in_term (command, notify)
18    if notify then
19       naughty.notify ({ text = command })
20    end
21    spawn (XTERM.." -geometry "..TERM_GEOMETRY.." -e ".. command)
22 end
23
24 local function url_encode (str)
25    if str then
26       local function repchar (c)
27          return string.format ("%%%02X", string.byte (c))
28       end
29       str = gsub (str, "\n", "\r\n")
30       str = gsub (str, "([^%w ])", repchar)
31       str = gsub (str, " ", "+")
32    end
33    return str
34 end
35
36 local function prmpt (prompt_text, cache, fun)
37    return
38    function (from_selection)
39       if from_selection then
40          local str = selection ()
41          if str == "" then
42             naughty.notify ({ text = "Need a selection!" })
43          else
44             fun (str)
45          end
46       else
47          prompt ({ prompt = prompt_text }, mypromptbox[mouse.screen].widget,
48                  fun, nil, cache)
49       end
50    end
51 end
52
53 -- }}}
54
55 -- {{{ Hack for some publishing site at verimag...
56
57 -- Basic check: we have an adress:
58 local function is_an_uri (str) return match (str, "^[^/]*://[^/]+.*$") end
59
60 local function open_gate6_link (uri)
61    local function append_host (hostname, to_append)
62       return gsub (hostname, "([^/]*://[^/]+)(.*)", "%1"..to_append.."%2")
63    end
64
65    if not is_an_uri (uri) then
66       naughty.notify ({ text = "Need a valid URI!" })
67       return false
68    end
69
70    local cmd = xbrowser.." \""..append_host (uri, ".gate6.inist.fr").."\""
71    naughty.notify ({ text = cmd })
72    spawn (cmd)
73 end
74
75 query_open_gate6_link =
76    prmpt ("Address: ", nil, open_gate6_link)
77
78 -- }}}
79
80 --{{{ Translations and language tools...
81
82 function find_translation (langs, from_selection)
83
84    prmpt ("Word: ",
85           awful.util.getdir ("cache").."/history_transl_"..langs,
86           function (string)
87              open_in_term (term_browser.." \"http://www.wordreference.com/"..
88                            langs.."/"..string.."\"")
89           end) (from_selection)
90
91 end
92
93 find_fr_conj = 
94    prmpt ("Verb: ", 
95           awful.util.getdir ("cache").."/history_conj_fr",
96           function (string)
97              open_in_term (term_browser..
98                            " \"http://leconjugueur.com/php5/index.php?v="..
99                               url_encode (string).."\"")
100           end)
101
102 function find_synonym (lang, from_selection)
103    local req
104    if lang == "fr" then
105       req = "fr/search?r="
106    else
107       req = "en/search?b=1&r=" 
108    end
109
110    -- XXX: Note I have a huge problem with accents in prompts...
111    prmpt ("Word: ", 
112           awful.util.getdir ("cache").."/history_synonym_"..lang,
113           function (string)
114              open_in_term (term_browser..
115                            " -I iso-8859-1 \"http://dico.isc.cnrs.fr/dico/"..req..
116                               url_encode (string).. "\"")
117           end) (from_selection)
118
119 end
120
121 --}}}