diff options
author | Jonathan McCrohan <jmccrohan@gmail.com> | 2017-07-09 18:37:37 +0100 |
---|---|---|
committer | Jonathan McCrohan <jmccrohan@gmail.com> | 2017-07-09 18:37:37 +0100 |
commit | aefae07bde1937197dabea9233c484efd8228252 (patch) | |
tree | 1574e1fe7fc72dcea6703dc64f975ae2339ba473 /.config/awesome/functions | |
download | awesome-aefae07bde1937197dabea9233c484efd8228252.tar.gz |
Initial commit of my awesome configuration
Diffstat (limited to '.config/awesome/functions')
-rw-r--r-- | .config/awesome/functions/error.lua | 26 | ||||
-rw-r--r-- | .config/awesome/functions/helper.lua | 17 | ||||
-rw-r--r-- | .config/awesome/functions/run_once.lua | 35 |
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 |