awesome/my.lua
author Fabien Ninoles <fabien@tzone.org>
Mon, 27 Oct 2014 12:54:34 -0400
changeset 7 03125e413ae3
child 8 0eae48be1d62
permissions -rw-r--r--
Add awesome configuration
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     1
require("naughty")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     2
require("awful")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     3
require("debug")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     4
require("vicious")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     5
require("wicked")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     6
require("beautiful")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     8
local ipairs = ipairs
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     9
local pairs = pairs
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    10
local naughty = naughty
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    11
local awful = awful
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    12
local debug = debug
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    13
local vicious = vicious
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    14
local wicked = wicked
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    15
local beautiful = beautiful
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    16
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    17
local capi = {
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    18
   keygrabber = keygrabber,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    19
   client = client,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    20
   string = string,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    21
   widget = widget,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    22
}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    23
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    24
module("my")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    25
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    26
local in_error = false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    27
function notify_error(err)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    28
   -- Make sure we don't go into an endless error loop
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    29
   if in_error then return end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    30
   in_error = true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    31
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    32
   naughty.notify({ preset = naughty.config.presets.critical,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    33
                    title = "Oops, an error happened!",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    34
                    text = err })
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    35
   in_error = false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    36
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    37
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    38
function mkspawn(p)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    39
   return function () awful.util.spawn(p) end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    40
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    41
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    42
function setxkbmap(kb)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    43
   XKBDIR="$HOME/.xkb"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    44
   -- Strange bug on xkbcomp: pushing directly the output to the display
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    45
   -- lead to an error; We need to convert it first to .xkb and then feed
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    46
   -- xkbcomp again for setting the x display
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    47
   p = 'setxkbmap "' .. kb .. " -print | xkbcomp -xkb -a -I" .. XKBDIR .. " - - | kxbcomp - $DISPLAY"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    48
   awful.util.spawn_with_shell(p)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    49
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    50
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    51
function kill_all(rule)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    52
   for c in awful.client.iterate(rule) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    53
      c:kill()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    54
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    55
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    56
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    57
function quit()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    58
   kill_all(awful.rules.any)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    59
   awesome.quit()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    60
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    61
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    62
function show_clients()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    63
   if instance then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    64
      instance:hide()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    65
      instance = nil
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    66
   else
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    67
      instance = awful.menu.clients({width=250})
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    68
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    69
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    70
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    71
local function widgets_cpu()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    72
   local w = awful.widget.graph()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    73
   -- Graph properties
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    74
   w:set_width(30)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    75
   w:set_background_color("#729fcf")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    76
   w:set_gradient_colors({ "#729fcf", "LightBlue", "white" })
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    77
-- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    78
   vicious.register(w, vicious.widgets.cpu, "$1", 1)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    79
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    80
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    81
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    82
local function widgets_mdp()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    83
   -- Initialize widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    84
   local w = capi.widget({ type = "textbox" })
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    85
   -- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    86
   vicious.register(w, vicious.widgets.mpd,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    87
                    function (widget, args)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    88
                       if args["{state}"] == "Stop" then 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    89
                          return " - "
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    90
                       else 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    91
                          return args["{Artist}"]..' - '.. args["{Title}"]
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    92
                       end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    93
                    end, 10)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    94
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    95
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    96
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    97
local function widgets_mem(monitor)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    98
-- Initialize widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    99
   local w = awful.widget.progressbar()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   100
