22 |
22 |
23 module("my") |
23 module("my") |
24 |
24 |
25 --- Stolen from shifty: Shows a popup and logs to a file |
25 --- Stolen from shifty: Shows a popup and logs to a file |
26 -- @param message The text message. |
26 -- @param message The text message. |
27 -- @param log_level 1 = INFO, 2 = WARN, 3 = ERROR, if nothting is provided 1 is used. |
27 -- @param log_level 1 = INFO, 2 = WARN, 3 = ERROR, if nothing is provided 1 is used. |
28 function log(message, log_level) |
28 function log(message, log_level) |
29 if log_level == nil then |
29 if log_level == nil then |
30 log_level = 1 |
30 log_level = 1 |
31 end |
31 end |
32 |
32 |
35 { level = "WARN", bg_colour = "#9E731F", fg_colour = "#0E0E0E" }, |
35 { level = "WARN", bg_colour = "#9E731F", fg_colour = "#0E0E0E" }, |
36 { level = "ERROR", bg_colour = "#FF0015", fg_colour = "#000000" } |
36 { level = "ERROR", bg_colour = "#FF0015", fg_colour = "#000000" } |
37 } |
37 } |
38 -- %c eg: Wed Jan 30 14:25:13 2013 |
38 -- %c eg: Wed Jan 30 14:25:13 2013 |
39 local time = os.date("%c") |
39 local time = os.date("%c") |
40 message = time .. " - " .. log_table[log_level].level .. " - " .. message .. "\n" .. debug.traceback() |
40 message = time .. " - " .. log_table[log_level].level .. " - " .. message .. "\n" |
|
41 tb = debug.traceback() |
41 |
42 |
42 local home = os.getenv("HOME") |
43 local home = os.getenv("HOME") |
43 local log_file = io.open(home .. "/.awesome.log", "a+") |
44 local log_file = io.open(home .. "/.awesome.log", "a+") |
44 log_file:write(message .."\n") |
45 log_file:write(message .. tb .. "\n") |
45 log_file:close() |
46 log_file:close() |
46 |
47 |
47 naughty.notify({ preset = naughty.config.presets.critical, text = message, bg = log_table[log_level].bg_colour, fg = log_table[log_level].fg_colour}) |
48 naughty.notify({ preset = naughty.config.presets.critical, text = message, bg = log_table[log_level].bg_colour, fg = log_table[log_level].fg_colour}) |
48 end |
49 end |
49 |
50 |
140 |
141 |
141 local function widgets_net(device) |
142 local function widgets_net(device) |
142 local w = wibox.widget.textbox() |
143 local w = wibox.widget.textbox() |
143 -- w:set_vertical(true) |
144 -- w:set_vertical(true) |
144 w.width = 150 |
145 w.width = 150 |
145 w.align = 'center' |
146 w:set_align('center') |
146 vicious.register(w, wicked.widgets.net, |
147 vicious.register(w, wicked.widgets.net, |
147 '${' .. device .. ' up} / ${' .. device .. ' down}', |
148 '<tt>${' .. device .. ' up} ▴ ${' .. device .. ' down} ▾</tt>', |
148 1) |
149 1) |
149 return w |
150 return w |
150 end |
151 end |
151 |
152 |
152 local function widgets_mode() |
153 local function widgets_mode() |
180 net = widgets_net, |
181 net = widgets_net, |
181 mdp = widgets_mdp, |
182 mdp = widgets_mdp, |
182 mode = widgets_mode, |
183 mode = widgets_mode, |
183 keyboard = widgets_keyboard, |
184 keyboard = widgets_keyboard, |
184 decorated = widgets_decorated, |
185 decorated = widgets_decorated, |
|
186 |
185 } |
187 } |
186 |
|
187 function make_key(k, n, f) |
188 function make_key(k, n, f) |
188 return { key = k, name = n, func = f} |
189 return { key = k, name = n, func = f} |
|
190 end |
|
191 |
|
192 function make_single_key(k, n, f) |
|
193 if f == nil then |
|
194 log("name: " .. n .. " is nil", 3) |
|
195 end |
|
196 return make_key(k, n, function (c) f(c); return true ; end) |
189 end |
197 end |
190 |
198 |
191 function show_kt(keytable, title) |
199 function show_kt(keytable, title) |
192 -- todo: replace with a menu ? |
200 -- todo: replace with a menu ? |
193 text = "" |
201 text = "" |
291 if capi.client.focus then capi.client.focus:raise() end |
299 if capi.client.focus then capi.client.focus:raise() end |
292 return true |
300 return true |
293 end |
301 end |
294 end |
302 end |
295 |
303 |
|
304 function split_modifiers(key) |
|
305 local modifiers = {} |
|
306 local pattern = capi.string.format("([^+]+)", sep) |
|
307 key:gsub(pattern, function(mod) table.insert(modifiers, mod) end) |
|
308 key = table.remove(modifiers) |
|
309 return modifiers, key |
|
310 end |
|
311 |
296 function make_globalkeys(modifiers, keytable) |
312 function make_globalkeys(modifiers, keytable) |
297 local t = {} |
313 local t = {} |
298 for _,k in ipairs(keytable) do |
314 for _,k in ipairs(keytable) do |
299 t = awful.util.table.join(t, awful.key(modifiers, k.key, k.func)) |
315 local mods, key = split_modifiers(k.key) |
|
316 mods = awful.util.table.join(modifiers, mods) |
|
317 -- log("name=" .. k.name .. "; modifiers=" .. table.concat(mods, ":") .. "; key=" .. key) |
|
318 if key == "Space" then |
|
319 key = capi.string.lower(key) |
|
320 end |
|
321 t = awful.util.table.join(t, awful.key(mods, key, k.func)) |
300 end |
322 end |
301 return t |
323 return t |
302 end |
324 end |
303 |
325 |
304 -- Install a sloppy-like focus with a timeout. |
326 -- Install a sloppy-like focus with a timeout. |