(bug) Forgot to update the links module when tripped a global variable in rc.
[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 -- `mypromptbox' should be defined.
11
12 -- {{{ Helper functions
13
14 local function open_in_term (command, notify)
15    if notify then
16       naughty.notify ({ text = command })
17    end
18    spawn (XTERM.." -geometry "..TERM_GEOMETRY.." -e ".. command)
19 end
20
21 local function url_encode (str)
22    if str then
23       local function repchar (c)
24          return string.format ("%%%02X", string.byte (c))
25       end
26       str = gsub (str, "\n", "\r\n")
27       str = gsub (str, "([^%w ])", repchar)
28       str = gsub (str, " ", "+")
29    end
30    return str
31 end
32
33 local function prmpt (prompt_text, cache, fun)
34    return
35    function (from_selection)
36       if from_selection then
37          local str = selection ()
38          if str == "" then
39             naughty.notify ({ text = "Need a selection!" })
40          else
41             fun (str) 
42          end
43       else
44          prompt ({ prompt = prompt_text }, mypromptbox[mouse.screen].widget,
45                  fun, nil, cache)
46       end
47    end
48 end
49
50 local xbrowser="firefox"
51 local term_browser="w3m"
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 --}}}