summaryrefslogtreecommitdiff
path: root/awesome/lib/awful/startup_notification.lua
diff options
context:
space:
mode:
Diffstat (limited to 'awesome/lib/awful/startup_notification.lua')
-rw-r--r--awesome/lib/awful/startup_notification.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/awesome/lib/awful/startup_notification.lua b/awesome/lib/awful/startup_notification.lua
new file mode 100644
index 0000000..5f1c123
--- /dev/null
+++ b/awesome/lib/awful/startup_notification.lua
@@ -0,0 +1,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