awesome/my.lua
author Fabien Ninoles <fabien@tzone.org>
Sat, 20 Jun 2015 16:21:25 -0400
changeset 12 ffc02bf394cb
parent 11 7226709dc4c4
child 13 e9e2f624cd99
permissions -rw-r--r--
Update to awesome 3.5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
     1
local os = require("os")
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
     2
local io = require("io")
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
     3
local debug = require("debug")
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
     4
local awesome = require("awesome")
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     5
local naughty = require("naughty")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     6
local awful = require("awful")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     7
local vicious = require("vicious")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     8
local wicked = require("wicked")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     9
local beautiful = require("beautiful")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
    10
local timer = require("timer")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
    11
local wibox = require("wibox")
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    12
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    13
local ipairs = ipairs
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    14
local pairs = pairs
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    15
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    16
local capi = {
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    17
   keygrabber = require("keygrabber"),
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    18
   client = require("client"),
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    19
   string = require("string"),
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    20
}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    21
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    22
module("my")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    23
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    24
--- Stolen from shifty: Shows a popup and logs to a file
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    25
-- @param message The text message.
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    26
-- @param log_level 1 = INFO, 2 = WARN, 3 = ERROR, if nothting is provided 1 is used.
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    27
function log(message, log_level)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    28
  if log_level == nil then
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    29
    log_level = 1
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    30
  end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    31
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    32
  local log_table = {
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    33
    { level = "INFO", bg_colour = "#18F92C", fg_colour  = "#0E0E0E" },
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    34
    { level = "WARN", bg_colour = "#9E731F", fg_colour  = "#0E0E0E" },
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    35
    { level = "ERROR", bg_colour = "#FF0015", fg_colour  = "#000000" }
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    36
  }
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    37
  -- %c eg: Wed Jan 30 14:25:13 2013
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    38
  local time = os.date("%c")
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    39
  message = time .. " - " .. log_table[log_level].level .. " - " .. message ..  "\n" .. debug.traceback()
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    40
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    41
  local home = os.getenv("HOME")
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    42
  local log_file = io.open(home .. "/.awesome.log", "a+")
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    43
  log_file:write(message .."\n")
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    44
  log_file:close()
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    45
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    46
  naughty.notify({ preset = naughty.config.presets.critical, text = message, bg = log_table[log_level].bg_colour, fg = log_table[log_level].fg_colour})
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
    47
end
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
    48
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    49
local in_error = false
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    50
function mk_notify_error_dialog(level)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    51
   return function(msg)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    52
      -- Make sure we don't go into an endless error loop
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    53
      if in_error then return end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    54
      in_error = true
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    55
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    56
      log(msg, level)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    57
      
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    58
      in_error = false
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    59
   end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    60
end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    61
   
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    62
notify_error = mk_notify_error_dialog(3)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    63
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    64
local function get_gradient_colors(c1, c2, c3)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    65
   return { type = "linear", from = { 0, 0 }, to = { 0, 20 }, stops = { { 0, c1 }, { 0.5, c2 }, { 1, c3 } }}
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    66
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    67
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    68
function mkspawn(p)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    69
   return function () awful.util.spawn(p) end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    70
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    71
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    72
function setxkbmap(kb)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    73
   XKBDIR="$HOME/.xkb"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    74
   -- Strange bug on xkbcomp: pushing directly the output to the display
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    75
   -- 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
    76
   -- xkbcomp again for setting the x display
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    77
   p = 'setxkbmap "' .. kb .. " -print | xkbcomp -xkb -a -I" .. XKBDIR .. " - - | kxbcomp - $DISPLAY"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    78
   awful.util.spawn_with_shell(p)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    79
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    80
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    81
function kill_all(rule)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    82
   for c in awful.client.iterate(rule) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    83
      c:kill()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    84
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    85
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    86
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    87
function quit()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    88
   kill_all(function (c) return true end)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    89
   awesome.quit()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    90
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    91
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    92
function show_clients()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    93
   if instance then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    94
      instance:hide()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    95
      instance = nil
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    96
   else
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    97
      instance = awful.menu.clients({width=250})
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    98
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    99
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   100
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   101
local function widgets_cpu()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   102
   local w = awful.widget.graph()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   103
   -- Graph properties
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   104
   w:set_width(30)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   105
   w:set_background_color("#729fcf")
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   106
   w:set_color(get_gradient_colors("#729fcf", "LightBlue", "white"))
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   107
-- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   108
   vicious.register(w, vicious.widgets.cpu, "$1", 1)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   109
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   110
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   111
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   112
local function widgets_mdp()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   113
   -- Initialize widget
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   114
   local w = wibox.widget.textbox()
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   115
   -- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   116
   vicious.register(w, vicious.widgets.mpd,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   117
                    function (widget, args)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   118
                       if args["{state}"] == "Stop" then 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   119
                          return " - "
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   120
                       else 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   121
                          return args["{Artist}"]..' - '.. args["{Title}"]
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   122
                       end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   123
                    end, 10)
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_mem(monitor)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   128
-- Initialize widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   129
   local w = awful.widget.progressbar()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   130
