]> git.rmz.io Git - dotfiles.git/blobdiff - awesome/utils.lua
lazyvim: absorb icons into rmz.util.ui
[dotfiles.git] / awesome / utils.lua
index 7519473cb5d513321c4df379b72fcb7b5c02bb9e..13856335ad3c7acbc919e44b8ab88023260ebf45 100644 (file)
@@ -9,22 +9,76 @@ utils.globalkeys = { }
 local host = io.popen("hostname")
 utils.host = host:read("*l")
 
 local host = io.popen("hostname")
 utils.host = host:read("*l")
 
-function utils.run_or_kill(command)
-    -- Check throught the clients if the class match the command
-    local lower_command=string.lower(command)
+function utils.is_dir(path)
+    return os.execute(('[ -d "%s" ]'):format(path))
+end
+
+local function terminal_cmd(prg, name)
+    local join = require("gears.table").join
+    local term_cmd = {terminal}
+    if terminal:match("rxvt") then
+        if name then
+            term_cmd = join(term_cmd, {"-name", name})
+        end
+    elseif terminal:match("wezterm") then
+        term_cmd = join(term_cmd, {"start"})
+        if name then
+            term_cmd = join(term_cmd, {"--class", name})
+        end
+    else
+        term_cmd = join(term_cmd, {"-e"})
+    end
+    return join(term_cmd, {prg})
+end
+
+function utils.spawn_terminal(prg, cprop, cb)
+    if not cprop then
+        cprop = {}
+    end
+    local name = cprop.instance
+    awful.spawn(terminal_cmd(prg, name), cprop, cb)
+end
+
+function utils.spawn_terminal_once(prg, rules, matcher, unique_id, cb)
+    local name = rules.instance
+    awful.spawn.once(terminal_cmd(prg, name), rules, matcher, unique_id, cb)
+end
+
+function utils.run_or_kill(prg, cprop, screen)
+    if not prg then
+        do return nil end
+    end
+
+    if not cprop then
+        cprop = { }
+    end
+
+    if not cprop.class then
+        cprop.class = prg
+    end
+
+    if not cprop.instance then
+        cprop.instance = ""
+    end
+
+    cprop.class = string.lower(cprop.class)
+    cprop.instance = string.lower(cprop.instance)
+
     for k, c in pairs(client.get()) do
         -- apparently some steam games don't have a client class
     for k, c in pairs(client.get()) do
         -- apparently some steam games don't have a client class
-        if c.class ~= nil then
-            local class=string.lower(c.class)
-            if string.match(class, lower_command) then
-                for i, v in ipairs(c:tags()) do
-                    c:kill()
-                    return
-                end
+        if c.class == nil then
+            return
+        end
+        local class=string.lower(c.class)
+        local instance=string.lower(c.instance)
+        if string.match(class, cprop.class) and string.match(instance, cprop.instance) then
+            for i, v in ipairs(c:tags()) do
+                c:kill()
+                return
             end
         end
     end
             end
         end
     end
-    awful.util.spawn(command)
+    awful.spawn.with_shell(prg, screen)
 end
 
 -- http://awesome.naquadah.org/wiki/Autostart#Simple_way
 end
 
 -- http://awesome.naquadah.org/wiki/Autostart#Simple_way
@@ -37,15 +91,15 @@ function utils.run_once(prg,arg_string,pname,screen)
        pname = prg
     end
 
        pname = prg
     end
 
-    if not arg_string then 
-        awful.util.spawn_with_shell("pgrep -f -u $USER -x '" .. pname .. "' || (" .. prg .. ")",screen)
+    if not arg_string then
+        awful.spawn.with_shell("pgrep -f -u $USER -x '" .. pname .. "' || (" .. prg .. ")",screen)
     else
     else
-        awful.util.spawn_with_shell("pgrep -f -u $USER -x '" .. pname .. " ".. arg_string .."' || (" .. prg .. " " .. arg_string .. ")",screen)
+        awful.spawn.with_shell("pgrep -f -u $USER -x '" .. pname .. " ".. arg_string .."' || (" .. prg .. " " .. arg_string .. ")",screen)
     end
 end
 
 function utils.get_default_sink()
     end
 end
 
 function utils.get_default_sink()
-    local f = io.popen('ponymix defaults --short')
+    local f = io.popen('pactl get-default-sink')
     line = f:read('*l')
     f:close()
     return string.match(line, "^sink%s*%d*%s*(.-)%s")
     line = f:read('*l')
     f:close()
     return string.match(line, "^sink%s*%d*%s*(.-)%s")
@@ -56,11 +110,15 @@ function utils.joinTables(t1, t2)
 end
 
 function utils.rules.append(rules)
 end
 
 function utils.rules.append(rules)
-    awful.rules.rules = awful.util.table.join(awful.rules.rules, rules)
+    awful.rules.rules = gears.table.join(awful.rules.rules, rules)
 end
 
 function utils.globalkeys.append(keys)
 end
 
 function utils.globalkeys.append(keys)
-    globalkeys = awful.util.table.join(globalkeys, keys)
+    globalkeys = gears.table.join(globalkeys, keys)
+end
+
+function utils.has_battery()
+    return utils.is_dir("/sys/class/power_supply/BAT0")
 end
 
 return utils
 end
 
 return utils