my complicated awesomewm config (SUNSETTED)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

78 lines
2.0 KiB

---AwesomeWM autorun system
-- This module provides a way to start up applications on desktop boot
-- It's like cron's @reboot but with additional awesomewm specific features
local awful = require("awful")
local rcfile = io.open(global.config_dir.."rc.lua")
local execute
-- why thank you lua changes, i appreciate this shit.
-- (luajit is deprecated my ASS, find me a faster version then)
if _VERSION ~= "Lua 5.1" then
execute = function(comm)
return select(3,os.execute(comm))
end
else
execute = os.execute
end
local execd = {}
-- load persistent file for "o" tag
local execd_file = io.open("/tmp/awesomerc.started","r")
if execd_file then
execd_file:read("*a"):gsub("[^\n]+",function(prg)
execd[prg] = true
end)
execd_file:close()
end
execd_file = io.open("/tmp/awesomerc.started","w")
local function check_pid(prg)
local args = {}
prg:gsub("[^%s ]+",function(name)
args[#args+1] = name
end)
local prgname
for _,prgn in pairs(args) do
if prgn:match("^[^=]+$") then
prgname = prgn:match("[^/]+$"):sub(1,15)
break
end
end
if execute("pgrep "..prgname) == 0 then
return true
else
return false
end
end
local function check_once(prg)
if not execd[prg] then
execd[prg] = true
execd_file:write(tostring(prg).."\n")
return true
end
end
local function apply_tags(k,prg)
if k:match("n") and (check_pid(prg)) then
return false
end
if k:match("o") and (not check_once(prg)) then
return false
end
awful.spawn(prg)
return true
end
if rcfile then
local rc,err = load(rcfile:read("*a"))
rcfile:close()
local rcdata
if not err then
rcdata = rc()
else
require("naughty").notify({
title = "Error reading rc.lua",
text = err
})
end
for entry,command in pairs(rcdata or {}) do
apply_tags(entry,command)
end
end
execd_file:close()