-- Progressbar properties
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   101
   w:set_width(10)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   102
   w:set_vertical(true)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   103
   w:set_background_color("#729fcf")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   104
   w:set_gradient_colors({ "#729fcf", "LightBlue", "white" })
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   105
-- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   106
   vicious.register(w, vicious.widgets.mem, "$1", 5)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   107
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   108
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   109
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   110
local function widgets_net(device)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   111
   local w = capi.widget({ type = "textbox"})
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   112
   -- w:set_vertical(true)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   113
   w.width = 150
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   114
   w.align = 'center'
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   115
   vicious.register(w, wicked.widgets.net,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   116
                    '${' .. device .. ' up} / ${' .. device .. ' down}',
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   117
                   1)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   118
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   119
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   120
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   121
local function widgets_mode()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   122
   local w = capi.widget({ type = "textbox"})
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   123
   widgets.mode_widget = w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   124
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   125
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   126
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   127
local function widgets_keyboard()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   128
   local w = capi.widget({ type = "textbox"})
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   129
   widgets.keyboard_widget = w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   130
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   131
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   132
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   133
local function widgets_decorated(w, onclick)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   134
   local wg = w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   135
   if w.widget then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   136
      wg = w.widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   137
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   138
   wg:buttons(awful.util.table.join(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   139
                awful.button({}, 1, onclick)))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   140
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   141
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   142
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   143
widgets = {
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   144
   cpu = widgets_cpu,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   145
   mem = widgets_mem,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   146
   net = widgets_net,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   147
   mdp = widgets_mdp,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   148
   mode = widgets_mode,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   149
   keyboard = widgets_keyboard,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   150
   decorated = widgets_decorated,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   151
}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   152
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   153
function make_key(k, n, f)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   154
   return { key = k, name = n, func = f}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   155
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   156
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   157
function show_kt(keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   158
   -- todo: replace with a menu ?
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   159
   text = ""
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   160
   for _, k in ipairs(keytable) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   161
      text = text .. "\'" .. k.key .. "\'\t" .. k.name .. "\n"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   162
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   163
   naughty.notify({text = text, 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   164
                   title = title, 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   165
                   position = "top_left",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   166
   })
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   167
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   168
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   169
local keynames = {
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   170
   [" "] = "space",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   171
   ["\t"] = "tab",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   172
}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   173
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   174
local function translate_key(mod, key)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   175
   local skey = ""
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   176
   for m,v in pairs(mod) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   177
      if v then 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   178
         skey = skey .. v .. "+"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   179
      end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   180
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   181
   skey = skey .. (keynames[key] or key)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   182
   return skey
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   183
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   184
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   185
local function kt_handler(keytable, mod, key, event)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   186
   if event == "release" then 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   187
      return true 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   188
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   189
   local theme = beautiful.get()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   190
   widgets.mode_widget.bg = theme.bg_focus
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   191
   if key == "Escape" then   
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   192
      return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   193
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   194
   local skey = capi.string.lower(translate_key(mod, key))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   195
   if skey == "control+h" or skey == "shift+?" then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   196
      show_kt(keytable, "Current binding")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   197
      return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   198
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   199
   for _,k in ipairs(keytable) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   200
      if skey == capi.string.lower(k.key) then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   201
         return k.func(c)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   202
      end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   203
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   204
   -- notify_error("Nothing for " .. skey)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   205
   widgets.mode_widget.bg = theme.bg_urgent
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   206
   return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   207
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   208
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   209
local function stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   210
   capi.keygrabber.stop()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   211
   widgets.mode_widget.visible = false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   212
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   213
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   214
function mkinteractive(f)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   215
  return function (c)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   216
     stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   217
     return f(c)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   218
  end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   219
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   220
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   221
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   222
-- local is_in_run_kt = false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   223
function run_kt(c, keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   224
   widgets.mode_widget.text = "Mode: " .. title
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   225
   widgets.mode_widget.visible = true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   226
   widgets.mode_widget.bg = "LightBlue"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   227
   widgets.mode_widget:buttons(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   228
      awful.util.table.join(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   229
         awful.button({}, 1, function () show_kt(keytable, "Binding") end),
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   230
         awful.button({}, 3, stop_kt)))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   231
   capi.keygrabber.run(function (mod, key, event)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   232
         if not kt_handler(keytable, mod, key, event) then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   233
            stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   234
            return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   235
         end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   236
         return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   237
   end)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   238
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   239
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   240
function make_kt(keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   241
   return function (c) 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   242
      -- if is_in_run_kt then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   243
      --    -- notify_error("Already in run_kt:\n" .. debug.traceback())
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   244
      --    is_in_run_kt = false -- reset
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   245
      --    return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   246
      -- end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   247
      return run_kt(c, keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   248
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   249
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   250
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   251
function make_focus_bydirection(direction)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   252
   return function ()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   253
      awful.client.focus.bydirection(direction)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   254
      if capi.client.focus then capi.client.focus:raise() end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   255
      return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   256
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   257
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   258
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   259
function make_globalkeys(modifiers, keytable)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   260
   local t = {}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   261
   for _,k in ipairs(keytable) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   262
      t = awful.util.table.join(t, awful.key(modifiers, k.key, k.func))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   263
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   264
   return t
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   265
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   266