-- Progressbar properties
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   131
   w:set_width(10)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   132
   w:set_vertical(true)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   133
   w:set_background_color("#729fcf")
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   134
   w:set_color(get_gradient_colors("#729fcf", "LightBlue", "white"))
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   135
-- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   136
   vicious.register(w, vicious.widgets.mem, "$1", 5)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   137
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   138
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   139
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   140
local function widgets_net(device)
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   141
   local w = wibox.widget.textbox()
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   142
   -- w:set_vertical(true)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   143
   w.width = 150
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   144
   w.align = 'center'
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   145
   vicious.register(w, wicked.widgets.net,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   146
                    '${' .. device .. ' up} / ${' .. device .. ' down}',
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   147
                   1)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   148
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   149
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   150
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   151
local function widgets_mode()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   152
   local bg = wibox.widget.background()
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   153
   local w = wibox.widget.textbox()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   154
   bg:set_widget(w)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   155
   widgets.mode_widget = w
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   156
   widgets.mode_widget_bg = bg
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   157
   return bg
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   158
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   159
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   160
local function widgets_keyboard()
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   161
   local w = wibox.widget.textbox()
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   162
   widgets.keyboard_widget = w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   163
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   164
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   165
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   166
local function widgets_decorated(w, onclick)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   167
   local wg = w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   168
   if w.widget then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   169
      wg = w.widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   170
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   171
   wg:buttons(awful.util.table.join(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   172
                awful.button({}, 1, onclick)))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   173
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   174
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   175
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   176
widgets = {
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   177
   cpu = widgets_cpu,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   178
   mem = widgets_mem,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   179
   net = widgets_net,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   180
   mdp = widgets_mdp,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   181
   mode = widgets_mode,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   182
   keyboard = widgets_keyboard,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   183
   decorated = widgets_decorated,
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
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   186
function make_key(k, n, f)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   187
   return { key = k, name = n, func = f}
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
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   190
function show_kt(keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   191
   -- todo: replace with a menu ?
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   192
   text = ""
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   193
   for _, k in ipairs(keytable) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   194
      text = text .. "\'" .. k.key .. "\'\t" .. k.name .. "\n"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   195
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   196
   naughty.notify({text = text, 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   197
                   title = title, 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   198
                   position = "top_left",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   199
   })
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   200
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   201
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   202
local keynames = {
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   203
   [" "] = "space",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   204
   ["\t"] = "tab",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   205
}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   206
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   207
local ignored_mods = {
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   208
   ["Mod2"] = true,
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   209
}
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   210
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   211
local function translate_key(mod, key)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   212
   local skey = ""
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   213
   for m,v in pairs(mod) do
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   214
      if not ignored_mods[v] then 
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   215
         skey = skey .. v .. "+"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   216
      end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   217
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   218
   skey = skey .. (keynames[key] or key)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   219
   return skey
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   220
end
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 function kt_handler(keytable, mod, key, event)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   223
   if event == "release" then 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   224
      return true 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   225
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   226
   local theme = beautiful.get()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   227
   widgets.mode_widget_bg:set_bg(theme.bg_focus)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   228
   if key == "Escape" then   
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   229
      return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   230
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   231
   local skey = capi.string.lower(translate_key(mod, key))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   232
   if skey == "control+h" or skey == "shift+?" then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   233
      show_kt(keytable, "Current binding")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   234
      return true
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
   for _,k in ipairs(keytable) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   237
      if skey == capi.string.lower(k.key) then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   238
         return k.func(c)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   239
      end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   240
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   241
   -- notify_error("Nothing for " .. skey)
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   242
   widgets.mode_widget_bg:set_bg(theme.bg_urgent)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   243
   return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   244
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   245
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   246
local function stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   247
   capi.keygrabber.stop()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   248
   widgets.mode_widget:set_text("")
7
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 mkinteractive(f)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   252
  return function (c)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   253
     stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   254
     return f(c)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   255
  end
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
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
-- local is_in_run_kt = false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   260
function run_kt(c, keytable, title)
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   261
   widgets.mode_widget:set_text("Mode: " .. title)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   262
   -- widgets.mode_widget:show()
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   263
   widgets.mode_widget_bg:set_bg("LightBlue")
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   264
   widgets.mode_widget:buttons(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   265
      awful.util.table.join(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   266
         awful.button({}, 1, function () show_kt(keytable, "Binding") end),
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   267
         awful.button({}, 3, stop_kt)))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   268
   capi.keygrabber.run(function (mod, key, event)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   269
         if not kt_handler(keytable, mod, key, event) then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   270
            stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   271
            return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   272
         end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   273
         return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   274
   end)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   275
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   276
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   277
function make_kt(keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   278
   return function (c) 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   279
      -- if is_in_run_kt then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   280
      --    -- notify_error("Already in run_kt:\n" .. debug.traceback())
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   281
      --    is_in_run_kt = false -- reset
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   282
      --    return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   283
      -- end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   284
      return run_kt(c, keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   285
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   286
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   287
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   288
function make_focus_bydirection(direction)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   289
   return function ()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   290
      awful.client.focus.bydirection(direction)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   291
      if capi.client.focus then capi.client.focus:raise() end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   292
      return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   293
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   294
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   295
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   296
function make_globalkeys(modifiers, keytable)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   297
   local t = {}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   298
   for _,k in ipairs(keytable) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   299
      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
   300
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   301
   return t
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   302
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   303
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   304
-- Install a sloppy-like focus with a timeout.
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   305
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   306
function sloppy_toggle()
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   307
   sloppy = not sloppy
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   308
end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   309
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   310
function sloppy_mouse_enter(c)
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   311
   if sloppy and
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   312
      c ~= sloppy_last_client and
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   313
      awful.client.focus.filter(c) and
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   314
      awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   315
   then
9
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   316
      if sloppy_timer.started
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   317
      then
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   318
         sloppy_timer:again()
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   319
      else
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   320
         sloppy_timer:start()
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   321
      end
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   322
      sloppy_last_client = c
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   323
   end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   324
end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   325
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   326
function sloppy_on_timeout()
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   327
   if sloppy
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   328
   then
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   329
      local c = awful.mouse.client_under_pointer()
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   330
      if c and
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   331
         c == sloppy_last_client
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   332
      then
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   333
         capi.client.focus = c
9
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   334
         sloppy_timer:stop()
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   335
      end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   336
    end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   337
end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   338
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   339
sloppy = true
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   340
sloppy_last_client = nil
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   341
sloppy_timer = nil
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   342
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   343
function sloppy_install(delay)
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   344
   sloppy_timer = timer({ timeout = delay })
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   345
   sloppy_timer:connect_signal("timeout", sloppy_on_timeout)
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   346
   sloppy_timer:start()
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   347
   capi.client.connect_signal("manage", function (c)
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   348
                             c:connect_signal("mouse::enter", sloppy_mouse_enter)
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   349
   end)
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   350
   capi.client.connect_signal("focus", function ()
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   351
                                 if sloppy_timer.started then
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   352
                                    sloppy_timer:stop()
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   353
                                 end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   354
   end)
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   355
end