From aefae07bde1937197dabea9233c484efd8228252 Mon Sep 17 00:00:00 2001
From: Jonathan McCrohan <jmccrohan@gmail.com>
Date: Sun, 9 Jul 2017 18:37:37 +0100
Subject: Initial commit of my awesome configuration

---
 .config/awesome/functions/error.lua    | 26 +++++++++++++++++++++++++
 .config/awesome/functions/helper.lua   | 17 +++++++++++++++++
 .config/awesome/functions/run_once.lua | 35 ++++++++++++++++++++++++++++++++++
 3 files changed, 78 insertions(+)
 create mode 100644 .config/awesome/functions/error.lua
 create mode 100644 .config/awesome/functions/helper.lua
 create mode 100644 .config/awesome/functions/run_once.lua

(limited to '.config/awesome/functions')

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
-- 
cgit v1.2.3