From 1367a9bad125151bee7a8aa0c6c4480274989380 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Fri, 13 Jul 2012 08:09:22 +0200 Subject: [PATCH] start: start apps only when awesome is ready --- rc/rules.lua | 9 +++------ rc/start.lua | 28 +++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/rc/rules.lua b/rc/rules.lua index 50996d7..47ff91e 100644 --- a/rc/rules.lua +++ b/rc/rules.lua @@ -10,20 +10,17 @@ awful.rules.rules = { buttons = config.mouse.client }}, -- Emacs { rule = { class = "Emacs" }, - properties = { tag = config.tags.emacs, - switchtotag = true }}, + properties = { tag = config.tags.emacs }}, -- Browser stuff { rule_any = { name = { "Iceweasel", "Firefox", "Chromium" } }, - properties = { tag = config.tags.www, - switchtotag = true }}, + properties = { tag = config.tags.www }}, { rule = { instance = "plugin-container" }, properties = { floating = true }}, -- Flash with Firefox { rule = { instance = "exe", class="Exe", instance="exe" }, properties = { floating = true }}, -- Flash with Chromium -- Pidgin { rule = { class = "Pidgin" }, - properties = { tag = config.tags.im, - switchtotag = true }}, + properties = { tag = config.tags.im }}, { rule = { class = "Pidgin" }, except = { role = "buddy_list" }, -- buddy_list is the master properties = { }, callback = awful.client.setslave }, diff --git a/rc/start.lua b/rc/start.lua index 6e1434c..d25ff51 100644 --- a/rc/start.lua +++ b/rc/start.lua @@ -2,6 +2,16 @@ -- run a command only if the client does not already exist xrun = function(name, cmd) + -- Try first the list of clients from awesome + local clients = client.get() + local client + for _, client in pairs(clients) do + if client.name == name or client.class == name or client.instance == name then + return + end + end + + -- Not found, let's check with xwininfo. We can only check name... if os.execute("xwininfo -name '" .. name .. "' > /dev/null 2> /dev/null") == 0 then return end @@ -60,18 +70,34 @@ end os.execute(table.concat(execute, ";")) -- Spawn various X programs -startapps = function() +startapps = function(now) + -- xrun can only be used when awesome has started + if not now then + local stimer = timer { timeout = 0 } + stimer:add_signal("timeout", function() + stimer:stop() + startapps(true) + end) + stimer:start() + return + end + xrun("polkit-gnome-authentication-agent-1", "/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1") xrun("Bluetooth Applet", "bluetooth-applet") xrun("Pidgin", "pidgin -n") + xrun("emacs") if config.hostname == "neo" then xrun("keepassx", "keepassx -min -lock") xrun("Transmission", "transmission-gtk -m") + xrun("chromium") elseif config.hostname == "guybrush" then xrun("keepassx", "keepassx -min -lock") xrun("NetworkManager Applet", "nm-applet") + xrun("chromium") + elseif config.hostname == "naruto" then + xrun("iceweasel") end end