awesome/my.lua
author Fabien Ninoles <fabien@tzone.org>
Sat, 16 Apr 2016 13:57:38 -0400
changeset 18 f9712f62d202
parent 17 171cba5d3e3a
permissions -rw-r--r--
Add mounted path.
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")
13
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
     4
local table = require("table")
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
     5
local awesome = require("awesome")
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     6
local naughty = require("naughty")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     7
local awful = require("awful")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     8
local vicious = require("vicious")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
     9
local wicked = require("wicked")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
    10
local beautiful = require("beautiful")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
    11
local timer = require("timer")
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
    12
local wibox = require("wibox")
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    13
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    14
local ipairs = ipairs
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    15
local pairs = pairs
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 = {
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    18
   keygrabber = require("keygrabber"),
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    19
   client = require("client"),
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    20
   string = require("string"),
7
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
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    23
module("my")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    24
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    25
--- 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
    26
-- @param message The text message.
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
    27
-- @param log_level 1 = INFO, 2 = WARN, 3 = ERROR, if nothing is provided 1 is used.
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    28
function log(message, log_level)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    29
  if log_level == nil then
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    30
    log_level = 1
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    31
  end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    32
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    33
  local log_table = {
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    34
    { level = "INFO", bg_colour = "#18F92C", fg_colour  = "#0E0E0E" },
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    35
    { level = "WARN", bg_colour = "#9E731F", fg_colour  = "#0E0E0E" },
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    36
    { level = "ERROR", bg_colour = "#FF0015", fg_colour  = "#000000" }
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    37
  }
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    38
  -- %c eg: Wed Jan 30 14:25:13 2013
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    39
  local time = os.date("%c")
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
    40
  message = time .. " - " .. log_table[log_level].level .. " - " .. message ..  "\n"
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
    41
  tb = debug.traceback()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    42
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    43
  local home = os.getenv("HOME")
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    44
  local log_file = io.open(home .. "/.awesome.log", "a+")
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
    45
  log_file:write(message .. tb .. "\n")
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    46
  log_file:close()
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    47
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    48
  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
    49
end
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
    50
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    51
local in_error = false
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    52
function mk_notify_error_dialog(level)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    53
   return function(msg)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    54
      -- 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
    55
      if in_error then return end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    56
      in_error = true
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    57
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    58
      log(msg, level)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    59
      
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    60
      in_error = false
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    61
   end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    62
end
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
notify_error = mk_notify_error_dialog(3)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    65
13
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
    66
local function get_gradient_colors(c1, c2)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
    67
   return { type = "linear", from = { 0, 0 }, to = { 0, 20 }, stops = { { 0, c2 }, { 1, c1 } }}
7
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
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    70
function mkspawn(p)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    71
   return function () awful.util.spawn(p) end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    72
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    73
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    74
function setxkbmap(kb)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    75
   XKBDIR="$HOME/.xkb"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    76
   -- Strange bug on xkbcomp: pushing directly the output to the display
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    77
   -- 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
    78
   -- xkbcomp again for setting the x display
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    79
   p = 'setxkbmap "' .. kb .. " -print | xkbcomp -xkb -a -I" .. XKBDIR .. " - - | kxbcomp - $DISPLAY"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    80
   awful.util.spawn_with_shell(p)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    81
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    82
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    83
function kill_all(rule)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    84
   for c in awful.client.iterate(rule) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    85
      c:kill()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    86
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    87
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    88
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    89
function quit()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
    90
   kill_all(function (c) return true end)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    91
   awesome.quit()
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
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    94
local function widgets_cpu()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    95
   local w = awful.widget.graph()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    96
   -- Graph properties
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    97
   w:set_width(30)
13
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
    98
   w:set_background_color(beautiful.bg_normal)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
    99
   w:set_color(get_gradient_colors(beautiful.bg_focus, beautiful.bg_urgent))
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   100
-- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   101
   vicious.register(w, vicious.widgets.cpu, "$1", 1)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   102
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   103
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   104
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   105
local function widgets_mdp()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   106
   -- Initialize widget
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   107
   local w = wibox.widget.textbox()
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   108
   -- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   109
   vicious.register(w, vicious.widgets.mpd,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   110
                    function (widget, args)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   111
                       if args["{state}"] == "Stop" then 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   112
                          return " - "
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   113
                       else 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   114
                          return args["{Artist}"]..' - '.. args["{Title}"]
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   115
                       end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   116
                    end, 10)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   117
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   118
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   119
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   120
local function widgets_mem(monitor)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   121
-- Initialize widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   122
   local w = awful.widget.progressbar()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   123
-- Progressbar properties
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   124
   w:set_width(10)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   125
   w:set_vertical(true)
13
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   126
   w:set_background_color(beautiful.bg_normal)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   127
   w:set_color(get_gradient_colors(beautiful.bg_focus, beautiful.bg_urgent))
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   128
-- Register widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   129
   vicious.register(w, vicious.widgets.mem, "$1", 5)
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_net(device)
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   134
   local w = wibox.widget.textbox()
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   135
   -- w:set_vertical(true)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   136
   w.width = 150
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   137
   w:set_align('center')
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   138
   vicious.register(w, wicked.widgets.net,
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   139
                    '<tt>${' .. device .. ' up} â–´ ${' .. device .. ' down} â–¾</tt>',
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   140
                   1)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   141
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   142
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   143
17
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   144
local function widgets_dio(devices)
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   145
   local w = wibox.widget.textbox()
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   146
   -- w:set_vertical(true)
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   147
   w.width = 150
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   148
   w:set_align('center')
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   149
   local format = '<tt> '
18
f9712f62d202 Add mounted path.
Fabien Ninoles <fabien@tzone.org>
parents: 17
diff changeset
   150
   for device, name in pairs(devices) do
f9712f62d202 Add mounted path.
Fabien Ninoles <fabien@tzone.org>
parents: 17
diff changeset
   151
      format = format .. '[' .. name .. ' ${' .. device .. ' total_mb}] '
17
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   152
   end
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   153
   format = format .. '</tt>'
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   154
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   155
   vicious.register(w, vicious.widgets.dio, format, 1)
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   156
   return w
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   157
end
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   158
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   159
local function widgets_mode()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   160
   local bg = wibox.widget.background()
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   161
   local w = wibox.widget.textbox()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   162
   bg:set_widget(w)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   163
   widgets.mode_widget = w
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   164
   widgets.mode_widget_bg = bg
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   165
   return bg
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   166
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   167
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   168
local function widgets_decorated(w, onclick)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   169
   local wg = w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   170
   if w.widget then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   171
      wg = w.widget
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   172
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   173
   wg:buttons(awful.util.table.join(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   174
                awful.button({}, 1, onclick)))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   175
   return w
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   176
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   177
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   178
widgets = {
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   179
   cpu = widgets_cpu,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   180
   mem = widgets_mem,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   181
   net = widgets_net,
17
171cba5d3e3a Add disk I/O widget.
Fabien Ninoles <fabien@tzone.org>
parents: 15
diff changeset
   182
   dio = widgets_dio,
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   183
   mdp = widgets_mdp,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   184
   mode = widgets_mode,
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   185
   decorated = widgets_decorated,
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   186
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   187
}
15
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   188
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   189
function split_modifiers(key)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   190
   local modifiers = {}
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   191
   local pattern = capi.string.format("([^+]+)", sep)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   192
   key:gsub(pattern, function(mod) table.insert(modifiers, mod) end)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   193
   key = table.remove(modifiers)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   194
   return modifiers, key
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   195
end
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   196
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   197
function normalize_key(k)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   198
   mods, key = split_modifiers(k)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   199
   if #mods > 0 then
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   200
      table.sort(mods)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   201
      k = table.concat(mods, "+") .. "+" .. key
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   202
   end
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   203
   return k
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   204
end
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   205
   
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   206
function make_key(k, n, f)
15
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   207
   k = normalize_key(k)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   208
   return { key = k, name = n, func = f}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   209
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   210
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   211
function make_single_key(k, n, f)
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   212
   if f == nil then
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   213
      log("name: " .. n .. " is nil", 3)
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   214
   end
15
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   215
   return make_key(k, n, function (c) f(c); return false ; end)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   216
end
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   217
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   218
function make_interactive_key(k, n, f)
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   219
   return make_key(k, n, function (c) f(c); return true; end)
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   220
end
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   221
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   222
function show_kt(keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   223
   -- todo: replace with a menu ?
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   224
   text = ""
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   225
   for _, k in ipairs(keytable) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   226
      text = text .. "\'" .. k.key .. "\'\t" .. k.name .. "\n"
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   227
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   228
   naughty.notify({text = text, 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   229
                   title = title, 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   230
                   position = "top_left",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   231
   })
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   232
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   233
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   234
local keynames = {
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   235
   [" "] = "space",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   236
   ["\t"] = "tab",
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   237
}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   238
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   239
local ignored_mods = {
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   240
   ["Mod2"] = true,
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   241
}
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   242
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   243
local function translate_key(mod, key)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   244
   local skey = ""
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   245
   for m,v in pairs(mod) do
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   246
      if not ignored_mods[v] then 
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   247
         skey = skey .. v .. "+"
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
   skey = skey .. (keynames[key] or key)
15
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   251
   return normalize_key(skey)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   252
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   253
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   254
local function kt_handler(keytable, mod, key, event)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   255
   if event == "release" then 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   256
      return true 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   257
   end
13
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   258
   widgets.mode_widget_bg:set_bg(beautiful.bg_focus)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   259
   if key == "Escape" then   
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   260
      return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   261
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   262
   local skey = capi.string.lower(translate_key(mod, key))
15
73df43769340 Update keybinding.
Fabien Ninoles <fabien@tzone.org>
parents: 14
diff changeset
   263
   if skey == "control+h" or skey == "shift+?" or skey == "f1" then
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   264
      show_kt(keytable, "Current binding")
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   265
      return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   266
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   267
   for _,k in ipairs(keytable) do
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   268
      if skey == capi.string.lower(k.key) then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   269
         return k.func(c)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   270
      end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   271
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   272
   -- notify_error("Nothing for " .. skey)
13
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   273
   widgets.mode_widget_bg:set_bg(beautiful.bg_urgent)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   274
   return true
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
local function stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   278
   capi.keygrabber.stop()
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   279
   widgets.mode_widget:set_text("")
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   280
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   281
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   282
function mkinteractive(f)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   283
  return function (c)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   284
     stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   285
     return f(c)
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
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   288
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   289
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   290
-- local is_in_run_kt = false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   291
function run_kt(c, keytable, title)
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   292
   widgets.mode_widget:set_text("Mode: " .. title)
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   293
   -- widgets.mode_widget:show()
13
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   294
   widgets.mode_widget_bg:set_bg(beautiful.bg_focus)
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   295
   widgets.mode_widget:buttons(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   296
      awful.util.table.join(
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   297
         awful.button({}, 1, function () show_kt(keytable, "Binding") end),
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   298
         awful.button({}, 3, stop_kt)))
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   299
   capi.keygrabber.run(function (mod, key, event)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   300
         if not kt_handler(keytable, mod, key, event) then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   301
            stop_kt()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   302
            return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   303
         end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   304
         return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   305
   end)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   306
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   307
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   308
function make_kt(keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   309
   return function (c) 
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   310
      -- if is_in_run_kt then
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   311
      --    -- notify_error("Already in run_kt:\n" .. debug.traceback())
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   312
      --    is_in_run_kt = false -- reset
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   313
      --    return false
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   314
      -- end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   315
      return run_kt(c, keytable, title)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   316
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   317
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   318
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   319
function make_focus_bydirection(direction)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   320
   return function ()
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   321
      awful.client.focus.bydirection(direction)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   322
      if capi.client.focus then capi.client.focus:raise() end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   323
      return true
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   324
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   325
end
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   326
      
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   327
function make_globalkeys(modifiers, keytable)
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   328
   local t = {}
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   329
   for _,k in ipairs(keytable) do
14
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   330
      local mods, key = split_modifiers(k.key)
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   331
      mods = awful.util.table.join(modifiers, mods)
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   332
      -- log("name=" .. k.name .. "; modifiers=" .. table.concat(mods, ":") .. "; key=" .. key)
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   333
      if key == "Space" then
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   334
         key = capi.string.lower(key)
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   335
      end
6348b9f842b2 Move back to non-shifty awesomeness.
Fabien Ninoles <fabien@tzone.org>
parents: 13
diff changeset
   336
      t = awful.util.table.join(t, awful.key(mods, key, k.func))
7
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   337
   end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   338
   return t
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   339
end
03125e413ae3 Add awesome configuration
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
   340
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   341
-- Install a sloppy-like focus with a timeout.
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_toggle()
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   344
   sloppy = not sloppy
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   345
end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   346
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   347
function sloppy_mouse_enter(c)
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   348
   if sloppy and
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   349
      c ~= sloppy_last_client and
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   350
      awful.client.focus.filter(c) and
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   351
      awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   352
   then
9
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   353
      if sloppy_timer.started
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   354
      then
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   355
         sloppy_timer:again()
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   356
      else
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   357
         sloppy_timer:start()
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   358
      end
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   359
      sloppy_last_client = c
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   360
   end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   361
end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   362
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   363
function sloppy_on_timeout()
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   364
   if sloppy
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   365
   then
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   366
      local c = awful.mouse.client_under_pointer()
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   367
      if c and
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   368
         c == sloppy_last_client
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   369
      then
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   370
         capi.client.focus = c
9
56e80afa3e1c Only start sloppy timer on a mouse_enter.
Fabien Ninoles <fabien@tzone.org>
parents: 8
diff changeset
   371
         sloppy_timer:stop()
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   372
      end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   373
    end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   374
end
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   375
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   376
sloppy = true
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   377
sloppy_last_client = nil
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   378
sloppy_timer = nil
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   379
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   380
function sloppy_install(delay)
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   381
   sloppy_timer = timer({ timeout = delay })
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   382
   sloppy_timer:connect_signal("timeout", sloppy_on_timeout)
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   383
   sloppy_timer:start()
11
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   384
   capi.client.connect_signal("manage", function (c)
7226709dc4c4 Update to awesome-3.5
Fabien Ninoles <fabien@tzone.org>
parents: 9
diff changeset
   385
                             c:connect_signal("mouse::enter", sloppy_mouse_enter)
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   386
   end)
12
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   387
   capi.client.connect_signal("focus", function ()
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   388
                                 if sloppy_timer.started then
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   389
                                    sloppy_timer:stop()
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   390
                                 end
ffc02bf394cb Update to awesome 3.5
Fabien Ninoles <fabien@tzone.org>
parents: 11
diff changeset
   391
   end)
8
0eae48be1d62 Add my.sloppy
Fabien Ninoles <fabien@tzone.org>
parents: 7
diff changeset
   392
end
13
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   393
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   394
-- theme menu
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   395
function theme_load(theme)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   396
   local cfg_path = awful.util.getdir("config")
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   397
   awful.util.spawn("ln -sfn " .. cfg_path .. "/themes/" .. theme .. " " .. cfg_path .. "/current_theme")
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   398
   awesome.restart()
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   399
end
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   400
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   401
function theme_menu()
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   402
   -- List your theme files and feed the menu table
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   403
   local cmd = "ls -1 " .. awful.util.getdir("config") .. "/themes/"
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   404
   local f = io.popen(cmd)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   405
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   406
   local themes = {}
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   407
   for l in f:lines() do
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   408
	  local item = { l, function () theme_load(l) end }
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   409
	  table.insert(themes, item)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   410
   end
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   411
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   412
   f:close()
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   413
   return themes
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   414
end
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   415
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   416
function set_wallpaper(wallpaper)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   417
   local cfg_path = awful.util.getdir("config")
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   418
   local source_path = cfg_path .. "/wallpapers/" .. wallpaper
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   419
   local default_path = cfg_path .. "/default"
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   420
   awful.util.spawn("ln -sfn " .. source_path .. " " .. default_path )
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   421
   awful.util.spawn("fbsetbg -a " .. default_path)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   422
end
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   423
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   424
function wallpaper_menu()
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   425
   local cmd = "ls " .. awful.util.getdir("config") .. "/wallpapers/"
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   426
   local f = io.popen(cmd)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   427
   local wallpapers = {}
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   428
   for l in f:lines() do
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   429
      local name, ext = capi.string.match(l, "(.-)(%.[^%.]+)$")
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   430
      local item = { name,  function () set_wallpaper(l) end }
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   431
      table.insert(wallpapers, item)
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   432
   end
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   433
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   434
   f:close()
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   435
   return wallpapers
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   436
end
e9e2f624cd99 Add themes and wallpapers menus.
Fabien Ninoles <fabien@tzone.org>
parents: 12
diff changeset
   437