summaryrefslogtreecommitdiffstats
path: root/.config/awesome/functions
diff options
context:
space:
mode:
authorJonathan McCrohan <jmccrohan@gmail.com>2017-07-09 18:37:37 +0100
committerJonathan McCrohan <jmccrohan@gmail.com>2017-07-09 18:37:37 +0100
commitaefae07bde1937197dabea9233c484efd8228252 (patch)
tree1574e1fe7fc72dcea6703dc64f975ae2339ba473 /.config/awesome/functions
downloadawesome-aefae07bde1937197dabea9233c484efd8228252.tar.gz
Initial commit of my awesome configuration
Diffstat (limited to '')
-rw-r--r--.config/awesome/functions/error.lua26
-rw-r--r--.config/awesome/functions/helper.lua17
-rw-r--r--.config/awesome/functions/run_once.lua35
3 files changed, 78 insertions, 0 deletions
diff --git a/.config/awesome/functions/error.lua b/.config/awesome/functions/error.lua
new file mode 100644
index 0000000..74d5af4
--- /dev/null
+++ b/.config/awesome/functions/error.lua
@@ -0,0 +1,26 @@
+local naughty = require("naughty")
+
+-- {{{ Error handling
+-- Check if awesome encountered an error during startup and fell back to
+-- another config (This code will only ever execute for the fallback config)
+if awesome.startup_errors then
+ naughty.notify({ preset = naughty.config.presets.critical,
+ title = "Oops, there were errors during startup!",
+ text = awesome.startup_errors })
+end
+
+-- Handle runtime errors after startup
+do
+ local in_error = false
+ awesome.connect_signal("debug::error", function (err)
+ -- Make sure we don't go into an endless error loop
+ if in_error then return end
+ in_error = true
+
+ naughty.notify({ preset = naughty.config.presets.critical,
+ title = "Oops, an error happened!",
+ text = tostring(err) })
+ in_error = false
+ end)
+end
+-- }}}
diff --git a/.config/awesome/functions/helper.lua b/.config/awesome/functions/helper.lua
new file mode 100644
index 0000000..a16080e
--- /dev/null
+++ b/.config/awesome/functions/helper.lua
@@ -0,0 +1,17 @@
+awful = require("awful")
+beautiful = require("beautiful")
+
+-- {{{ Helper functions
+local function client_menu_toggle_fn()
+ local instance = nil
+
+ return function ()
+ if instance and instance.wibox.visible then
+ instance:hide()
+ instance = nil
+ else
+ instance = awful.menu.clients({ theme = { width = 250 } })
+ end
+ end
+end
+-- }}}
diff --git a/.config/awesome/functions/run_once.lua b/.config/awesome/functions/run_once.lua
new file mode 100644
index 0000000..7c57482
--- /dev/null
+++ b/.config/awesome/functions/run_once.lua
@@ -0,0 +1,35 @@
+local awful = require("awful")
+local lfs = require("lfs")
+
+local function processwalker()
+ local function yieldprocess()
+ for dir in lfs.dir("/proc") do
+ if tonumber(dir) ~= nil then
+ local f, err = io.open("/proc/"..dir.."/cmdline")
+ if f then
+ local cmdline = f:read("*all")
+ f:close()
+ if cmdline ~= "" then
+ coroutine.yield(cmdline)
+ end
+ end
+ end
+ end
+ end
+ return coroutine.wrap(yieldprocess)
+end
+
+function run_once(process, cmd)
+ assert(type(process) == "string")
+ local regex_killer = {
+ ["+"] = "%+", ["-"] = "%-",
+ ["*"] = "%*", ["?"] = "%?" }
+
+ for p in processwalker() do
+ if p:find(process:gsub("[-+?*]", regex_killer)) then
+ return
+ end
+ end
+ return awful.spawn(cmd or process)
+end
+-- run once END