summaryrefslogtreecommitdiff
path: root/lib/awful/startup_notification.lua
blob: 5f1c123a958645088365b95cded6e18aff9d3ca5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
---------------------------------------------------------------------------
--- Startup notification module for awful
--
-- @author Julien Danjou <julien@danjou.info>
-- @copyright 2009 Julien Danjou
-- @module awful.startup_notification
---------------------------------------------------------------------------

-- Grab environment we need
local ipairs = ipairs
local table = table
local capi =
{
    awesome = awesome,
    root = root
}

local app_starting = {}

local cursor_waiting = "watch"

local function update_cursor()
    if #app_starting > 0 then
        capi.root.cursor(cursor_waiting)
    else
        capi.root.cursor("left_ptr")
    end
end

local function unregister_event(event_id)
    for k, v in ipairs(app_starting) do
        if v == event_id then
            table.remove(app_starting, k)
            update_cursor()
            break
        end
    end
end

local function register_event(event_id)
    table.insert(app_starting, event_id)
    update_cursor()
end

local function unregister_hook(event) unregister_event(event.id) end
local function register_hook(event) register_event(event.id) end

capi.awesome.connect_signal("spawn::initiated", register_hook)
capi.awesome.connect_signal("spawn::canceled", unregister_hook)
capi.awesome.connect_signal("spawn::completed", unregister_hook)
capi.awesome.connect_signal("spawn::timeout", unregister_hook)

-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80