diff --git a/etc/X11/xorg.conf.d/50-acceleration.conf b/etc/X11/xorg.conf.d/50-acceleration.conf old mode 100755 new mode 100644 diff --git a/etc/oblogout.conf b/etc/oblogout.conf deleted file mode 100644 index f62a06b2..00000000 --- a/etc/oblogout.conf +++ /dev/null @@ -1,27 +0,0 @@ -[settings] -usehal = false - -[looks] -opacity = 80 -bgcolor = black -buttontheme = adeos-archlabs -buttons = cancel, logout, suspend, lock, restart, shutdown - -[shortcuts] -cancel = Escape -shutdown = S -restart = R -suspend = U -logout = L -lock = K -#hibernate = H - -[commands] -shutdown = systemctl poweroff -restart = systemctl reboot -suspend = systemctl suspend -logout = session-logout -#hibernate = systemctl hibernate -lock = pkill oblogout; i3lock-fancy -p -#switchuser = gdm-control --switch-user -#safesuspend = safesuspend diff --git a/home/.config/Thunar/uca.xml b/home/.config/Thunar/uca.xml index 29834c35..4f89abc1 100644 --- a/home/.config/Thunar/uca.xml +++ b/home/.config/Thunar/uca.xml @@ -1,44 +1,44 @@ - - utilities-terminal - Open in Terminal - 1499240572835265-1 - exo-open --launch TerminalEmulator %f - - * - - - - - document-open - Open as Root - 1498523394840843-5 - gksu thunar %f - - * - - - - archive-extract - Extract Here - 1500573442438340-2 - file-roller -h %N - - * - - - - - archive-insert - Archive - 1500573639456321-3 - file-roller -d %F - Archive selected items - * - - - - - + + utilities-terminal + Open in Terminal + 1499240572835265-1 + exo-open --launch TerminalEmulator %f + + * + + + + + document-open + Open as Root + 1498523394840843-5 + gksu thunar %f + + * + + + + archive-extract + Extract Here + 1500573442438340-2 + file-roller -h %N + + * + + + + + archive-insert + Archive + 1500573639456321-3 + file-roller -d %F + Archive selected items + * + + + + + diff --git a/home/.config/awesome/rc.lua b/home/.config/awesome/rc.lua index ed9173b5..dd3f2696 100644 --- a/home/.config/awesome/rc.lua +++ b/home/.config/awesome/rc.lua @@ -234,7 +234,7 @@ mytasklist.buttons = awful.util.table.join( instance:hide() instance = nil else - instance = awful.menu.clients({ width=250 }) + instance = awful.menu.clients({ width=200 }) end end), awful.button({ }, 4, function () diff --git a/home/.config/awesome/vicious/contrib/ati.lua b/home/.config/awesome/vicious/contrib/ati.lua index fd9932c9..003e46c1 100644 --- a/home/.config/awesome/vicious/contrib/ati.lua +++ b/home/.config/awesome/vicious/contrib/ati.lua @@ -9,9 +9,9 @@ local io = { open = io.open } local setmetatable = setmetatable local helpers = require("vicious.helpers") local string = { - sub = string.sub, - match = string.match, - gmatch = string.gmatch + sub = string.sub, + match = string.match, + gmatch = string.gmatch } -- }}} @@ -23,56 +23,56 @@ local ati = {} -- {{{ Define variables local _units = { clock = { ["khz"] = 1, ["mhz"] = 1000 }, - voltage = { ["v"] = 1, ["mv"] = 1000 } } + voltage = { ["v"] = 1, ["mv"] = 1000 } } local _reps = { - ["sclk"] = { name = "engine_clock", units = _units.clock, mul = 10 }, - ["mclk"] = { name = "memory_clock", units = _units.clock, mul = 10 }, - ["vddc"] = { name = "voltage", units = _units.voltage }, - ["voltage"] = { name = "voltage", units = _units.voltage }, - ["current engine clock"] = { name = "engine_clock", units = _units.clock }, - ["current memory clock"] = { name = "memory_clock", units = _units.clock } + ["sclk"] = { name = "engine_clock", units = _units.clock, mul = 10 }, + ["mclk"] = { name = "memory_clock", units = _units.clock, mul = 10 }, + ["vddc"] = { name = "voltage", units = _units.voltage }, + ["voltage"] = { name = "voltage", units = _units.voltage }, + ["current engine clock"] = { name = "engine_clock", units = _units.clock }, + ["current memory clock"] = { name = "memory_clock", units = _units.clock } } -- }}} -- {{{ ATI widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - local pm = helpers.pathtotable("/sys/class/drm/"..warg.."/device") - local _data = {} + local pm = helpers.pathtotable("/sys/class/drm/"..warg.."/device") + local _data = {} - -- Get power info - _data["{method}"] = - pm.power_method and string.sub(pm.power_method, 1, -2) or "N/A" - _data["{dpm_state}"] = - pm.power_dpm_state and string.sub(pm.power_dpm_state, 1, -2) or "N/A" - _data["{dpm_perf_level}"] = - pm.power_dpm_force_performance_level and - string.sub(pm.power_dpm_force_performance_level, 1, -2) or "N/A" - _data["{profile}"] = - pm.power_profile and string.sub(pm.power_profile, 1, -2) or "N/A" + -- Get power info + _data["{method}"] = + pm.power_method and string.sub(pm.power_method, 1, -2) or "N/A" + _data["{dpm_state}"] = + pm.power_dpm_state and string.sub(pm.power_dpm_state, 1, -2) or "N/A" + _data["{dpm_perf_level}"] = + pm.power_dpm_force_performance_level and + string.sub(pm.power_dpm_force_performance_level, 1, -2) or "N/A" + _data["{profile}"] = + pm.power_profile and string.sub(pm.power_profile, 1, -2) or "N/A" - local f = io.open("/sys/kernel/debug/dri/64/radeon_pm_info", "r") - if f then -- Get ATI info from the debug filesystem - for line in f:lines() do - for k, unit in string.gmatch(line, "(%a+[%a%s]*):[%s]+([%d]+)") do - unit = tonumber(unit) + local f = io.open("/sys/kernel/debug/dri/64/radeon_pm_info", "r") + if f then -- Get ATI info from the debug filesystem + for line in f:lines() do + for k, unit in string.gmatch(line, "(%a+[%a%s]*):[%s]+([%d]+)") do + unit = tonumber(unit) - _data["{dpm_power_level}"] = -- DPM active? - tonumber(string.match(line, "power level ([%d])")) or "N/A" + _data["{dpm_power_level}"] = -- DPM active? + tonumber(string.match(line, "power level ([%d])")) or "N/A" - if _reps[k] then - for u, v in pairs(_reps[k].units) do - _data["{".._reps[k].name.." "..u.."}"] = - (unit * (_reps[k].mul or 1)) / v - end - end - end + if _reps[k] then + for u, v in pairs(_reps[k].units) do + _data["{".._reps[k].name.." "..u.."}"] = + (unit * (_reps[k].mul or 1)) / v + end end - f:close() + end end + f:close() + end - return _data + return _data end -- }}} diff --git a/home/.config/awesome/vicious/contrib/batacpi.lua b/home/.config/awesome/vicious/contrib/batacpi.lua index fc7d54ba..a0488a5f 100644 --- a/home/.config/awesome/vicious/contrib/batacpi.lua +++ b/home/.config/awesome/vicious/contrib/batacpi.lua @@ -19,33 +19,33 @@ local batacpi = {} -- {{{ Battery widget type local function worker(format) - local battery_info = {} - local battery_state = { - ["full"] = "↯", - ["unknown"] = "⌁", - ["charged"] = "↯", - ["charging"] = "+", - ["discharging"] = "-" - } + local battery_info = {} + local battery_state = { + ["full"] = "↯", + ["unknown"] = "⌁", + ["charged"] = "↯", + ["charging"] = "+", + ["discharging"] = "-" + } - -- Get data from acpitool - local f = io.popen("acpitool -b") + -- Get data from acpitool + local f = io.popen("acpitool -b") - for line in f:lines() do - -- Check if the battery is present - if string.match(line, "^[%s]+Battery.*") then - -- Store state and charge information - table.insert(battery_info, (battery_state[string.match(line, "([%a]*),") or "unknown"])) - table.insert(battery_info, (tonumber(string.match(line, "([%d]?[%d]?[%d])%.")) or 0)) - -- Store remaining time information - table.insert(battery_info, (string.match(line, "%%,%s(.*)") or "N/A")) - else - return {battery_state["unknown"], 0, "N/A"} - end + for line in f:lines() do + -- Check if the battery is present + if string.match(line, "^[%s]+Battery.*") then + -- Store state and charge information + table.insert(battery_info, (battery_state[string.match(line, "([%a]*),") or "unknown"])) + table.insert(battery_info, (tonumber(string.match(line, "([%d]?[%d]?[%d])%.")) or 0)) + -- Store remaining time information + table.insert(battery_info, (string.match(line, "%%,%s(.*)") or "N/A")) + else + return {battery_state["unknown"], 0, "N/A"} end - f:close() + end + f:close() - return battery_info + return battery_info end -- }}} diff --git a/home/.config/awesome/vicious/contrib/batpmu.lua b/home/.config/awesome/vicious/contrib/batpmu.lua index 8c73d93d..7ab29fbd 100644 --- a/home/.config/awesome/vicious/contrib/batpmu.lua +++ b/home/.config/awesome/vicious/contrib/batpmu.lua @@ -8,13 +8,13 @@ local tonumber = tonumber local io = { open = io.open } local setmetatable = setmetatable local math = { - min = math.min, - floor = math.floor + min = math.min, + floor = math.floor } local string = { - find = string.find, - match = string.match, - format = string.format + find = string.find, + match = string.match, + format = string.format } -- }}} @@ -26,53 +26,53 @@ local batpmu = {} -- {{{ Battery widget type local function worker(format, batid) - local battery_state = { - ["full"] = "↯", - ["unknown"] = "⌁", - ["00000013"] = "+", - ["00000011"] = "-" - } + local battery_state = { + ["full"] = "↯", + ["unknown"] = "⌁", + ["00000013"] = "+", + ["00000011"] = "-" + } - -- Get /proc/pmu/battery* state - local f = io.open("/proc/pmu/" .. batid) - -- Handler for incompetent users - if not f then return {battery_state["unknown"], 0, "N/A"} end - local statefile = f:read("*all") - f:close() + -- Get /proc/pmu/battery* state + local f = io.open("/proc/pmu/" .. batid) + -- Handler for incompetent users + if not f then return {battery_state["unknown"], 0, "N/A"} end + local statefile = f:read("*all") + f:close() - -- Get /proc/pmu/info data - local f = io.open("/proc/pmu/info") - local infofile = f:read("*all") - f:close() + -- Get /proc/pmu/info data + local f = io.open("/proc/pmu/info") + local infofile = f:read("*all") + f:close() - -- Check if the battery is present - if infofile == nil or string.find(infofile, "Battery count[%s]+:[%s]0") then - return {battery_state["unknown"], 0, "N/A"} - end + -- Check if the battery is present + if infofile == nil or string.find(infofile, "Battery count[%s]+:[%s]0") then + return {battery_state["unknown"], 0, "N/A"} + end - -- Get capacity and charge information - local capacity = string.match(statefile, "max_charge[%s]+:[%s]([%d]+).*") - local remaining = string.match(statefile, "charge[%s]+:[%s]([%d]+).*") + -- Get capacity and charge information + local capacity = string.match(statefile, "max_charge[%s]+:[%s]([%d]+).*") + local remaining = string.match(statefile, "charge[%s]+:[%s]([%d]+).*") - -- Calculate percentage - local percent = math.min(math.floor(remaining / capacity * 100), 100) + -- Calculate percentage + local percent = math.min(math.floor(remaining / capacity * 100), 100) - -- Get timer information - local timer = string.match(statefile, "time rem%.[%s]+:[%s]([%d]+).*") - if timer == "0" then return {battery_state["full"], percent, "N/A"} end + -- Get timer information + local timer = string.match(statefile, "time rem%.[%s]+:[%s]([%d]+).*") + if timer == "0" then return {battery_state["full"], percent, "N/A"} end - -- Get state information - local state = string.match(statefile, "flags[%s]+:[%s]([%d]+).*") - local state = battery_state[state] or battery_state["unknown"] + -- Get state information + local state = string.match(statefile, "flags[%s]+:[%s]([%d]+).*") + local state = battery_state[state] or battery_state["unknown"] - -- Calculate remaining (charging or discharging) time - local hoursleft = math.floor(tonumber(timer) / 3600) - local minutesleft = math.floor((tonumber(timer) / 60) % 60) - local time = string.format("%02d:%02d", hoursleft, minutesleft) + -- Calculate remaining (charging or discharging) time + local hoursleft = math.floor(tonumber(timer) / 3600) + local minutesleft = math.floor((tonumber(timer) / 60) % 60) + local time = string.format("%02d:%02d", hoursleft, minutesleft) - return {state, percent, time} + return {state, percent, time} end -- }}} diff --git a/home/.config/awesome/vicious/contrib/batproc.lua b/home/.config/awesome/vicious/contrib/batproc.lua index 8acf0059..61b7c601 100644 --- a/home/.config/awesome/vicious/contrib/batproc.lua +++ b/home/.config/awesome/vicious/contrib/batproc.lua @@ -8,13 +8,13 @@ local tonumber = tonumber local io = { open = io.open } local setmetatable = setmetatable local math = { - min = math.min, - floor = math.floor + min = math.min, + floor = math.floor } local string = { - find = string.find, - match = string.match, - format = string.format + find = string.find, + match = string.match, + format = string.format } -- }}} @@ -26,60 +26,60 @@ local batproc = {} -- {{{ Battery widget type local function worker(format, batid) - local battery_state = { - ["full"] = "↯", - ["unknown"] = "⌁", - ["charged"] = "↯", - ["charging"] = "+", - ["discharging"] = "-" - } + local battery_state = { + ["full"] = "↯", + ["unknown"] = "⌁", + ["charged"] = "↯", + ["charging"] = "+", + ["discharging"] = "-" + } - -- Get /proc/acpi/battery info - local f = io.open("/proc/acpi/battery/"..batid.."/info") - -- Handler for incompetent users - if not f then return {battery_state["unknown"], 0, "N/A"} end - local infofile = f:read("*all") - f:close() + -- Get /proc/acpi/battery info + local f = io.open("/proc/acpi/battery/"..batid.."/info") + -- Handler for incompetent users + if not f then return {battery_state["unknown"], 0, "N/A"} end + local infofile = f:read("*all") + f:close() - -- Check if the battery is present - if infofile == nil or string.find(infofile, "present:[%s]+no") then - return {battery_state["unknown"], 0, "N/A"} - end + -- Check if the battery is present + if infofile == nil or string.find(infofile, "present:[%s]+no") then + return {battery_state["unknown"], 0, "N/A"} + end - -- Get capacity information - local capacity = string.match(infofile, "last full capacity:[%s]+([%d]+).*") + -- Get capacity information + local capacity = string.match(infofile, "last full capacity:[%s]+([%d]+).*") - -- Get /proc/acpi/battery state - local f = io.open("/proc/acpi/battery/"..batid.."/state") - local statefile = f:read("*all") - f:close() + -- Get /proc/acpi/battery state + local f = io.open("/proc/acpi/battery/"..batid.."/state") + local statefile = f:read("*all") + f:close() - -- Get state information - local state = string.match(statefile, "charging state:[%s]+([%a]+).*") - local state = battery_state[state] or battery_state["unknown"] + -- Get state information + local state = string.match(statefile, "charging state:[%s]+([%a]+).*") + local state = battery_state[state] or battery_state["unknown"] - -- Get charge information - local rate = string.match(statefile, "present rate:[%s]+([%d]+).*") - local remaining = string.match(statefile, "remaining capacity:[%s]+([%d]+).*") + -- Get charge information + local rate = string.match(statefile, "present rate:[%s]+([%d]+).*") + local remaining = string.match(statefile, "remaining capacity:[%s]+([%d]+).*") - -- Calculate percentage (but work around broken BAT/ACPI implementations) - local percent = math.min(math.floor(remaining / capacity * 100), 100) + -- Calculate percentage (but work around broken BAT/ACPI implementations) + local percent = math.min(math.floor(remaining / capacity * 100), 100) - -- Calculate remaining (charging or discharging) time - if state == "+" then - timeleft = (tonumber(capacity) - tonumber(remaining)) / tonumber(rate) - elseif state == "-" then - timeleft = tonumber(remaining) / tonumber(rate) - else - return {state, percent, "N/A"} - end - local hoursleft = math.floor(timeleft) - local minutesleft = math.floor((timeleft - hoursleft) * 60 ) - local time = string.format("%02d:%02d", hoursleft, minutesleft) + -- Calculate remaining (charging or discharging) time + if state == "+" then + timeleft = (tonumber(capacity) - tonumber(remaining)) / tonumber(rate) + elseif state == "-" then + timeleft = tonumber(remaining) / tonumber(rate) + else + return {state, percent, "N/A"} + end + local hoursleft = math.floor(timeleft) + local minutesleft = math.floor((timeleft - hoursleft) * 60 ) + local time = string.format("%02d:%02d", hoursleft, minutesleft) - return {state, percent, time} + return {state, percent, time} end -- }}} diff --git a/home/.config/awesome/vicious/contrib/buildbot.lua b/home/.config/awesome/vicious/contrib/buildbot.lua index 57436627..6aa76b80 100644 --- a/home/.config/awesome/vicious/contrib/buildbot.lua +++ b/home/.config/awesome/vicious/contrib/buildbot.lua @@ -26,161 +26,160 @@ BB = {} BB.__index = BB function BB.create(url, builder) - local b = {} - setmetatable(b,BB) - b.url = url -- buildbot url - b.builder = builder -- builder name - b.lastChecked = 0 -- last checked build number - b.lastSuccessful = 0 -- last successful build number - b.lastResult = nil -- last json parsed result - b.lastError = nil -- last error string or nil if no error - return b + local b = {} + setmetatable(b,BB) + b.url = url -- buildbot url + b.builder = builder -- builder name + b.lastChecked = 0 -- last checked build number + b.lastSuccessful = 0 -- last successful build number + b.lastResult = nil -- last json parsed result + b.lastError = nil -- last error string or nil if no error + return b end function BB:_queryBuildbot(build_number) - local f = io.popen("curl --connect-timeout 1 "..self.url.."/json/builders/"..self.builder.."/builds/"..build_number) - local jsbuilder = f:read("*all") - f:close() - if #jsbuilder == 0 then - return false, "can't read from url" - end + local f = io.popen("curl --connect-timeout 1 "..self.url.."/json/builders/"..self.builder.."/builds/"..build_number) + local jsbuilder = f:read("*all") + f:close() + if #jsbuilder == 0 then + return false, "can't read from url" + end - local result_status, result = pcall(json.decode, jsbuilder, false) - if not result_status then - return false, "can't parse json data" - end - return true, result + local result_status, result = pcall(json.decode, jsbuilder, false) + if not result_status then + return false, "can't parse json data" + end + return true, result end function BB:_getBuildStatus(result) - if #result['text'] > 0 then - local text = result['text'] - if text[1] == "build" and text[2] == "successful" and #text == 2 then - --successful - return bs.OK - else - --failed - return bs.FAILED - end + if #result['text'] > 0 then + local text = result['text'] + if text[1] == "build" and text[2] == "successful" and #text == 2 then + --successful + return bs.OK else - --in progress - return bs.RUNNING + --failed + return bs.FAILED end + else + --in progress + return bs.RUNNING + end end -- Function queries buildbot to refresh builds status. -- * if build is successful or failed it will not be queried again, number is stored in lasteChecked -- * up to 10 last builds will be checked to find last successful build function BB:refresh() - local last_pass_fail = 0 - local nr = -1 - local last_result - local iter_counter = 0 + local last_pass_fail = 0 + local nr = -1 + local last_result + local iter_counter = 0 - self.lastError = nil - self.lastResult = nil - --- there is a gap to fill in, iterate all not checked builds starting from latest - while nr > self.lastChecked or nr == -1 do - local r_status, r = self:_queryBuildbot(nr) - local s + self.lastError = nil + self.lastResult = nil + --- there is a gap to fill in, iterate all not checked builds starting from latest + while nr > self.lastChecked or nr == -1 do + local r_status, r = self:_queryBuildbot(nr) + local s - if not r_status then - self.lastError = r - return - end + if not r_status then + self.lastError = r + return + end - s = self:_getBuildStatus(r) - if not last_result then - last_result = r - end - nr = r['number'] - assert(nr > 0) - if last_pass_fail == 0 and (s == bs.OK or s == bs.FAILED) then - last_pass_fail = nr - end - if s == bs.OK then --successful - self.lastSuccessful = nr - break; - end - nr = nr - 1 - iter_counter = iter_counter + 1 - if iter_counter > 10 then --check max last 10 builds when searching for successful build - break; - end - end - if last_pass_fail ~= 0 then - self.lastChecked = last_pass_fail - end - if last_result then - self.lastResult = last_result - end + s = self:_getBuildStatus(r) + if not last_result then + last_result = r + end + nr = r['number'] + assert(nr > 0) + if last_pass_fail == 0 and (s == bs.OK or s == bs.FAILED) then + last_pass_fail = nr + end + if s == bs.OK then --successful + self.lastSuccessful = nr + break; + end + nr = nr - 1 + iter_counter = iter_counter + 1 + if iter_counter > 10 then --check max last 10 builds when searching for successful build + break; + end + end + if last_pass_fail ~= 0 then + self.lastChecked = last_pass_fail + end + if last_result then + self.lastResult = last_result + end end function BB:getLastSuccessful() - return self.lastSuccessful + return self.lastSuccessful end function BB:getCurrent() - return self.lastResult['number'] + return self.lastResult['number'] end function BB:getCurrentStatus() - return self:_getBuildStatus(self.lastResult) + return self:_getBuildStatus(self.lastResult) end function BB:getBuilder() - return self.builder + return self.builder end function BB:getError() - return self.lastError + return self.lastError end local function getBuilderStatus(b) - local s = "[" .. b:getBuilder() - --check if json library was loaded correctly - if not json_status then - return s .. ".can't find libluaX.X-json]" - end + local s = "[" .. b:getBuilder() + --check if json library was loaded correctly + if not json_status then + return s .. ".can't find libluaX.X-json]" + end - local err = b:getError() - if err then - return s .. "." .. err .. "]" - end + local err = b:getError() + if err then + return s .. "." .. err .. "]" + end - if b:getLastSuccessful() ~= 0 then - success_build_nr_str = "".. b:getLastSuccessful() .."" - else - success_build_nr_str = "-" - end + if b:getLastSuccessful() ~= 0 then + success_build_nr_str = "".. b:getLastSuccessful() .."" + else + success_build_nr_str = "-" + end - local current_build_color = bc[b:getCurrentStatus()] - current_build_nr_str = ""..b:getCurrent().."" + local current_build_color = bc[b:getCurrentStatus()] + current_build_nr_str = ""..b:getCurrent().."" - if current_build_color ~= "green" then - s = s .. "." .. current_build_nr_str - end - return s .. "." .. success_build_nr_str .. "]" + if current_build_color ~= "green" then + s = s .. "." .. current_build_nr_str + end + return s .. "." .. success_build_nr_str .. "]" end -- {{{ Buildbot widget type local function worker(format, warg) - if #bb == 0 then --fill up bb with builders when worker function is run for the first time - for i,v in pairs(warg) do - bb[#bb+1] = BB.create(v["url"], v["builder"]) - end + if #bb == 0 then --fill up bb with builders when worker function is run for the first time + for i,v in pairs(warg) do + bb[#bb+1] = BB.create(v["url"], v["builder"]) end + end - local str = "" - for i,v in pairs(bb) do - v:refresh() - str = str .. " " .. getBuilderStatus(v) - end - return {str .. " "} + local str = "" + for i,v in pairs(bb) do + v:refresh() + str = str .. " " .. getBuilderStatus(v) + end + return {str .. " "} end -- }}} setmetatable(_M, { __call = function(_, ...) return worker(...) end }) - diff --git a/home/.config/awesome/vicious/contrib/dio.lua b/home/.config/awesome/vicious/contrib/dio.lua index 5639bc8d..f6a9096b 100644 --- a/home/.config/awesome/vicious/contrib/dio.lua +++ b/home/.config/awesome/vicious/contrib/dio.lua @@ -25,48 +25,48 @@ local unit = { ["s"] = 1, ["kb"] = 2, ["mb"] = 2048 } -- {{{ Disk I/O widget type local function worker(format, disk) - if not disk then return end + if not disk then return end - local disk_lines = { [disk] = {} } - local disk_stats = helpers.pathtotable("/sys/block/" .. disk) + local disk_lines = { [disk] = {} } + local disk_stats = helpers.pathtotable("/sys/block/" .. disk) - if disk_stats.stat then - local match = string.gmatch(disk_stats.stat, "[%s]+([%d]+)") - for i = 1, 11 do -- Store disk stats - table.insert(disk_lines[disk], match()) - end + if disk_stats.stat then + local match = string.gmatch(disk_stats.stat, "[%s]+([%d]+)") + for i = 1, 11 do -- Store disk stats + table.insert(disk_lines[disk], match()) end + end - -- Ensure tables are initialized correctly - local diff_total = { [disk] = {} } - if not disk_total[disk] then - disk_usage[disk] = {} - disk_total[disk] = {} + -- Ensure tables are initialized correctly + local diff_total = { [disk] = {} } + if not disk_total[disk] then + disk_usage[disk] = {} + disk_total[disk] = {} - while #disk_total[disk] < #disk_lines[disk] do - table.insert(disk_total[disk], 0) - end + while #disk_total[disk] < #disk_lines[disk] do + table.insert(disk_total[disk], 0) end + end - for i, v in ipairs(disk_lines[disk]) do - -- Diskstats are absolute, substract our last reading - diff_total[disk][i] = v - disk_total[disk][i] + for i, v in ipairs(disk_lines[disk]) do + -- Diskstats are absolute, substract our last reading + diff_total[disk][i] = v - disk_total[disk][i] - -- Store totals - disk_total[disk][i] = v - end + -- Store totals + disk_total[disk][i] = v + end - -- Calculate and store I/O - helpers.uformat(disk_usage[disk], "read", diff_total[disk][3], unit) - helpers.uformat(disk_usage[disk], "write", diff_total[disk][7], unit) - helpers.uformat(disk_usage[disk], "total", diff_total[disk][7] + diff_total[disk][3], unit) + -- Calculate and store I/O + helpers.uformat(disk_usage[disk], "read", diff_total[disk][3], unit) + helpers.uformat(disk_usage[disk], "write", diff_total[disk][7], unit) + helpers.uformat(disk_usage[disk], "total", diff_total[disk][7] + diff_total[disk][3], unit) - -- Store I/O scheduler - if disk_stats.queue and disk_stats.queue.scheduler then - disk_usage[disk]["{sched}"] = string.gmatch(disk_stats.queue.scheduler, "%[([%a]+)%]") - end + -- Store I/O scheduler + if disk_stats.queue and disk_stats.queue.scheduler then + disk_usage[disk]["{sched}"] = string.gmatch(disk_stats.queue.scheduler, "%[([%a]+)%]") + end - return disk_usage[disk] + return disk_usage[disk] end -- }}} diff --git a/home/.config/awesome/vicious/contrib/mpc.lua b/home/.config/awesome/vicious/contrib/mpc.lua index 60974c09..c9bccaa5 100644 --- a/home/.config/awesome/vicious/contrib/mpc.lua +++ b/home/.config/awesome/vicious/contrib/mpc.lua @@ -20,28 +20,28 @@ local mpc = {} -- {{{ MPC widget type local function worker(format, warg) - -- Get data from mpd - local f = io.popen("mpc") - local np = f:read("*line") - f:close() + -- Get data from mpd + local f = io.popen("mpc") + local np = f:read("*line") + f:close() - -- Not installed, - if np == nil or -- off or stoppped. - (string.find(np, "MPD_HOST") or string.find(np, "volume:")) - then - return {"Stopped"} + -- Not installed, + if np == nil or -- off or stoppped. + (string.find(np, "MPD_HOST") or string.find(np, "volume:")) + then + return {"Stopped"} + end + + -- Check if we should scroll, or maybe truncate + if warg then + if type(warg) == "table" then + np = helpers.scroll(np, warg[1], warg[2]) + else + np = helpers.truncate(np, warg) end + end - -- Check if we should scroll, or maybe truncate - if warg then - if type(warg) == "table" then - np = helpers.scroll(np, warg[1], warg[2]) - else - np = helpers.truncate(np, warg) - end - end - - return {helpers.escape(np)} + return {helpers.escape(np)} end -- }}} diff --git a/home/.config/awesome/vicious/contrib/net.lua b/home/.config/awesome/vicious/contrib/net.lua index 5e6ba938..23fdb4ea 100644 --- a/home/.config/awesome/vicious/contrib/net.lua +++ b/home/.config/awesome/vicious/contrib/net.lua @@ -25,114 +25,114 @@ local net = {} local nets = {} -- Variable definitions local unit = { ["b"] = 1, ["kb"] = 1024, - ["mb"] = 1024^2, ["gb"] = 1024^3 + ["mb"] = 1024^2, ["gb"] = 1024^3 } -- {{{ Net widget type local function worker(format, tignorelist) - local args = {} - local tignore = {} - local total_rx = 0 - local total_tx = 0 - local any_up = 0 + local args = {} + local tignore = {} + local total_rx = 0 + local total_tx = 0 + local any_up = 0 - if not tignorelist then - tignorelist = {"lo", "wmaster0"} - end - for k, i in pairs(tignorelist) do - tignore[i] = true - end + if not tignorelist then + tignorelist = {"lo", "wmaster0"} + end + for k, i in pairs(tignorelist) do + tignore[i] = true + end - -- Get NET stats - for line in io.lines("/proc/net/dev") do - -- Match wmaster0 as well as rt0 (multiple leading spaces) - local name = string.match(line, "^[%s]?[%s]?[%s]?[%s]?([%w]+):") - if name ~= nil then - -- Received bytes, first value after the name - local recv = tonumber(string.match(line, ":[%s]*([%d]+)")) - -- Transmited bytes, 7 fields from end of the line - local send = tonumber(string.match(line, - "([%d]+)%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d$")) + -- Get NET stats + for line in io.lines("/proc/net/dev") do + -- Match wmaster0 as well as rt0 (multiple leading spaces) + local name = string.match(line, "^[%s]?[%s]?[%s]?[%s]?([%w]+):") + if name ~= nil then + -- Received bytes, first value after the name + local recv = tonumber(string.match(line, ":[%s]*([%d]+)")) + -- Transmited bytes, 7 fields from end of the line + local send = tonumber(string.match(line, + "([%d]+)%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d$")) - if not tignore[name] then - total_rx = total_rx + recv - total_tx = total_tx + send - end + if not tignore[name] then + total_rx = total_rx + recv + total_tx = total_tx + send + end - helpers.uformat(args, name .. " rx", recv, unit) - helpers.uformat(args, name .. " tx", send, unit) + helpers.uformat(args, name .. " rx", recv, unit) + helpers.uformat(args, name .. " tx", send, unit) - if nets[name] == nil then - -- Default values on the first run - nets[name] = {} - - helpers.uformat(args, name .. " down", 0, unit) - helpers.uformat(args, name .. " up", 0, unit) - args["{"..name.." carrier}"] = 0 - - nets[name].time = os.time() - else -- Net stats are absolute, substract our last reading - local interval = os.time() - nets[name].time > 0 and - os.time() - nets[name].time or 1 - nets[name].time = os.time() - - local down = (recv - nets[name][1]) / interval - local up = (send - nets[name][2]) / interval - - helpers.uformat(args, name .. " down", down, unit) - helpers.uformat(args, name .. " up", up, unit) - - -- Carrier detection - sysnet = helpers.pathtotable("/sys/class/net/" .. name) - - if sysnet.carrier then - ccarrier = tonumber(sysnet.carrier) - - args["{"..name.." carrier}"] = ccarrier - if ccarrier ~= 0 and not tignore[name] then - any_up = 1 - end - else - args["{"..name.." carrier}"] = 0 - end - end - - -- Store totals - nets[name][1] = recv - nets[name][2] = send - end - end - - helpers.uformat(args, "total rx", total_rx, unit) - helpers.uformat(args, "total tx", total_tx, unit) - - if nets["total"] == nil then + if nets[name] == nil then -- Default values on the first run - nets["total"] = {} + nets[name] = {} - helpers.uformat(args, "total down", 0, unit) - helpers.uformat(args, "total up", 0, unit) - args["{total carrier}"] = 0 + helpers.uformat(args, name .. " down", 0, unit) + helpers.uformat(args, name .. " up", 0, unit) + args["{"..name.." carrier}"] = 0 - nets["total"].time = os.time() - else -- Net stats are absolute, substract our last reading - local interval = os.time() - nets["total"].time > 0 and - os.time() - nets["total"].time or 1 - nets["total"].time = os.time() + nets[name].time = os.time() + else -- Net stats are absolute, substract our last reading + local interval = os.time() - nets[name].time > 0 and + os.time() - nets[name].time or 1 + nets[name].time = os.time() - local down = (total_rx - nets["total"][1]) / interval - local up = (total_tx - nets["total"][2]) / interval + local down = (recv - nets[name][1]) / interval + local up = (send - nets[name][2]) / interval - helpers.uformat(args, "total down", down, unit) - helpers.uformat(args, "total up", up, unit) - args["{total carrier}"] = any_up + helpers.uformat(args, name .. " down", down, unit) + helpers.uformat(args, name .. " up", up, unit) + + -- Carrier detection + sysnet = helpers.pathtotable("/sys/class/net/" .. name) + + if sysnet.carrier then + ccarrier = tonumber(sysnet.carrier) + + args["{"..name.." carrier}"] = ccarrier + if ccarrier ~= 0 and not tignore[name] then + any_up = 1 + end + else + args["{"..name.." carrier}"] = 0 + end + end + + -- Store totals + nets[name][1] = recv + nets[name][2] = send end + end - -- Store totals - nets["total"][1] = total_rx - nets["total"][2] = total_tx + helpers.uformat(args, "total rx", total_rx, unit) + helpers.uformat(args, "total tx", total_tx, unit) - return args + if nets["total"] == nil then + -- Default values on the first run + nets["total"] = {} + + helpers.uformat(args, "total down", 0, unit) + helpers.uformat(args, "total up", 0, unit) + args["{total carrier}"] = 0 + + nets["total"].time = os.time() + else -- Net stats are absolute, substract our last reading + local interval = os.time() - nets["total"].time > 0 and + os.time() - nets["total"].time or 1 + nets["total"].time = os.time() + + local down = (total_rx - nets["total"][1]) / interval + local up = (total_tx - nets["total"][2]) / interval + + helpers.uformat(args, "total down", down, unit) + helpers.uformat(args, "total up", up, unit) + args["{total carrier}"] = any_up + end + + -- Store totals + nets["total"][1] = total_rx + nets["total"][2] = total_tx + + return args end -- }}} diff --git a/home/.config/awesome/vicious/contrib/netcfg.lua b/home/.config/awesome/vicious/contrib/netcfg.lua index f2c0d52c..eb55a41d 100644 --- a/home/.config/awesome/vicious/contrib/netcfg.lua +++ b/home/.config/awesome/vicious/contrib/netcfg.lua @@ -17,18 +17,18 @@ local netcfg = {} -- {{{ Netcfg widget type local function worker(format) - -- Initialize counters - local profiles = {} + -- Initialize counters + local profiles = {} - local f = io.popen("ls -1 /var/run/network/profiles") - for line in f:lines() do - if line ~= nil then - table.insert(profiles, line) - end + local f = io.popen("ls -1 /var/run/network/profiles") + for line in f:lines() do + if line ~= nil then + table.insert(profiles, line) end - f:close() + end + f:close() - return profiles + return profiles end -- }}} diff --git a/home/.config/awesome/vicious/contrib/nvsmi.lua b/home/.config/awesome/vicious/contrib/nvsmi.lua index e68d4a15..6efabcde 100644 --- a/home/.config/awesome/vicious/contrib/nvsmi.lua +++ b/home/.config/awesome/vicious/contrib/nvsmi.lua @@ -18,24 +18,24 @@ local nvsmi = {} -- {{{ GPU Information widget type local function worker(format, warg) - -- Fallback to querying first device - if not warg then warg = "0" end + -- Fallback to querying first device + if not warg then warg = "0" end - -- Get data from smi - -- * Todo: support more; MEMORY,UTILIZATION,ECC,POWER,CLOCK,COMPUTE,PIDS,PERFORMANCE - local f = io.popen("nvidia-smi -q -d TEMPERATURE -i " .. warg) - local smi = f:read("*all") - f:close() + -- Get data from smi + -- * Todo: support more; MEMORY,UTILIZATION,ECC,POWER,CLOCK,COMPUTE,PIDS,PERFORMANCE + local f = io.popen("nvidia-smi -q -d TEMPERATURE -i " .. warg) + local smi = f:read("*all") + f:close() - -- Not installed - if smi == nil then return {0} end + -- Not installed + if smi == nil then return {0} end - -- Get temperature information - local _thermal = string.match(smi, "Gpu[%s]+:[%s]([%d]+)[%s]C") - -- Handle devices without data - if _thermal == nil then return {0} end + -- Get temperature information + local _thermal = string.match(smi, "Gpu[%s]+:[%s]([%d]+)[%s]C") + -- Handle devices without data + if _thermal == nil then return {0} end - return {tonumber(_thermal)} + return {tonumber(_thermal)} end -- }}} diff --git a/home/.config/awesome/vicious/contrib/openweather.lua b/home/.config/awesome/vicious/contrib/openweather.lua index d3d2ffd4..a4be290d 100644 --- a/home/.config/awesome/vicious/contrib/openweather.lua +++ b/home/.config/awesome/vicious/contrib/openweather.lua @@ -9,8 +9,8 @@ local io = { popen = io.popen } local setmetatable = setmetatable local string = { match = string.match } local math = { - ceil = math.ceil, - floor = math.floor + ceil = math.ceil, + floor = math.floor } -- }}} @@ -23,71 +23,71 @@ local openweather = {} -- Initialize function tables local _wdirs = { "N", "NE", "E", "SE", "S", "SW", "W", "NW", "N" } local _wdata = { - ["{city}"] = "N/A", - ["{wind deg}"] = "N/A", - ["{wind aim}"] = "N/A", - ["{wind mps}"] = "N/A", - ["{wind kmh}"] = "N/A", - ["{sky}"] = "N/A", - ["{weather}"] = "N/A", - ["{temp c}"] = "N/A", - ["{humid}"] = "N/A", - ["{press}"] = "N/A" + ["{city}"] = "N/A", + ["{wind deg}"] = "N/A", + ["{wind aim}"] = "N/A", + ["{wind mps}"] = "N/A", + ["{wind kmh}"] = "N/A", + ["{sky}"] = "N/A", + ["{weather}"] = "N/A", + ["{temp c}"] = "N/A", + ["{humid}"] = "N/A", + ["{press}"] = "N/A" } -- {{{ Openweather widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - -- Get weather forceast using the city ID code, from: - -- * OpenWeatherMap.org - local openweather = "http://api.openweathermap.org/data/2.5/weather?id="..warg.."&mode=json&units=metric" - local f = io.popen("curl --connect-timeout 1 -fsm 3 '"..openweather.."'") - local ws = f:read("*all") - f:close() + -- Get weather forceast using the city ID code, from: + -- * OpenWeatherMap.org + local openweather = "http://api.openweathermap.org/data/2.5/weather?id="..warg.."&mode=json&units=metric" + local f = io.popen("curl --connect-timeout 1 -fsm 3 '"..openweather.."'") + local ws = f:read("*all") + f:close() - -- Check if there was a timeout or a problem with the station - if ws == nil then return _wdata end + -- Check if there was a timeout or a problem with the station + if ws == nil then return _wdata end - _wdata["{city}"] = -- City name - string.match(ws, '"name":"([%a%s%-]+)"') or _wdata["{city}"] - _wdata["{wind deg}"] = -- Wind degrees - string.match(ws, '"deg":([%d]+)') or _wdata["{wind deg}"] - _wdata["{wind mps}"] = -- Wind speed in meters per second - string.match(ws, '"speed":([%d%.]+)') or _wdata["{wind mps}"] - _wdata["{sky}"] = -- Sky conditions - string.match(ws, '"main":"([%a]+)"') or _wdata["{sky}"] - _wdata["{weather}"] = -- Weather description - string.match(ws, '"description":"([%a%s]+)"') or _wdata["{weather}"] - _wdata["{temp c}"] = -- Temperature in celsius - string.match(ws, '"temp":([%-]?[%d%.]+)') or _wdata["{temp c}"] - _wdata["{humid}"] = -- Relative humidity in percent - string.match(ws, '"humidity":([%d]+)') or _wdata["{humid}"] - _wdata["{press}"] = -- Pressure in hPa - string.match(ws, '"pressure":([%d%.]+)') or _wdata["{press}"] + _wdata["{city}"] = -- City name + string.match(ws, '"name":"([%a%s%-]+)"') or _wdata["{city}"] + _wdata["{wind deg}"] = -- Wind degrees + string.match(ws, '"deg":([%d]+)') or _wdata["{wind deg}"] + _wdata["{wind mps}"] = -- Wind speed in meters per second + string.match(ws, '"speed":([%d%.]+)') or _wdata["{wind mps}"] + _wdata["{sky}"] = -- Sky conditions + string.match(ws, '"main":"([%a]+)"') or _wdata["{sky}"] + _wdata["{weather}"] = -- Weather description + string.match(ws, '"description":"([%a%s]+)"') or _wdata["{weather}"] + _wdata["{temp c}"] = -- Temperature in celsius + string.match(ws, '"temp":([%-]?[%d%.]+)') or _wdata["{temp c}"] + _wdata["{humid}"] = -- Relative humidity in percent + string.match(ws, '"humidity":([%d]+)') or _wdata["{humid}"] + _wdata["{press}"] = -- Pressure in hPa + string.match(ws, '"pressure":([%d%.]+)') or _wdata["{press}"] - -- Wind speed in km/h - if _wdata["{wind mps}"] ~= "N/A" then - _wdata["{wind mps}"] = math.floor(tonumber(_wdata["{wind mps}"]) + .5) - _wdata["{wind kmh}"] = math.ceil(_wdata["{wind mps}"] * 3.6) - end -- Temperature in °C - if _wdata["{temp c}"] ~= "N/A" then - _wdata["{temp c}"] = math.floor(tonumber(_wdata["{temp c}"]) + .5) - end -- Calculate wind direction - if _wdata["{wind deg}"] ~= "N/A" then - _wdata["{wind deg}"] = tonumber(_wdata["{wind deg}"]) + -- Wind speed in km/h + if _wdata["{wind mps}"] ~= "N/A" then + _wdata["{wind mps}"] = math.floor(tonumber(_wdata["{wind mps}"]) + .5) + _wdata["{wind kmh}"] = math.ceil(_wdata["{wind mps}"] * 3.6) + end -- Temperature in °C + if _wdata["{temp c}"] ~= "N/A" then + _wdata["{temp c}"] = math.floor(tonumber(_wdata["{temp c}"]) + .5) + end -- Calculate wind direction + if _wdata["{wind deg}"] ~= "N/A" then + _wdata["{wind deg}"] = tonumber(_wdata["{wind deg}"]) - -- Lua tables start at [1] - if (_wdata["{wind deg}"] / 45)%1 == 0 then - _wdata["{wind aim}"] = _wdirs[_wdata["{wind deg}"] / 45 + 1] - else - _wdata["{wind aim}"] = - _wdirs[math.ceil(_wdata["{wind deg}"] / 45) + 1].. - _wdirs[math.floor(_wdata["{wind deg}"] / 45) + 1] - end + -- Lua tables start at [1] + if (_wdata["{wind deg}"] / 45)%1 == 0 then + _wdata["{wind aim}"] = _wdirs[_wdata["{wind deg}"] / 45 + 1] + else + _wdata["{wind aim}"] = + _wdirs[math.ceil(_wdata["{wind deg}"] / 45) + 1].. + _wdirs[math.floor(_wdata["{wind deg}"] / 45) + 1] end + end - return _wdata + return _wdata end -- }}} diff --git a/home/.config/awesome/vicious/contrib/ossvol.lua b/home/.config/awesome/vicious/contrib/ossvol.lua index a52316cd..7843fd19 100644 --- a/home/.config/awesome/vicious/contrib/ossvol.lua +++ b/home/.config/awesome/vicious/contrib/ossvol.lua @@ -18,36 +18,36 @@ local ossvol = {} -- {{{ Volume widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - local mixer_state = { - ["on"] = "♫", -- "", - ["off"] = "♩" -- "M" - } + local mixer_state = { + ["on"] = "♫", -- "", + ["off"] = "♩" -- "M" + } - -- Get mixer control contents - local f = io.popen("ossmix -c") - local mixer = f:read("*all") - f:close() + -- Get mixer control contents + local f = io.popen("ossmix -c") + local mixer = f:read("*all") + f:close() - -- Capture mixer control state - local volu = tonumber(string.match(mixer, warg .. "[%s]([%d%.]+)"))/0.25 - local mute = string.match(mixer, "vol%.mute[%s]([%a]+)") - -- Handle mixers without data - if volu == nil then - return {0, mixer_state["off"]} - end + -- Capture mixer control state + local volu = tonumber(string.match(mixer, warg .. "[%s]([%d%.]+)"))/0.25 + local mute = string.match(mixer, "vol%.mute[%s]([%a]+)") + -- Handle mixers without data + if volu == nil then + return {0, mixer_state["off"]} + end - -- Handle mixers without mute - if mute == "OFF" and volu == "0" - -- Handle mixers that are muted - or mute == "ON" then - mute = mixer_state["off"] - else - mute = mixer_state["on"] - end + -- Handle mixers without mute + if mute == "OFF" and volu == "0" + -- Handle mixers that are muted + or mute == "ON" then + mute = mixer_state["off"] + else + mute = mixer_state["on"] + end - return {volu, mute} + return {volu, mute} end -- }}} diff --git a/home/.config/awesome/vicious/contrib/pop.lua b/home/.config/awesome/vicious/contrib/pop.lua index 0ea041b5..c7a19154 100644 --- a/home/.config/awesome/vicious/contrib/pop.lua +++ b/home/.config/awesome/vicious/contrib/pop.lua @@ -25,30 +25,30 @@ local pop = {} -- {{{ POP3 count widget type local function worker(format, warg) - if not sock_avail or (not warg or #warg ~= 4) then - return {"N/A"} - end + if not sock_avail or (not warg or #warg ~= 4) then + return {"N/A"} + end - local host, port = warg[1], tonumber(warg[2]) - local user, pass = warg[3], warg[4] + local host, port = warg[1], tonumber(warg[2]) + local user, pass = warg[3], warg[4] - local client = socket.tcp() - client:settimeout(3) - client:connect(host, port) - client:receive("*l") - client:send("USER " .. user .. "\r\n") - client:receive("*l") - client:send("PASS " .. pass .. "\r\n") - client:receive("*l") - client:send("STAT" .. "\r\n") - local response = client:receive("*l") - client:close() + local client = socket.tcp() + client:settimeout(3) + client:connect(host, port) + client:receive("*l") + client:send("USER " .. user .. "\r\n") + client:receive("*l") + client:send("PASS " .. pass .. "\r\n") + client:receive("*l") + client:send("STAT" .. "\r\n") + local response = client:receive("*l") + client:close() - if response:find("%+OK") then - response = response:match("%+OK (%d+)") - end + if response:find("%+OK") then + response = response:match("%+OK (%d+)") + end - return {response} + return {response} end -- }}} diff --git a/home/.config/awesome/vicious/contrib/pulse.lua b/home/.config/awesome/vicious/contrib/pulse.lua index b06bf564..5f546dc6 100644 --- a/home/.config/awesome/vicious/contrib/pulse.lua +++ b/home/.config/awesome/vicious/contrib/pulse.lua @@ -12,13 +12,13 @@ local setmetatable = setmetatable local os = { execute = os.execute } local table = { insert = table.insert } local string = { - find = string.find, - match = string.match, - format = string.format, - gmatch = string.gmatch + find = string.find, + match = string.match, + format = string.format, + gmatch = string.gmatch } local math = { - floor = math.floor + floor = math.floor } -- }}} @@ -29,36 +29,36 @@ local pulse = {} -- {{{ Helper function local function pacmd(args) - local f = io.popen("pacmd "..args) - if f == nil then - return nil - else - local line = f:read("*all") - f:close() - return line - end + local f = io.popen("pacmd "..args) + if f == nil then + return nil + else + local line = f:read("*all") + f:close() + return line + end end local function escape(text) - local special_chars = { ["."] = "%.", ["-"] = "%-" } - return text:gsub("[%.%-]", special_chars) + local special_chars = { ["."] = "%.", ["-"] = "%-" } + return text:gsub("[%.%-]", special_chars) end local cached_sinks = {} local function get_sink_name(sink) - if type(sink) == "string" then return sink end - -- avoid nil keys - local key = sink or 1 - -- Cache requests - if not cached_sinks[key] then - local line = pacmd("list-sinks") - if line == nil then return nil end - for s in string.gmatch(line, "name: <(.-)>") do - table.insert(cached_sinks, s) - end + if type(sink) == "string" then return sink end + -- avoid nil keys + local key = sink or 1 + -- Cache requests + if not cached_sinks[key] then + local line = pacmd("list-sinks") + if line == nil then return nil end + for s in string.gmatch(line, "name: <(.-)>") do + table.insert(cached_sinks, s) end + end - return cached_sinks[key] + return cached_sinks[key] end @@ -66,55 +66,55 @@ end -- {{{ Pulseaudio widget type local function worker(format, sink) - sink = get_sink_name(sink) - if sink == nil then return {0, "unknown"} end + sink = get_sink_name(sink) + if sink == nil then return {0, "unknown"} end - -- Get sink data - local data = pacmd("dump") - if sink == nil then return {0, "unknown"} end + -- Get sink data + local data = pacmd("dump") + if sink == nil then return {0, "unknown"} end - -- If mute return 0 (not "Mute") so we don't break progressbars - if string.find(data,"set%-sink%-mute "..escape(sink).." yes") then - return {0, "off"} - end + -- If mute return 0 (not "Mute") so we don't break progressbars + if string.find(data,"set%-sink%-mute "..escape(sink).." yes") then + return {0, "off"} + end - local vol = tonumber(string.match(data, "set%-sink%-volume "..escape(sink).." (0x[%x]+)")) - if vol == nil then vol = 0 end + local vol = tonumber(string.match(data, "set%-sink%-volume "..escape(sink).." (0x[%x]+)")) + if vol == nil then vol = 0 end - return { math.floor(vol/0x10000*100), "on"} + return { math.floor(vol/0x10000*100), "on"} end -- }}} -- {{{ Volume control helper function pulse.add(percent, sink) - sink = get_sink_name(sink) - if sink == nil then return end + sink = get_sink_name(sink) + if sink == nil then return end - local data = pacmd("dump") + local data = pacmd("dump") - local pattern = "set%-sink%-volume "..escape(sink).." (0x[%x]+)" - local initial_vol = tonumber(string.match(data, pattern)) + local pattern = "set%-sink%-volume "..escape(sink).." (0x[%x]+)" + local initial_vol = tonumber(string.match(data, pattern)) - local vol = initial_vol + percent/100*0x10000 - if vol > 0x10000 then vol = 0x10000 end - if vol < 0 then vol = 0 end + local vol = initial_vol + percent/100*0x10000 + if vol > 0x10000 then vol = 0x10000 end + if vol < 0 then vol = 0 end - local cmd = string.format("pacmd set-sink-volume %s 0x%x >/dev/null", sink, vol) - return os.execute(cmd) + local cmd = string.format("pacmd set-sink-volume %s 0x%x >/dev/null", sink, vol) + return os.execute(cmd) end function pulse.toggle(sink) - sink = get_sink_name(sink) - if sink == nil then return end + sink = get_sink_name(sink) + if sink == nil then return end - local data = pacmd("dump") - local pattern = "set%-sink%-mute "..escape(sink).." (%a%a%a?)" - local mute = string.match(data, pattern) + local data = pacmd("dump") + local pattern = "set%-sink%-mute "..escape(sink).." (%a%a%a?)" + local mute = string.match(data, pattern) - -- 0 to enable a sink or 1 to mute it. - local state = { yes = 0, no = 1} - local cmd = string.format("pacmd set-sink-mute %s %d", sink, state[mute]) - return os.execute(cmd) + -- 0 to enable a sink or 1 to mute it. + local state = { yes = 0, no = 1} + local cmd = string.format("pacmd set-sink-mute %s %d", sink, state[mute]) + return os.execute(cmd) end -- }}} diff --git a/home/.config/awesome/vicious/contrib/rss.lua b/home/.config/awesome/vicious/contrib/rss.lua index dcf5cc70..d59e014c 100644 --- a/home/.config/awesome/vicious/contrib/rss.lua +++ b/home/.config/awesome/vicious/contrib/rss.lua @@ -20,48 +20,48 @@ local rss = {} -- {{{ RSS widget type local function worker(format, input) - -- input: * feed - feed url - -- * object - entity to look for (typically: 'item') - -- * fields - fields to read (example: 'link', 'title', 'description') - -- output: * count - number of entities found - -- * one table for each field, containing wanted values - local feed = input.feed - local object = input.object - local fields = input.fields + -- input: * feed - feed url + -- * object - entity to look for (typically: 'item') + -- * fields - fields to read (example: 'link', 'title', 'description') + -- output: * count - number of entities found + -- * one table for each field, containing wanted values + local feed = input.feed + local object = input.object + local fields = input.fields - -- Initialise tables - local out = {} + -- Initialise tables + local out = {} + + for _, v in pairs(fields) do + out[v] = {} + end + + -- Initialise variables + local ob = nil + local i,j,k = 1, 1, 0 + local curl = "curl -A 'Mozilla/4.0' -fsm 5 --connect-timeout 3 " + + -- Get the feed + local f = io.popen(curl .. '"' .. feed .. '"') + local feed = f:read("*all") + f:close() + + while true do + i, j, ob = feed.find(feed, "<" .. object .. ">(.-)", i) + if not ob then break end for _, v in pairs(fields) do - out[v] = {} + out[v][k] = ob:match("<" .. v .. ">(.*)") end - -- Initialise variables - local ob = nil - local i,j,k = 1, 1, 0 - local curl = "curl -A 'Mozilla/4.0' -fsm 5 --connect-timeout 3 " + k = k+1 + i = j+1 + end - -- Get the feed - local f = io.popen(curl .. '"' .. feed .. '"') - local feed = f:read("*all") - f:close() + -- Update the entity count + out.count = k - while true do - i, j, ob = feed.find(feed, "<" .. object .. ">(.-)", i) - if not ob then break end - - for _, v in pairs(fields) do - out[v][k] = ob:match("<" .. v .. ">(.*)") - end - - k = k+1 - i = j+1 - end - - -- Update the entity count - out.count = k - - return out + return out end -- }}} diff --git a/home/.config/awesome/vicious/contrib/sensors.lua b/home/.config/awesome/vicious/contrib/sensors.lua index 3ddeb01c..1a311188 100644 --- a/home/.config/awesome/vicious/contrib/sensors.lua +++ b/home/.config/awesome/vicious/contrib/sensors.lua @@ -9,8 +9,8 @@ local io = { popen = io.popen } local setmetatable = setmetatable local table = { insert = table.insert } local string = { - gsub = string.gsub, - match = string.match + gsub = string.gsub, + match = string.match } -- }}} @@ -22,47 +22,47 @@ local sensors = {} -- {{{ Split helper function local function datasplit(str) - -- Splitting strings into associative array - -- with some magic to get the values right. - str = string.gsub(str, "\n", ":") + -- Splitting strings into associative array + -- with some magic to get the values right. + str = string.gsub(str, "\n", ":") - local tbl = {} - string.gsub(str, "([^:]*)", function (v) - if string.match(v, ".") then - table.insert(tbl, v) - end - end) + local tbl = {} + string.gsub(str, "([^:]*)", function (v) + if string.match(v, ".") then + table.insert(tbl, v) + end + end) - local assoc = {} - for c = 1, #tbl, 2 do - local k = string.gsub(tbl[c], ".*_", "") - local v = tonumber(string.match(tbl[c+1], "[%d]+")) - assoc[k] = v - end + local assoc = {} + for c = 1, #tbl, 2 do + local k = string.gsub(tbl[c], ".*_", "") + local v = tonumber(string.match(tbl[c+1], "[%d]+")) + assoc[k] = v + end - return assoc + return assoc end -- }}} -- {{{ Sensors widget type local function worker(format, warg) - -- Get data from all sensors - local f = io.popen("LANG=C sensors -uA") - local lm_sensors = f:read("*all") - f:close() + -- Get data from all sensors + local f = io.popen("LANG=C sensors -uA") + local lm_sensors = f:read("*all") + f:close() - local sensor_data = string.gsub( - string.match(lm_sensors, warg..":\n(%s%s.-)\n[^ ]"), " ", "") + local sensor_data = string.gsub( + string.match(lm_sensors, warg..":\n(%s%s.-)\n[^ ]"), " ", "") - -- One of: crit, max - local divisor = "crit" - local s_data = datasplit(sensor_data) + -- One of: crit, max + local divisor = "crit" + local s_data = datasplit(sensor_data) - if s_data[divisor] and s_data[divisor] > 0 then - s_data.percent = s_data.input / s_data[divisor] * 100 - end + if s_data[divisor] and s_data[divisor] > 0 then + s_data.percent = s_data.input / s_data[divisor] * 100 + end - return {s_data.input, tonumber(s_data.percent)} + return {s_data.input, tonumber(s_data.percent)} end -- }}} diff --git a/home/.config/awesome/vicious/init.lua b/home/.config/awesome/vicious/init.lua index c20c418a..371d8811 100644 --- a/home/.config/awesome/vicious/init.lua +++ b/home/.config/awesome/vicious/init.lua @@ -13,8 +13,8 @@ local tonumber = tonumber local timer = (type(timer) == 'table' and timer or require("gears.timer")) local os = { time = os.time } local table = { - insert = table.insert, - remove = table.remove + insert = table.insert, + remove = table.remove } local helpers = require("vicious.helpers") @@ -34,108 +34,108 @@ local widget_cache = {} -- {{{ Local functions -- {{{ Update a widget local function update(widget, reg, disablecache) - -- Check if there are any equal widgets - if reg == nil then - for w, i in pairs(registered) do - if w == widget then - for _, r in pairs(i) do - update(w, r, disablecache) - end - end + -- Check if there are any equal widgets + if reg == nil then + for w, i in pairs(registered) do + if w == widget then + for _, r in pairs(i) do + update(w, r, disablecache) end - - return + end end - local t = os.time() - local data = {} + return + end - -- Check for chached output newer than the last update - if widget_cache[reg.wtype] ~= nil then - local c = widget_cache[reg.wtype] + local t = os.time() + local data = {} - if (c.time == nil or c.time <= t-reg.timer) or disablecache then - c.time, c.data = t, reg.wtype(reg.format, reg.warg) - end + -- Check for chached output newer than the last update + if widget_cache[reg.wtype] ~= nil then + local c = widget_cache[reg.wtype] - data = c.data - else - data = reg.wtype and reg.wtype(reg.format, reg.warg) + if (c.time == nil or c.time <= t-reg.timer) or disablecache then + c.time, c.data = t, reg.wtype(reg.format, reg.warg) end - if type(data) == "table" then - if type(reg.format) == "string" then - data = helpers.format(reg.format, data) - elseif type(reg.format) == "function" then - data = reg.format(widget, data) - end - end + data = c.data + else + data = reg.wtype and reg.wtype(reg.format, reg.warg) + end - if widget.add_value ~= nil then - widget:add_value(tonumber(data) and tonumber(data)/100) - elseif widget.set_value ~= nil then - widget:set_value(tonumber(data) and tonumber(data)/100) - elseif widget.set_markup ~= nil then - widget:set_markup(data) - else - widget.text = data + if type(data) == "table" then + if type(reg.format) == "string" then + data = helpers.format(reg.format, data) + elseif type(reg.format) == "function" then + data = reg.format(widget, data) end + end - return data + if widget.add_value ~= nil then + widget:add_value(tonumber(data) and tonumber(data)/100) + elseif widget.set_value ~= nil then + widget:set_value(tonumber(data) and tonumber(data)/100) + elseif widget.set_markup ~= nil then + widget:set_markup(data) + else + widget.text = data + end + + return data end -- }}} -- {{{ Register from reg object local function regregister(reg) - if not reg.running then - if registered[reg.widget] == nil then - registered[reg.widget] = {} - table.insert(registered[reg.widget], reg) - else - local already = false + if not reg.running then + if registered[reg.widget] == nil then + registered[reg.widget] = {} + table.insert(registered[reg.widget], reg) + else + local already = false - for w, i in pairs(registered) do - if w == reg.widget then - for _, v in pairs(i) do - if v == reg then - already = true - break - end - end - - if already then - break - end - end + for w, i in pairs(registered) do + if w == reg.widget then + for _, v in pairs(i) do + if v == reg then + already = true + break end + end - if not already then - table.insert(registered[reg.widget], reg) - end + if already then + break + end end + end - -- Start the timer - if reg.timer > 0 then - local tm = timers[reg.timer] and timers[reg.timer].timer - tm = tm or timer({ timeout = reg.timer }) - if tm.connect_signal then - tm:connect_signal("timeout", reg.update) - else - tm:add_signal("timeout", reg.update) - end - if not timers[reg.timer] then - timers[reg.timer] = { timer = tm, refs = 1 } - else - timers[reg.timer].refs = timers[reg.timer].refs + 1 - end - if not tm.started then - tm:start() - end - -- Initial update - reg.update() - end - reg.running = true + if not already then + table.insert(registered[reg.widget], reg) + end end + + -- Start the timer + if reg.timer > 0 then + local tm = timers[reg.timer] and timers[reg.timer].timer + tm = tm or timer({ timeout = reg.timer }) + if tm.connect_signal then + tm:connect_signal("timeout", reg.update) + else + tm:add_signal("timeout", reg.update) + end + if not timers[reg.timer] then + timers[reg.timer] = { timer = tm, refs = 1 } + else + timers[reg.timer].refs = timers[reg.timer].refs + 1 + end + if not tm.started then + tm:start() + end + -- Initial update + reg.update() + end + reg.running = true + end end -- }}} -- }}} @@ -144,120 +144,120 @@ end -- {{{ Global functions -- {{{ Register a widget function vicious.register(widget, wtype, format, timer, warg) - local widget = widget - local reg = { - -- Set properties - wtype = wtype, - format = format, - timer = timer, - warg = warg, - widget = widget, - } - -- Set functions - reg.update = function () - update(widget, reg) - end + local widget = widget + local reg = { + -- Set properties + wtype = wtype, + format = format, + timer = timer, + warg = warg, + widget = widget, + } + -- Set functions + reg.update = function () + update(widget, reg) + end - -- Default to 2s timer - if reg.timer == nil then - reg.timer = 2 - end + -- Default to 2s timer + if reg.timer == nil then + reg.timer = 2 + end - -- Register a reg object - regregister(reg) + -- Register a reg object + regregister(reg) - -- Return a reg object for reuse - return reg + -- Return a reg object for reuse + return reg end -- }}} -- {{{ Unregister a widget function vicious.unregister(widget, keep, reg) - if reg == nil then - for w, i in pairs(registered) do - if w == widget then - for _, v in pairs(i) do - reg = vicious.unregister(w, keep, v) - end - end + if reg == nil then + for w, i in pairs(registered) do + if w == widget then + for _, v in pairs(i) do + reg = vicious.unregister(w, keep, v) end - - return reg - end - - if not keep then - for w, i in pairs(registered) do - if w == widget then - for k, v in pairs(i) do - if v == reg then - table.remove(registered[w], k) - end - end - end - end - end - - if not reg.running then - return reg - end - - -- Disconnect from timer - local tm = timers[reg.timer] - if tm.timer.disconnect_signal then - tm.timer:disconnect_signal("timeout", reg.update) - else - tm.timer:remove_signal("timeout", reg.update) - end - reg.running = false - -- Stop the timer - tm.refs = tm.refs - 1 - if tm.refs == 0 and tm.timer.started then - tm.timer:stop() + end end return reg + end + + if not keep then + for w, i in pairs(registered) do + if w == widget then + for k, v in pairs(i) do + if v == reg then + table.remove(registered[w], k) + end + end + end + end + end + + if not reg.running then + return reg + end + + -- Disconnect from timer + local tm = timers[reg.timer] + if tm.timer.disconnect_signal then + tm.timer:disconnect_signal("timeout", reg.update) + else + tm.timer:remove_signal("timeout", reg.update) + end + reg.running = false + -- Stop the timer + tm.refs = tm.refs - 1 + if tm.refs == 0 and tm.timer.started then + tm.timer:stop() + end + + return reg end -- }}} -- {{{ Enable caching of a widget type function vicious.cache(wtype) - if wtype ~= nil then - if widget_cache[wtype] == nil then - widget_cache[wtype] = {} - end + if wtype ~= nil then + if widget_cache[wtype] == nil then + widget_cache[wtype] = {} end + end end -- }}} -- {{{ Force update of widgets function vicious.force(wtable) - if type(wtable) == "table" then - for _, w in pairs(wtable) do - update(w, nil, true) - end + if type(wtable) == "table" then + for _, w in pairs(wtable) do + update(w, nil, true) end + end end -- }}} -- {{{ Suspend all widgets function vicious.suspend() - for w, i in pairs(registered) do - for _, v in pairs(i) do - vicious.unregister(w, true, v) - end + for w, i in pairs(registered) do + for _, v in pairs(i) do + vicious.unregister(w, true, v) end + end end -- }}} -- {{{ Activate a widget function vicious.activate(widget) - for w, i in pairs(registered) do - if widget == nil or w == widget then - for _, v in pairs(i) do - regregister(v) - end - end + for w, i in pairs(registered) do + if widget == nil or w == widget then + for _, v in pairs(i) do + regregister(v) + end end + end end -- }}} diff --git a/home/.config/awesome/vicious/widgets/bat.lua b/home/.config/awesome/vicious/widgets/bat.lua index 1f491d9b..50398dbe 100644 --- a/home/.config/awesome/vicious/widgets/bat.lua +++ b/home/.config/awesome/vicious/widgets/bat.lua @@ -10,8 +10,8 @@ local setmetatable = setmetatable local string = { format = string.format } local helpers = require("vicious.helpers") local math = { - min = math.min, - floor = math.floor + min = math.min, + floor = math.floor } -- }}} @@ -23,71 +23,71 @@ local bat = {} -- {{{ Battery widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - local battery = helpers.pathtotable("/sys/class/power_supply/"..warg) - local battery_state = { - ["Full\n"] = "↯", - ["Unknown\n"] = "⌁", - ["Charged\n"] = "↯", - ["Charging\n"] = "+", - ["Discharging\n"] = "−" - } + local battery = helpers.pathtotable("/sys/class/power_supply/"..warg) + local battery_state = { + ["Full\n"] = "↯", + ["Unknown\n"] = "⌁", + ["Charged\n"] = "↯", + ["Charging\n"] = "+", + ["Discharging\n"] = "−" + } - -- Check if the battery is present - if battery.present ~= "1\n" then - return {battery_state["Unknown\n"], 0, "N/A", 0} - end + -- Check if the battery is present + if battery.present ~= "1\n" then + return {battery_state["Unknown\n"], 0, "N/A", 0} + end - -- Get state information - local state = battery_state[battery.status] or battery_state["Unknown\n"] + -- Get state information + local state = battery_state[battery.status] or battery_state["Unknown\n"] - -- Get capacity information - if battery.charge_now then - remaining, capacity = battery.charge_now, battery.charge_full - capacity_design = battery.charge_full_design or capacity - elseif battery.energy_now then - remaining, capacity = battery.energy_now, battery.energy_full - capacity_design = battery.energy_full_design or capacity + -- Get capacity information + if battery.charge_now then + remaining, capacity = battery.charge_now, battery.charge_full + capacity_design = battery.charge_full_design or capacity + elseif battery.energy_now then + remaining, capacity = battery.energy_now, battery.energy_full + capacity_design = battery.energy_full_design or capacity + else + return {battery_state["Unknown\n"], 0, "N/A", 0} + end + + -- Calculate capacity and wear percentage (but work around broken BAT/ACPI implementations) + local percent = math.min(math.floor(remaining / capacity * 100), 100) + local wear = math.floor(100 - capacity / capacity_design * 100) + + + -- Get charge information + if battery.current_now then + rate = tonumber(battery.current_now) + elseif battery.power_now then + rate = tonumber(battery.power_now) + else + return {state, percent, "N/A", wear} + end + + -- Calculate remaining (charging or discharging) time + local time = "N/A" + + if rate ~= nil and rate ~= 0 then + if state == "+" then + timeleft = (tonumber(capacity) - tonumber(remaining)) / tonumber(rate) + elseif state == "−" then + timeleft = tonumber(remaining) / tonumber(rate) else - return {battery_state["Unknown\n"], 0, "N/A", 0} + return {state, percent, time, wear} end - -- Calculate capacity and wear percentage (but work around broken BAT/ACPI implementations) - local percent = math.min(math.floor(remaining / capacity * 100), 100) - local wear = math.floor(100 - capacity / capacity_design * 100) + -- Calculate time + local hoursleft = math.floor(timeleft) + local minutesleft = math.floor((timeleft - hoursleft) * 60 ) + time = string.format("%02d:%02d", hoursleft, minutesleft) + end - -- Get charge information - if battery.current_now then - rate = tonumber(battery.current_now) - elseif battery.power_now then - rate = tonumber(battery.power_now) - else - return {state, percent, "N/A", wear} - end - - -- Calculate remaining (charging or discharging) time - local time = "N/A" - - if rate ~= nil and rate ~= 0 then - if state == "+" then - timeleft = (tonumber(capacity) - tonumber(remaining)) / tonumber(rate) - elseif state == "−" then - timeleft = tonumber(remaining) / tonumber(rate) - else - return {state, percent, time, wear} - end - - -- Calculate time - local hoursleft = math.floor(timeleft) - local minutesleft = math.floor((timeleft - hoursleft) * 60 ) - - time = string.format("%02d:%02d", hoursleft, minutesleft) - end - - return {state, percent, time, wear} + return {state, percent, time, wear} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/cpu.lua b/home/.config/awesome/vicious/widgets/cpu.lua index fe6754a6..dcb25450 100644 --- a/home/.config/awesome/vicious/widgets/cpu.lua +++ b/home/.config/awesome/vicious/widgets/cpu.lua @@ -12,8 +12,8 @@ local setmetatable = setmetatable local math = { floor = math.floor } local table = { insert = table.insert } local string = { - sub = string.sub, - gmatch = string.gmatch + sub = string.sub, + gmatch = string.gmatch } -- }}} @@ -30,50 +30,50 @@ local cpu_active = {} -- {{{ CPU widget type local function worker(format) - local cpu_lines = {} + local cpu_lines = {} - -- Get CPU stats - local f = io.open("/proc/stat") - for line in f:lines() do - if string.sub(line, 1, 3) ~= "cpu" then break end + -- Get CPU stats + local f = io.open("/proc/stat") + for line in f:lines() do + if string.sub(line, 1, 3) ~= "cpu" then break end - cpu_lines[#cpu_lines+1] = {} + cpu_lines[#cpu_lines+1] = {} - for i in string.gmatch(line, "[%s]+([^%s]+)") do - table.insert(cpu_lines[#cpu_lines], i) - end + for i in string.gmatch(line, "[%s]+([^%s]+)") do + table.insert(cpu_lines[#cpu_lines], i) end - f:close() + end + f:close() - -- Ensure tables are initialized correctly - for i = #cpu_total + 1, #cpu_lines do - cpu_total[i] = 0 - cpu_usage[i] = 0 - cpu_active[i] = 0 + -- Ensure tables are initialized correctly + for i = #cpu_total + 1, #cpu_lines do + cpu_total[i] = 0 + cpu_usage[i] = 0 + cpu_active[i] = 0 + end + + + for i, v in ipairs(cpu_lines) do + -- Calculate totals + local total_new = 0 + for j = 1, #v do + total_new = total_new + v[j] end + local active_new = total_new - (v[4] + v[5]) + -- Calculate percentage + local diff_total = total_new - cpu_total[i] + local diff_active = active_new - cpu_active[i] - for i, v in ipairs(cpu_lines) do - -- Calculate totals - local total_new = 0 - for j = 1, #v do - total_new = total_new + v[j] - end - local active_new = total_new - (v[4] + v[5]) + if diff_total == 0 then diff_total = 1E-6 end + cpu_usage[i] = math.floor((diff_active / diff_total) * 100) - -- Calculate percentage - local diff_total = total_new - cpu_total[i] - local diff_active = active_new - cpu_active[i] + -- Store totals + cpu_total[i] = total_new + cpu_active[i] = active_new + end - if diff_total == 0 then diff_total = 1E-6 end - cpu_usage[i] = math.floor((diff_active / diff_total) * 100) - - -- Store totals - cpu_total[i] = total_new - cpu_active[i] = active_new - end - - return cpu_usage + return cpu_usage end -- }}} diff --git a/home/.config/awesome/vicious/widgets/cpufreq.lua b/home/.config/awesome/vicious/widgets/cpufreq.lua index 39470a4e..659cada0 100644 --- a/home/.config/awesome/vicious/widgets/cpufreq.lua +++ b/home/.config/awesome/vicious/widgets/cpufreq.lua @@ -18,43 +18,43 @@ local cpufreq = {} -- {{{ CPU frequency widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - local _cpufreq = helpers.pathtotable("/sys/devices/system/cpu/"..warg.."/cpufreq") - local governor_state = { - ["ondemand\n"] = "↯", - ["powersave\n"] = "⌁", - ["userspace\n"] = "¤", - ["performance\n"] = "⚡", - ["conservative\n"] = "⊚" - } - -- Default frequency and voltage values - local freqv = { - ["mhz"] = "N/A", ["ghz"] = "N/A", - ["v"] = "N/A", ["mv"] = "N/A", - } + local _cpufreq = helpers.pathtotable("/sys/devices/system/cpu/"..warg.."/cpufreq") + local governor_state = { + ["ondemand\n"] = "↯", + ["powersave\n"] = "⌁", + ["userspace\n"] = "¤", + ["performance\n"] = "⚡", + ["conservative\n"] = "⊚" + } + -- Default frequency and voltage values + local freqv = { + ["mhz"] = "N/A", ["ghz"] = "N/A", + ["v"] = "N/A", ["mv"] = "N/A", + } - -- Get the current frequency - local freq = tonumber(_cpufreq.scaling_cur_freq) - -- Calculate MHz and GHz - if freq then - freqv.mhz = freq / 1000 - freqv.ghz = freqv.mhz / 1000 + -- Get the current frequency + local freq = tonumber(_cpufreq.scaling_cur_freq) + -- Calculate MHz and GHz + if freq then + freqv.mhz = freq / 1000 + freqv.ghz = freqv.mhz / 1000 - -- Get the current voltage - if _cpufreq.scaling_voltages then - freqv.mv = tonumber(string.match(_cpufreq.scaling_voltages, freq.."[%s]([%d]+)")) - -- Calculate voltage from mV - freqv.v = freqv.mv / 1000 - end + -- Get the current voltage + if _cpufreq.scaling_voltages then + freqv.mv = tonumber(string.match(_cpufreq.scaling_voltages, freq.."[%s]([%d]+)")) + -- Calculate voltage from mV + freqv.v = freqv.mv / 1000 end + end - -- Get the current governor - local governor = _cpufreq.scaling_governor - -- Represent the governor as a symbol - governor = governor_state[governor] or governor or "N/A" + -- Get the current governor + local governor = _cpufreq.scaling_governor + -- Represent the governor as a symbol + governor = governor_state[governor] or governor or "N/A" - return {freqv.mhz, freqv.ghz, freqv.mv, freqv.v, governor} + return {freqv.mhz, freqv.ghz, freqv.mv, freqv.v, governor} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/cpuinf.lua b/home/.config/awesome/vicious/widgets/cpuinf.lua index b0ea782a..6ee922d1 100644 --- a/home/.config/awesome/vicious/widgets/cpuinf.lua +++ b/home/.config/awesome/vicious/widgets/cpuinf.lua @@ -18,26 +18,26 @@ local cpuinf = {} -- {{{ CPU Information widget type local function worker(format) - local id = nil + local id = nil - local cpu_info = {} -- Get CPU info - for line in io.lines("/proc/cpuinfo") do - for k, v in string.gmatch(line, "([%a%s]+)[%s]+:[%s]([%d]+).-$") do - if k == "processor" then - id = v - elseif k == "cpu MHz\t" or k == "cpu MHz" then - local speed = tonumber(v) - cpu_info["{cpu"..id.." mhz}"] = speed - cpu_info["{cpu"..id.." ghz}"] = speed / 1000 - elseif k == "cache size" then - local cache = tonumber(v) - cpu_info["{cpu"..id.." kb}"] = cache - cpu_info["{cpu"..id.." mb}"] = cache / 1024 - end - end + local cpu_info = {} -- Get CPU info + for line in io.lines("/proc/cpuinfo") do + for k, v in string.gmatch(line, "([%a%s]+)[%s]+:[%s]([%d]+).-$") do + if k == "processor" then + id = v + elseif k == "cpu MHz\t" or k == "cpu MHz" then + local speed = tonumber(v) + cpu_info["{cpu"..id.." mhz}"] = speed + cpu_info["{cpu"..id.." ghz}"] = speed / 1000 + elseif k == "cache size" then + local cache = tonumber(v) + cpu_info["{cpu"..id.." kb}"] = cache + cpu_info["{cpu"..id.." mb}"] = cache / 1024 + end end + end - return cpu_info + return cpu_info end -- }}} diff --git a/home/.config/awesome/vicious/widgets/date.lua b/home/.config/awesome/vicious/widgets/date.lua index 17f4f3f2..cee71001 100644 --- a/home/.config/awesome/vicious/widgets/date.lua +++ b/home/.config/awesome/vicious/widgets/date.lua @@ -7,8 +7,8 @@ -- {{{ Grab environment local setmetatable = setmetatable local os = { - date = os.date, - time = os.time + date = os.date, + time = os.time } -- }}} @@ -20,7 +20,7 @@ local date = {} -- {{{ Date widget type local function worker(format, warg) - return os.date(format or nil, warg and os.time()+warg or nil) + return os.date(format or nil, warg and os.time()+warg or nil) end -- }}} diff --git a/home/.config/awesome/vicious/widgets/dio.lua b/home/.config/awesome/vicious/widgets/dio.lua index 6d13c545..563d26f7 100644 --- a/home/.config/awesome/vicious/widgets/dio.lua +++ b/home/.config/awesome/vicious/widgets/dio.lua @@ -10,8 +10,8 @@ local setmetatable = setmetatable local string = { match = string.match } local helpers = require("vicious.helpers") local os = { - time = os.time, - difftime = os.difftime + time = os.time, + difftime = os.difftime } -- }}} @@ -30,43 +30,43 @@ local unit = { ["s"] = 1, ["kb"] = 2, ["mb"] = 2048 } -- {{{ Disk I/O widget type local function worker(format) - local disk_lines = {} + local disk_lines = {} - for line in io.lines("/proc/diskstats") do - local device, read, write = - -- Linux kernel documentation: Documentation/iostats.txt - string.match(line, "([^%s]+) %d+ %d+ (%d+) %d+ %d+ %d+ (%d+)") - disk_lines[device] = { read, write } + for line in io.lines("/proc/diskstats") do + local device, read, write = + -- Linux kernel documentation: Documentation/iostats.txt + string.match(line, "([^%s]+) %d+ %d+ (%d+) %d+ %d+ %d+ (%d+)") + disk_lines[device] = { read, write } + end + + local time = os.time() + local interval = os.difftime(time, disk_time) + if interval == 0 then interval = 1 end + + for device, stats in pairs(disk_lines) do + -- Avoid insane values on startup + local last_stats = disk_stats[device] or stats + + -- Check for overflows and counter resets (> 2^32) + if stats[1] < last_stats[1] or stats[2] < last_stats[2] then + last_stats[1], last_stats[2] = stats[1], stats[2] end - local time = os.time() - local interval = os.difftime(time, disk_time) - if interval == 0 then interval = 1 end + -- Diskstats are absolute, substract our last reading + -- * divide by timediff because we don't know the timer value + local read = (stats[1] - last_stats[1]) / interval + local write = (stats[2] - last_stats[2]) / interval - for device, stats in pairs(disk_lines) do - -- Avoid insane values on startup - local last_stats = disk_stats[device] or stats + -- Calculate and store I/O + helpers.uformat(disk_usage, device.." read", read, unit) + helpers.uformat(disk_usage, device.." write", write, unit) + helpers.uformat(disk_usage, device.." total", read + write, unit) + end - -- Check for overflows and counter resets (> 2^32) - if stats[1] < last_stats[1] or stats[2] < last_stats[2] then - last_stats[1], last_stats[2] = stats[1], stats[2] - end + disk_time = time + disk_stats = disk_lines - -- Diskstats are absolute, substract our last reading - -- * divide by timediff because we don't know the timer value - local read = (stats[1] - last_stats[1]) / interval - local write = (stats[2] - last_stats[2]) / interval - - -- Calculate and store I/O - helpers.uformat(disk_usage, device.." read", read, unit) - helpers.uformat(disk_usage, device.." write", write, unit) - helpers.uformat(disk_usage, device.." total", read + write, unit) - end - - disk_time = time - disk_stats = disk_lines - - return disk_usage + return disk_usage end -- }}} diff --git a/home/.config/awesome/vicious/widgets/fs.lua b/home/.config/awesome/vicious/widgets/fs.lua index 4b889dce..c37fc951 100644 --- a/home/.config/awesome/vicious/widgets/fs.lua +++ b/home/.config/awesome/vicious/widgets/fs.lua @@ -23,29 +23,29 @@ local unit = { ["mb"] = 1024, ["gb"] = 1024^2 } -- {{{ Filesystem widget type local function worker(format, warg) - -- Fallback to listing local filesystems - if warg then warg = "" else warg = "-l" end + -- Fallback to listing local filesystems + if warg then warg = "" else warg = "-l" end - local fs_info = {} -- Get data from df - local f = io.popen("LC_ALL=C df -kP " .. helpers.shellquote(warg)) + local fs_info = {} -- Get data from df + local f = io.popen("LC_ALL=C df -kP " .. helpers.shellquote(warg)) - for line in f:lines() do -- Match: (size) (used)(avail)(use%) (mount) - local s = string.match(line, "^.-[%s]([%d]+)") - local u,a,p = string.match(line, "([%d]+)[%D]+([%d]+)[%D]+([%d]+)%%") - local m = string.match(line, "%%[%s]+([%p%w]+)") + for line in f:lines() do -- Match: (size) (used)(avail)(use%) (mount) + local s = string.match(line, "^.-[%s]([%d]+)") + local u,a,p = string.match(line, "([%d]+)[%D]+([%d]+)[%D]+([%d]+)%%") + local m = string.match(line, "%%[%s]+([%p%w]+)") - if u and m then -- Handle 1st line and broken regexp - helpers.uformat(fs_info, m .. " size", s, unit) - helpers.uformat(fs_info, m .. " used", u, unit) - helpers.uformat(fs_info, m .. " avail", a, unit) + if u and m then -- Handle 1st line and broken regexp + helpers.uformat(fs_info, m .. " size", s, unit) + helpers.uformat(fs_info, m .. " used", u, unit) + helpers.uformat(fs_info, m .. " avail", a, unit) - fs_info["{" .. m .. " used_p}"] = tonumber(p) - fs_info["{" .. m .. " avail_p}"] = 100 - tonumber(p) - end + fs_info["{" .. m .. " used_p}"] = tonumber(p) + fs_info["{" .. m .. " avail_p}"] = 100 - tonumber(p) end - f:close() + end + f:close() - return fs_info + return fs_info end -- }}} diff --git a/home/.config/awesome/vicious/widgets/gmail.lua b/home/.config/awesome/vicious/widgets/gmail.lua index 84f21259..24918c55 100644 --- a/home/.config/awesome/vicious/widgets/gmail.lua +++ b/home/.config/awesome/vicious/widgets/gmail.lua @@ -10,7 +10,7 @@ local io = { popen = io.popen } local setmetatable = setmetatable local helpers = require("vicious.helpers") local string = { - match = string.match + match = string.match } -- }}} @@ -30,47 +30,47 @@ local rss = { -- Default is just Inbox local feed = rss.inbox local mail = { - ["{count}"] = 0, - ["{subject}"] = "N/A" + ["{count}"] = 0, + ["{subject}"] = "N/A" } -- }}} -- {{{ Gmail widget type local function worker(format, warg) - -- Get info from the Gmail atom feed - local f = io.popen("curl --connect-timeout 1 -m 3 -fsn " .. feed) + -- Get info from the Gmail atom feed + local f = io.popen("curl --connect-timeout 1 -m 3 -fsn " .. feed) - -- Could be huge don't read it all at once, info we are after is at the top - local xml = f:read(2000) - - if xml ~= nil then - return mail - end - - mail["{count}"] = -- Count comes before messages and matches at least 0 - tonumber(string.match(xml, "([%d]+)")) or mail["{count}"] - - -- Find subject tag - local title = string.match(xml, ".-(.-)") - - if title ~= nil then - -- Check if we should scroll, or maybe truncate - if warg then - if type(warg) == "table" then - title = helpers.scroll(title, warg[1], warg[2]) - else - title = helpers.truncate(title, warg) - end - end - - -- Spam sanitize the subject and store - mail["{subject}"] = helpers.escape(title) - end - - f:close() + -- Could be huge don't read it all at once, info we are after is at the top + local xml = f:read(2000) + if xml ~= nil then return mail + end + + mail["{count}"] = -- Count comes before messages and matches at least 0 + tonumber(string.match(xml, "([%d]+)")) or mail["{count}"] + + -- Find subject tag + local title = string.match(xml, ".-(.-)") + + if title ~= nil then + -- Check if we should scroll, or maybe truncate + if warg then + if type(warg) == "table" then + title = helpers.scroll(title, warg[1], warg[2]) + else + title = helpers.truncate(title, warg) + end + end + + -- Spam sanitize the subject and store + mail["{subject}"] = helpers.escape(title) + end + + f:close() + + return mail end -- }}} diff --git a/home/.config/awesome/vicious/widgets/hddtemp.lua b/home/.config/awesome/vicious/widgets/hddtemp.lua index 5c2b1a6d..176a3b6e 100644 --- a/home/.config/awesome/vicious/widgets/hddtemp.lua +++ b/home/.config/awesome/vicious/widgets/hddtemp.lua @@ -19,21 +19,21 @@ local hddtemp = {} -- {{{ HDD Temperature widget type local function worker(format, warg) - -- Fallback to default hddtemp port - if warg == nil then warg = 7634 end + -- Fallback to default hddtemp port + if warg == nil then warg = 7634 end - local hdd_temp = {} -- Get info from the hddtemp daemon - local quoted = helpers.shellquote(warg) - local f = io.popen("echo | curl --connect-timeout 1 -fsm 3 telnet://127.0.0.1:"..quoted) + local hdd_temp = {} -- Get info from the hddtemp daemon + local quoted = helpers.shellquote(warg) + local f = io.popen("echo | curl --connect-timeout 1 -fsm 3 telnet://127.0.0.1:"..quoted) - for line in f:lines() do - for d, t in string.gmatch(line, "|([%/%a%d]+)|.-|([%d]+)|[CF]+|") do - hdd_temp["{"..d.."}"] = tonumber(t) - end + for line in f:lines() do + for d, t in string.gmatch(line, "|([%/%a%d]+)|.-|([%d]+)|[CF]+|") do + hdd_temp["{"..d.."}"] = tonumber(t) end - f:close() + end + f:close() - return hdd_temp + return hdd_temp end -- }}} diff --git a/home/.config/awesome/vicious/widgets/mbox.lua b/home/.config/awesome/vicious/widgets/mbox.lua index 7b92e36c..9a478c9d 100644 --- a/home/.config/awesome/vicious/widgets/mbox.lua +++ b/home/.config/awesome/vicious/widgets/mbox.lua @@ -22,31 +22,31 @@ local subject = "N/A" -- {{{ Mailbox widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - -- mbox could be huge, get a 30kb chunk from EOF - if type(warg) ~= "table" then _mbox = warg end - -- * attachment could be much bigger than 30kb - local f = io.open(_mbox or warg[1]) - f:seek("end", -30720) - local txt = f:read("*all") - f:close() + -- mbox could be huge, get a 30kb chunk from EOF + if type(warg) ~= "table" then _mbox = warg end + -- * attachment could be much bigger than 30kb + local f = io.open(_mbox or warg[1]) + f:seek("end", -30720) + local txt = f:read("*all") + f:close() - -- Find all Subject lines - for i in string.gfind(txt, "Subject: ([^\n]*)") do - subject = i + -- Find all Subject lines + for i in string.gfind(txt, "Subject: ([^\n]*)") do + subject = i + end + + -- Check if we should scroll, or maybe truncate + if type(warg) == "table" then + if warg[3] ~= nil then + subject = helpers.scroll(subject, warg[2], warg[3]) + else + subject = helpers.truncate(subject, warg[2]) end + end - -- Check if we should scroll, or maybe truncate - if type(warg) == "table" then - if warg[3] ~= nil then - subject = helpers.scroll(subject, warg[2], warg[3]) - else - subject = helpers.truncate(subject, warg[2]) - end - end - - return {helpers.escape(subject)} + return {helpers.escape(subject)} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/mboxc.lua b/home/.config/awesome/vicious/widgets/mboxc.lua index a79d1f4b..9b3632b4 100644 --- a/home/.config/awesome/vicious/widgets/mboxc.lua +++ b/home/.config/awesome/vicious/widgets/mboxc.lua @@ -17,41 +17,41 @@ local mboxc = {} -- {{{ Mbox count widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - -- Initialize counters - local count = { old = 0, total = 0, new = 0 } + -- Initialize counters + local count = { old = 0, total = 0, new = 0 } - -- Get data from mbox files - for i=1, #warg do - local f = io.open(warg[i]) + -- Get data from mbox files + for i=1, #warg do + local f = io.open(warg[i]) - while true do - -- Read the mbox line by line, if we are going to read - -- some *HUGE* folders then switch to reading chunks - local lines = f:read("*line") - if not lines then break end + while true do + -- Read the mbox line by line, if we are going to read + -- some *HUGE* folders then switch to reading chunks + local lines = f:read("*line") + if not lines then break end - -- Find all messages - -- * http://www.jwz.org/doc/content-length.html - local _, from = string.find(lines, "^From[%s]") - if from ~= nil then count.total = count.total + 1 end + -- Find all messages + -- * http://www.jwz.org/doc/content-length.html + local _, from = string.find(lines, "^From[%s]") + if from ~= nil then count.total = count.total + 1 end - -- Read messages have the Status header - local _, status = string.find(lines, "^Status:[%s]RO$") - if status ~= nil then count.old = count.old + 1 end + -- Read messages have the Status header + local _, status = string.find(lines, "^Status:[%s]RO$") + if status ~= nil then count.old = count.old + 1 end - -- Skip the folder internal data - local _, int = string.find(lines, "^Subject:[%s].*FOLDER[%s]INTERNAL[%s]DATA") - if int ~= nil then count.total = count.total - 1 end - end - f:close() + -- Skip the folder internal data + local _, int = string.find(lines, "^Subject:[%s].*FOLDER[%s]INTERNAL[%s]DATA") + if int ~= nil then count.total = count.total - 1 end end + f:close() + end - -- Substract total from old to get the new count - count.new = count.total - count.old + -- Substract total from old to get the new count + count.new = count.total - count.old - return {count.total, count.old, count.new} + return {count.total, count.old, count.new} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/mdir.lua b/home/.config/awesome/vicious/widgets/mdir.lua index bea90885..0bd60d99 100644 --- a/home/.config/awesome/vicious/widgets/mdir.lua +++ b/home/.config/awesome/vicious/widgets/mdir.lua @@ -18,25 +18,25 @@ local mdir = {} -- {{{ Maildir widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - -- Initialize counters - local count = { new = 0, cur = 0 } + -- Initialize counters + local count = { new = 0, cur = 0 } - for i=1, #warg do - quoted_path = helpers.shellquote(warg[i]) - -- Recursively find new messages - local f = io.popen("find "..quoted_path.." -type f -wholename '*/new/*'") - for line in f:lines() do count.new = count.new + 1 end - f:close() + for i=1, #warg do + quoted_path = helpers.shellquote(warg[i]) + -- Recursively find new messages + local f = io.popen("find "..quoted_path.." -type f -wholename '*/new/*'") + for line in f:lines() do count.new = count.new + 1 end + f:close() - -- Recursively find "old" messages lacking the Seen flag - local f = io.popen("find "..quoted_path.." -type f -regex '.*/cur/.*2,[^S]*$'") - for line in f:lines() do count.cur = count.cur + 1 end - f:close() - end + -- Recursively find "old" messages lacking the Seen flag + local f = io.popen("find "..quoted_path.." -type f -regex '.*/cur/.*2,[^S]*$'") + for line in f:lines() do count.cur = count.cur + 1 end + f:close() + end - return {count.new, count.cur} + return {count.new, count.cur} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/mem.lua b/home/.config/awesome/vicious/widgets/mem.lua index 67ef42ae..2803d105 100644 --- a/home/.config/awesome/vicious/widgets/mem.lua +++ b/home/.config/awesome/vicious/widgets/mem.lua @@ -19,33 +19,33 @@ local mem = {} -- {{{ Memory widget type local function worker(format) - local _mem = { buf = {}, swp = {} } + local _mem = { buf = {}, swp = {} } - -- Get MEM info - for line in io.lines("/proc/meminfo") do - for k, v in string.gmatch(line, "([%a]+):[%s]+([%d]+).+") do - if k == "MemTotal" then _mem.total = math.floor(v/1024) - elseif k == "MemFree" then _mem.buf.f = math.floor(v/1024) - elseif k == "Buffers" then _mem.buf.b = math.floor(v/1024) - elseif k == "Cached" then _mem.buf.c = math.floor(v/1024) - elseif k == "SwapTotal" then _mem.swp.t = math.floor(v/1024) - elseif k == "SwapFree" then _mem.swp.f = math.floor(v/1024) - end - end + -- Get MEM info + for line in io.lines("/proc/meminfo") do + for k, v in string.gmatch(line, "([%a]+):[%s]+([%d]+).+") do + if k == "MemTotal" then _mem.total = math.floor(v/1024) + elseif k == "MemFree" then _mem.buf.f = math.floor(v/1024) + elseif k == "Buffers" then _mem.buf.b = math.floor(v/1024) + elseif k == "Cached" then _mem.buf.c = math.floor(v/1024) + elseif k == "SwapTotal" then _mem.swp.t = math.floor(v/1024) + elseif k == "SwapFree" then _mem.swp.f = math.floor(v/1024) + end end + end - -- Calculate memory percentage - _mem.free = _mem.buf.f + _mem.buf.b + _mem.buf.c - _mem.inuse = _mem.total - _mem.free - _mem.bcuse = _mem.total - _mem.buf.f - _mem.usep = math.floor(_mem.inuse / _mem.total * 100) - -- Calculate swap percentage - _mem.swp.inuse = _mem.swp.t - _mem.swp.f - _mem.swp.usep = math.floor(_mem.swp.inuse / _mem.swp.t * 100) + -- Calculate memory percentage + _mem.free = _mem.buf.f + _mem.buf.b + _mem.buf.c + _mem.inuse = _mem.total - _mem.free + _mem.bcuse = _mem.total - _mem.buf.f + _mem.usep = math.floor(_mem.inuse / _mem.total * 100) + -- Calculate swap percentage + _mem.swp.inuse = _mem.swp.t - _mem.swp.f + _mem.swp.usep = math.floor(_mem.swp.inuse / _mem.swp.t * 100) - return {_mem.usep, _mem.inuse, _mem.total, _mem.free, - _mem.swp.usep, _mem.swp.inuse, _mem.swp.t, _mem.swp.f, - _mem.bcuse } + return {_mem.usep, _mem.inuse, _mem.total, _mem.free, + _mem.swp.usep, _mem.swp.inuse, _mem.swp.t, _mem.swp.f, + _mem.bcuse } end -- }}} diff --git a/home/.config/awesome/vicious/widgets/mpd.lua b/home/.config/awesome/vicious/widgets/mpd.lua index e4bcb0bb..f32b44bb 100644 --- a/home/.config/awesome/vicious/widgets/mpd.lua +++ b/home/.config/awesome/vicious/widgets/mpd.lua @@ -19,45 +19,45 @@ local mpd = {} -- {{{ MPD widget type local function worker(format, warg) - local mpd_state = { - ["{volume}"] = 0, - ["{state}"] = "N/A", - ["{Artist}"] = "N/A", - ["{Title}"] = "N/A", - ["{Album}"] = "N/A", - ["{Genre}"] = "N/A", - --["{Name}"] = "N/A", - --["{file}"] = "N/A", - } + local mpd_state = { + ["{volume}"] = 0, + ["{state}"] = "N/A", + ["{Artist}"] = "N/A", + ["{Title}"] = "N/A", + ["{Album}"] = "N/A", + ["{Genre}"] = "N/A", + --["{Name}"] = "N/A", + --["{file}"] = "N/A", + } - -- Fallback to MPD defaults - local pass = warg and (warg.password or warg[1]) or "\"\"" - local host = warg and (warg.host or warg[2]) or "127.0.0.1" - local port = warg and (warg.port or warg[3]) or "6600" + -- Fallback to MPD defaults + local pass = warg and (warg.password or warg[1]) or "\"\"" + local host = warg and (warg.host or warg[2]) or "127.0.0.1" + local port = warg and (warg.port or warg[3]) or "6600" - -- Construct MPD client options - local mpdh = "telnet://"..host..":"..port - local echo = "echo 'password "..pass.."\nstatus\ncurrentsong\nclose'" + -- Construct MPD client options + local mpdh = "telnet://"..host..":"..port + local echo = "echo 'password "..pass.."\nstatus\ncurrentsong\nclose'" - -- Get data from MPD server - local f = io.popen(echo.." | curl --connect-timeout 1 -fsm 3 "..mpdh) + -- Get data from MPD server + local f = io.popen(echo.." | curl --connect-timeout 1 -fsm 3 "..mpdh) - for line in f:lines() do - for k, v in string.gmatch(line, "([%w]+):[%s](.*)$") do - if k == "volume" then mpd_state["{"..k.."}"] = v and tonumber(v) - elseif k == "state" then mpd_state["{"..k.."}"] = helpers.capitalize(v) - elseif k == "Artist" then mpd_state["{"..k.."}"] = helpers.escape(v) - elseif k == "Title" then mpd_state["{"..k.."}"] = helpers.escape(v) - elseif k == "Album" then mpd_state["{"..k.."}"] = helpers.escape(v) - elseif k == "Genre" then mpd_state["{"..k.."}"] = helpers.escape(v) - --elseif k == "Name" then mpd_state["{"..k.."}"] = helpers.escape(v) - --elseif k == "file" then mpd_state["{"..k.."}"] = helpers.escape(v) - end - end + for line in f:lines() do + for k, v in string.gmatch(line, "([%w]+):[%s](.*)$") do + if k == "volume" then mpd_state["{"..k.."}"] = v and tonumber(v) + elseif k == "state" then mpd_state["{"..k.."}"] = helpers.capitalize(v) + elseif k == "Artist" then mpd_state["{"..k.."}"] = helpers.escape(v) + elseif k == "Title" then mpd_state["{"..k.."}"] = helpers.escape(v) + elseif k == "Album" then mpd_state["{"..k.."}"] = helpers.escape(v) + elseif k == "Genre" then mpd_state["{"..k.."}"] = helpers.escape(v) + --elseif k == "Name" then mpd_state["{"..k.."}"] = helpers.escape(v) + --elseif k == "file" then mpd_state["{"..k.."}"] = helpers.escape(v) + end end - f:close() + end + f:close() - return mpd_state + return mpd_state end -- }}} diff --git a/home/.config/awesome/vicious/widgets/net.lua b/home/.config/awesome/vicious/widgets/net.lua index d81d0123..4a170d0d 100644 --- a/home/.config/awesome/vicious/widgets/net.lua +++ b/home/.config/awesome/vicious/widgets/net.lua @@ -23,57 +23,57 @@ local net = {} local nets = {} -- Variable definitions local unit = { ["b"] = 1, ["kb"] = 1024, - ["mb"] = 1024^2, ["gb"] = 1024^3 + ["mb"] = 1024^2, ["gb"] = 1024^3 } -- {{{ Net widget type local function worker(format) - local args = {} + local args = {} - -- Get NET stats - for line in io.lines("/proc/net/dev") do - -- Match wmaster0 as well as rt0 (multiple leading spaces) - local name = string.match(line, "^[%s]?[%s]?[%s]?[%s]?([%w]+):") - if name ~= nil then - -- Received bytes, first value after the name - local recv = tonumber(string.match(line, ":[%s]*([%d]+)")) - -- Transmited bytes, 7 fields from end of the line - local send = tonumber(string.match(line, - "([%d]+)%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d$")) + -- Get NET stats + for line in io.lines("/proc/net/dev") do + -- Match wmaster0 as well as rt0 (multiple leading spaces) + local name = string.match(line, "^[%s]?[%s]?[%s]?[%s]?([%w]+):") + if name ~= nil then + -- Received bytes, first value after the name + local recv = tonumber(string.match(line, ":[%s]*([%d]+)")) + -- Transmited bytes, 7 fields from end of the line + local send = tonumber(string.match(line, + "([%d]+)%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d$")) - helpers.uformat(args, name .. " rx", recv, unit) - helpers.uformat(args, name .. " tx", send, unit) + helpers.uformat(args, name .. " rx", recv, unit) + helpers.uformat(args, name .. " tx", send, unit) - -- Operational state and carrier detection - local sysnet = helpers.pathtotable("/sys/class/net/" .. name) - args["{"..name.." carrier}"] = tonumber(sysnet.carrier) or 0 + -- Operational state and carrier detection + local sysnet = helpers.pathtotable("/sys/class/net/" .. name) + args["{"..name.." carrier}"] = tonumber(sysnet.carrier) or 0 - local now = os.time() - if nets[name] == nil then - -- Default values on the first run - nets[name] = {} - helpers.uformat(args, name .. " down", 0, unit) - helpers.uformat(args, name .. " up", 0, unit) - else -- Net stats are absolute, substract our last reading - local interval = now - nets[name].time - if interval <= 0 then interval = 1 end + local now = os.time() + if nets[name] == nil then + -- Default values on the first run + nets[name] = {} + helpers.uformat(args, name .. " down", 0, unit) + helpers.uformat(args, name .. " up", 0, unit) + else -- Net stats are absolute, substract our last reading + local interval = now - nets[name].time + if interval <= 0 then interval = 1 end - local down = (recv - nets[name][1]) / interval - local up = (send - nets[name][2]) / interval + local down = (recv - nets[name][1]) / interval + local up = (send - nets[name][2]) / interval - helpers.uformat(args, name .. " down", down, unit) - helpers.uformat(args, name .. " up", up, unit) - end + helpers.uformat(args, name .. " down", down, unit) + helpers.uformat(args, name .. " up", up, unit) + end - nets[name].time = now + nets[name].time = now - -- Store totals - nets[name][1] = recv - nets[name][2] = send - end + -- Store totals + nets[name][1] = recv + nets[name][2] = send end + end - return args + return args end -- }}} diff --git a/home/.config/awesome/vicious/widgets/org.lua b/home/.config/awesome/vicious/widgets/org.lua index 5254ab77..6f46768b 100644 --- a/home/.config/awesome/vicious/widgets/org.lua +++ b/home/.config/awesome/vicious/widgets/org.lua @@ -9,8 +9,8 @@ local io = { lines = io.lines } local setmetatable = setmetatable local string = { find = string.find } local os = { - time = os.time, - date = os.date + time = os.time, + date = os.date } -- }}} @@ -22,40 +22,40 @@ local org = {} -- {{{ OrgMode widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - -- Compute delays - local today = os.time{ year=os.date("%Y"), month=os.date("%m"), day=os.date("%d") } - local soon = today + 24 * 3600 * 3 -- 3 days ahead is close - local future = today + 24 * 3600 * 7 -- 7 days ahead is maximum + -- Compute delays + local today = os.time{ year=os.date("%Y"), month=os.date("%m"), day=os.date("%d") } + local soon = today + 24 * 3600 * 3 -- 3 days ahead is close + local future = today + 24 * 3600 * 7 -- 7 days ahead is maximum - -- Initialize counters - local count = { past = 0, today = 0, soon = 0, future = 0 } + -- Initialize counters + local count = { past = 0, today = 0, soon = 0, future = 0 } - -- Get data from agenda files - for i=1, #warg do - for line in io.lines(warg[i]) do - local scheduled = string.find(line, "SCHEDULED:") - local closed = string.find(line, "CLOSED:") - local deadline = string.find(line, "DEADLINE:") + -- Get data from agenda files + for i=1, #warg do + for line in io.lines(warg[i]) do + local scheduled = string.find(line, "SCHEDULED:") + local closed = string.find(line, "CLOSED:") + local deadline = string.find(line, "DEADLINE:") - if (scheduled and not closed) or (deadline and not closed) then - local b, e, y, m, d = string.find(line, "(%d%d%d%d)-(%d%d)-(%d%d)") + if (scheduled and not closed) or (deadline and not closed) then + local b, e, y, m, d = string.find(line, "(%d%d%d%d)-(%d%d)-(%d%d)") - if b then - local t = os.time{ year = y, month = m, day = d } + if b then + local t = os.time{ year = y, month = m, day = d } - if t < today then count.past = count.past + 1 - elseif t == today then count.today = count.today + 1 - elseif t <= soon then count.soon = count.soon + 1 - elseif t <= future then count.future = count.future + 1 - end - end + if t < today then count.past = count.past + 1 + elseif t == today then count.today = count.today + 1 + elseif t <= soon then count.soon = count.soon + 1 + elseif t <= future then count.future = count.future + 1 end - end + end + end end + end - return {count.past, count.today, count.soon, count.future} + return {count.past, count.today, count.soon, count.future} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/os.lua b/home/.config/awesome/vicious/widgets/os.lua index 52180e35..b2eae002 100644 --- a/home/.config/awesome/vicious/widgets/os.lua +++ b/home/.config/awesome/vicious/widgets/os.lua @@ -12,8 +12,8 @@ local los = { getenv = os.getenv } local setmetatable = setmetatable local helpers = require("vicious.helpers") local string = { - gsub = string.gsub, - match = string.match + gsub = string.gsub, + match = string.match } -- }}} @@ -25,48 +25,48 @@ local os = {} -- {{{ Operating system widget type local function worker(format) - local system = { - ["ostype"] = "N/A", - ["hostname"] = "N/A", - ["osrelease"] = "N/A", - ["username"] = "N/A", - ["entropy"] = "N/A", - ["entropy_p"] = "N/A" - } + local system = { + ["ostype"] = "N/A", + ["hostname"] = "N/A", + ["osrelease"] = "N/A", + ["username"] = "N/A", + ["entropy"] = "N/A", + ["entropy_p"] = "N/A" + } - -- Linux manual page: uname(2) - local kernel = helpers.pathtotable("/proc/sys/kernel") - for k, v in pairs(system) do - if kernel[k] then - system[k] = string.gsub(kernel[k], "[%s]*$", "") - end + -- Linux manual page: uname(2) + local kernel = helpers.pathtotable("/proc/sys/kernel") + for k, v in pairs(system) do + if kernel[k] then + system[k] = string.gsub(kernel[k], "[%s]*$", "") end + end - -- BSD manual page: uname(1) - if system["ostype"] == "N/A" then - local f = io.popen("uname -snr") - local uname = f:read("*line") - f:close() + -- BSD manual page: uname(1) + if system["ostype"] == "N/A" then + local f = io.popen("uname -snr") + local uname = f:read("*line") + f:close() - system["ostype"], system["hostname"], system["osrelease"] = - string.match(uname, "([%w]+)[%s]([%w%p]+)[%s]([%w%p]+)") - end + system["ostype"], system["hostname"], system["osrelease"] = + string.match(uname, "([%w]+)[%s]([%w%p]+)[%s]([%w%p]+)") + end - -- Linux manual page: random(4) - if kernel.random then - -- Linux 2.6 default entropy pool is 4096-bits - local poolsize = tonumber(kernel.random.poolsize) + -- Linux manual page: random(4) + if kernel.random then + -- Linux 2.6 default entropy pool is 4096-bits + local poolsize = tonumber(kernel.random.poolsize) - -- Get available entropy and calculate percentage - system["entropy"] = tonumber(kernel.random.entropy_avail) - system["entropy_p"] = math.ceil(system["entropy"] * 100 / poolsize) - end + -- Get available entropy and calculate percentage + system["entropy"] = tonumber(kernel.random.entropy_avail) + system["entropy_p"] = math.ceil(system["entropy"] * 100 / poolsize) + end - -- Get user from the environment - system["username"] = los.getenv("USER") + -- Get user from the environment + system["username"] = los.getenv("USER") - return {system["ostype"], system["osrelease"], system["username"], - system["hostname"], system["entropy"], system["entropy_p"]} + return {system["ostype"], system["osrelease"], system["username"], + system["hostname"], system["entropy"], system["entropy_p"]} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/pkg.lua b/home/.config/awesome/vicious/widgets/pkg.lua index f552b9f5..18d1c65d 100644 --- a/home/.config/awesome/vicious/widgets/pkg.lua +++ b/home/.config/awesome/vicious/widgets/pkg.lua @@ -17,31 +17,31 @@ local pkg = {} -- {{{ Packages widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - -- Initialize counters - local updates = 0 - local manager = { - ["Arch"] = { cmd = "pacman -Qu" }, - ["Arch C"] = { cmd = "checkupdates" }, - ["Arch S"] = { cmd = "yes | pacman -Sup", sub = 1 }, - ["Debian"] = { cmd = "apt-show-versions -u -b" }, - ["Ubuntu"] = { cmd = "aptitude search '~U'" }, - ["Fedora"] = { cmd = "yum list updates", sub = 3 }, - ["FreeBSD"] ={ cmd = "pkg_version -I -l '<'" }, - ["Mandriva"]={ cmd = "urpmq --auto-select" } - } + -- Initialize counters + local updates = 0 + local manager = { + ["Arch"] = { cmd = "pacman -Qu" }, + ["Arch C"] = { cmd = "checkupdates" }, + ["Arch S"] = { cmd = "yes | pacman -Sup", sub = 1 }, + ["Debian"] = { cmd = "apt-show-versions -u -b" }, + ["Ubuntu"] = { cmd = "aptitude search '~U'" }, + ["Fedora"] = { cmd = "yum list updates", sub = 3 }, + ["FreeBSD"] ={ cmd = "pkg_version -I -l '<'" }, + ["Mandriva"]={ cmd = "urpmq --auto-select" } + } - -- Check if updates are available - local _pkg = manager[warg] - local f = io.popen(_pkg.cmd) + -- Check if updates are available + local _pkg = manager[warg] + local f = io.popen(_pkg.cmd) - for line in f:lines() do - updates = updates + 1 - end - f:close() + for line in f:lines() do + updates = updates + 1 + end + f:close() - return {_pkg.sub and math.max(updates-_pkg.sub, 0) or updates} + return {_pkg.sub and math.max(updates-_pkg.sub, 0) or updates} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/raid.lua b/home/.config/awesome/vicious/widgets/raid.lua index eafb1189..7f40baa3 100644 --- a/home/.config/awesome/vicious/widgets/raid.lua +++ b/home/.config/awesome/vicious/widgets/raid.lua @@ -7,10 +7,10 @@ local io = { open = io.open } local setmetatable = setmetatable local string = { - len = string.len, - sub = string.sub, - match = string.match, - gmatch = string.gmatch + len = string.len, + sub = string.sub, + match = string.match, + gmatch = string.gmatch } -- }}} @@ -25,35 +25,35 @@ local mddev = {} -- {{{ RAID widget type local function worker(format, warg) - if not warg then return end - mddev[warg] = { - ["found"] = false, - ["active"] = 0, - ["assigned"] = 0 - } + if not warg then return end + mddev[warg] = { + ["found"] = false, + ["active"] = 0, + ["assigned"] = 0 + } - -- Linux manual page: md(4) - local f = io.open("/proc/mdstat") - for line in f:lines() do - if mddev[warg]["found"] then - local updev = string.match(line, "%[[_U]+%]") + -- Linux manual page: md(4) + local f = io.open("/proc/mdstat") + for line in f:lines() do + if mddev[warg]["found"] then + local updev = string.match(line, "%[[_U]+%]") - for i in string.gmatch(updev, "U") do - mddev[warg]["active"] = mddev[warg]["active"] + 1 - end + for i in string.gmatch(updev, "U") do + mddev[warg]["active"] = mddev[warg]["active"] + 1 + end - break - elseif string.sub(line, 1, string.len(warg)) == warg then - mddev[warg]["found"] = true + break + elseif string.sub(line, 1, string.len(warg)) == warg then + mddev[warg]["found"] = true - for i in string.gmatch(line, "%[[%d]%]") do - mddev[warg]["assigned"] = mddev[warg]["assigned"] + 1 - end - end + for i in string.gmatch(line, "%[[%d]%]") do + mddev[warg]["assigned"] = mddev[warg]["assigned"] + 1 + end end - f:close() + end + f:close() - return {mddev[warg]["assigned"], mddev[warg]["active"]} + return {mddev[warg]["assigned"], mddev[warg]["active"]} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/thermal.lua b/home/.config/awesome/vicious/widgets/thermal.lua index 7592b72b..94a76bef 100644 --- a/home/.config/awesome/vicious/widgets/thermal.lua +++ b/home/.config/awesome/vicious/widgets/thermal.lua @@ -19,28 +19,28 @@ local thermal = {} -- {{{ Thermal widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - local zone = { -- Known temperature data sources - ["sys"] = {"/sys/class/thermal/", file = "temp", div = 1000}, - ["core"] = {"/sys/devices/platform/", file = "temp2_input",div = 1000}, - ["proc"] = {"/proc/acpi/thermal_zone/",file = "temperature"} - } -- Default to /sys/class/thermal - warg = type(warg) == "table" and warg or { warg, "sys" } + local zone = { -- Known temperature data sources + ["sys"] = {"/sys/class/thermal/", file = "temp", div = 1000}, + ["core"] = {"/sys/devices/platform/", file = "temp2_input",div = 1000}, + ["proc"] = {"/proc/acpi/thermal_zone/",file = "temperature"} + } -- Default to /sys/class/thermal + warg = type(warg) == "table" and warg or { warg, "sys" } - -- Get temperature from thermal zone - local _thermal = helpers.pathtotable(zone[warg[2]][1] .. warg[1]) + -- Get temperature from thermal zone + local _thermal = helpers.pathtotable(zone[warg[2]][1] .. warg[1]) - local data = warg[3] and _thermal[warg[3]] or _thermal[zone[warg[2]].file] - if data then - if zone[warg[2]].div then - return {data / zone[warg[2]].div} - else -- /proc/acpi "temperature: N C" - return {tonumber(string.match(data, "[%d]+"))} - end + local data = warg[3] and _thermal[warg[3]] or _thermal[zone[warg[2]].file] + if data then + if zone[warg[2]].div then + return {data / zone[warg[2]].div} + else -- /proc/acpi "temperature: N C" + return {tonumber(string.match(data, "[%d]+"))} end + end - return {0} + return {0} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/uptime.lua b/home/.config/awesome/vicious/widgets/uptime.lua index 0e996ac3..2006aa3b 100644 --- a/home/.config/awesome/vicious/widgets/uptime.lua +++ b/home/.config/awesome/vicious/widgets/uptime.lua @@ -19,17 +19,17 @@ local uptime = {} -- {{{ Uptime widget type local function worker(format) - local proc = helpers.pathtotable("/proc") + local proc = helpers.pathtotable("/proc") - -- Get system uptime - local up_t = math.floor(string.match(proc.uptime, "[%d]+")) - local up_d = math.floor(up_t / (3600 * 24)) - local up_h = math.floor((up_t % (3600 * 24)) / 3600) - local up_m = math.floor(((up_t % (3600 * 24)) % 3600) / 60) + -- Get system uptime + local up_t = math.floor(string.match(proc.uptime, "[%d]+")) + local up_d = math.floor(up_t / (3600 * 24)) + local up_h = math.floor((up_t % (3600 * 24)) / 3600) + local up_m = math.floor(((up_t % (3600 * 24)) % 3600) / 60) - local l1, l5, l15 = -- Get load averages for past 1, 5 and 15 minutes - string.match(proc.loadavg, "([%d%.]+)[%s]([%d%.]+)[%s]([%d%.]+)") - return {up_d, up_h, up_m, l1, l5, l15} + local l1, l5, l15 = -- Get load averages for past 1, 5 and 15 minutes + string.match(proc.loadavg, "([%d%.]+)[%s]([%d%.]+)[%s]([%d%.]+)") + return {up_d, up_h, up_m, l1, l5, l15} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/volume.lua b/home/.config/awesome/vicious/widgets/volume.lua index 57970a36..959fa73d 100644 --- a/home/.config/awesome/vicious/widgets/volume.lua +++ b/home/.config/awesome/vicious/widgets/volume.lua @@ -19,35 +19,35 @@ local volume = {} -- {{{ Volume widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - local mixer_state = { - ["on"] = "♫", -- "", - ["off"] = "♩" -- "M" - } + local mixer_state = { + ["on"] = "♫", -- "", + ["off"] = "♩" -- "M" + } - -- Get mixer control contents - local f = io.popen("amixer -M get " .. helpers.shellquote(warg)) - local mixer = f:read("*all") - f:close() + -- Get mixer control contents + local f = io.popen("amixer -M get " .. helpers.shellquote(warg)) + local mixer = f:read("*all") + f:close() - -- Capture mixer control state: [5%] ... ... [on] - local volu, mute = string.match(mixer, "([%d]+)%%.*%[([%l]*)") - -- Handle mixers without data - if volu == nil then - return {0, mixer_state["off"]} - end + -- Capture mixer control state: [5%] ... ... [on] + local volu, mute = string.match(mixer, "([%d]+)%%.*%[([%l]*)") + -- Handle mixers without data + if volu == nil then + return {0, mixer_state["off"]} + end - -- Handle mixers without mute - if mute == "" and volu == "0" - -- Handle mixers that are muted - or mute == "off" then - mute = mixer_state["off"] - else - mute = mixer_state["on"] - end + -- Handle mixers without mute + if mute == "" and volu == "0" + -- Handle mixers that are muted + or mute == "off" then + mute = mixer_state["off"] + else + mute = mixer_state["on"] + end - return {tonumber(volu), mute} + return {tonumber(volu), mute} end -- }}} diff --git a/home/.config/awesome/vicious/widgets/weather.lua b/home/.config/awesome/vicious/widgets/weather.lua index 632d5b9d..c4957f77 100644 --- a/home/.config/awesome/vicious/widgets/weather.lua +++ b/home/.config/awesome/vicious/widgets/weather.lua @@ -20,74 +20,74 @@ local weather = {} -- Initialize function tables local _weather = { - ["{city}"] = "N/A", - ["{wind}"] = "N/A", - ["{windmph}"] = "N/A", - ["{windkmh}"] = "N/A", - ["{sky}"] = "N/A", - ["{weather}"] = "N/A", - ["{tempf}"] = "N/A", - ["{tempc}"] = "N/A", - ["{dewf}"] = "N/A", - ["{dewc}"] = "N/A", - ["{humid}"] = "N/A", - ["{press}"] = "N/A" + ["{city}"] = "N/A", + ["{wind}"] = "N/A", + ["{windmph}"] = "N/A", + ["{windkmh}"] = "N/A", + ["{sky}"] = "N/A", + ["{weather}"] = "N/A", + ["{tempf}"] = "N/A", + ["{tempc}"] = "N/A", + ["{dewf}"] = "N/A", + ["{dewc}"] = "N/A", + ["{humid}"] = "N/A", + ["{press}"] = "N/A" } -- {{{ Weather widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - -- Get weather forceast by the station ICAO code, from: - -- * US National Oceanic and Atmospheric Administration - local url = "http://weather.noaa.gov/pub/data/observations/metar/decoded/"..warg - local f = io.popen("curl --connect-timeout 1 -fsm 3 "..helpers.shellquote(url)..".TXT") - local ws = f:read("*all") - f:close() + -- Get weather forceast by the station ICAO code, from: + -- * US National Oceanic and Atmospheric Administration + local url = "http://weather.noaa.gov/pub/data/observations/metar/decoded/"..warg + local f = io.popen("curl --connect-timeout 1 -fsm 3 "..helpers.shellquote(url)..".TXT") + local ws = f:read("*all") + f:close() - -- Check if there was a timeout or a problem with the station - if ws == nil then return _weather end + -- Check if there was a timeout or a problem with the station + if ws == nil then return _weather end - _weather["{city}"] = -- City and/or area - string.match(ws, "^(.+)%,.*%([%u]+%)") or _weather["{city}"] - _weather["{wind}"] = -- Wind direction and degrees if available - string.match(ws, "Wind:[%s][%a]+[%s][%a]+[%s](.+)[%s]at.+$") or _weather["{wind}"] - _weather["{windmph}"] = -- Wind speed in MPH if available - string.match(ws, "Wind:[%s].+[%s]at[%s]([%d]+)[%s]MPH") or _weather["{windmph}"] - _weather["{sky}"] = -- Sky conditions if available - string.match(ws, "Sky[%s]conditions:[%s](.-)[%c]") or _weather["{sky}"] - _weather["{weather}"] = -- Weather conditions if available - string.match(ws, "Weather:[%s](.-)[%c]") or _weather["{weather}"] - _weather["{tempf}"] = -- Temperature in fahrenheit - string.match(ws, "Temperature:[%s]([%-]?[%d%.]+).*[%c]") or _weather["{tempf}"] - _weather["{dewf}"] = -- Dew Point in fahrenheit - string.match(ws, "Dew[%s]Point:[%s]([%-]?[%d%.]+).*[%c]") or _weather["{dewf}"] - _weather["{humid}"] = -- Relative humidity in percent - string.match(ws, "Relative[%s]Humidity:[%s]([%d]+)%%") or _weather["{humid}"] - _weather["{press}"] = -- Pressure in hPa - string.match(ws, "Pressure[%s].+%((.+)[%s]hPa%)") or _weather["{press}"] + _weather["{city}"] = -- City and/or area + string.match(ws, "^(.+)%,.*%([%u]+%)") or _weather["{city}"] + _weather["{wind}"] = -- Wind direction and degrees if available + string.match(ws, "Wind:[%s][%a]+[%s][%a]+[%s](.+)[%s]at.+$") or _weather["{wind}"] + _weather["{windmph}"] = -- Wind speed in MPH if available + string.match(ws, "Wind:[%s].+[%s]at[%s]([%d]+)[%s]MPH") or _weather["{windmph}"] + _weather["{sky}"] = -- Sky conditions if available + string.match(ws, "Sky[%s]conditions:[%s](.-)[%c]") or _weather["{sky}"] + _weather["{weather}"] = -- Weather conditions if available + string.match(ws, "Weather:[%s](.-)[%c]") or _weather["{weather}"] + _weather["{tempf}"] = -- Temperature in fahrenheit + string.match(ws, "Temperature:[%s]([%-]?[%d%.]+).*[%c]") or _weather["{tempf}"] + _weather["{dewf}"] = -- Dew Point in fahrenheit + string.match(ws, "Dew[%s]Point:[%s]([%-]?[%d%.]+).*[%c]") or _weather["{dewf}"] + _weather["{humid}"] = -- Relative humidity in percent + string.match(ws, "Relative[%s]Humidity:[%s]([%d]+)%%") or _weather["{humid}"] + _weather["{press}"] = -- Pressure in hPa + string.match(ws, "Pressure[%s].+%((.+)[%s]hPa%)") or _weather["{press}"] - -- Wind speed in km/h if MPH was available - if _weather["{windmph}"] ~= "N/A" then - _weather["{windmph}"] = tonumber(_weather["{windmph}"]) - _weather["{windkmh}"] = math.ceil(_weather["{windmph}"] * 1.6) - end -- Temperature in °C if °F was available - if _weather["{tempf}"] ~= "N/A" then - _weather["{tempf}"] = tonumber(_weather["{tempf}"]) - _weather["{tempc}"] = math.ceil((_weather["{tempf}"] - 32) * 5/9) - end -- Dew Point in °C if °F was available - if _weather["{dewf}"] ~= "N/A" then - _weather["{dewf}"] = tonumber(_weather["{dewf}"]) - _weather["{dewc}"] = math.ceil((_weather["{dewf}"] - 32) * 5/9) - end -- Capitalize some stats so they don't look so out of place - if _weather["{sky}"] ~= "N/A" then - _weather["{sky}"] = helpers.capitalize(_weather["{sky}"]) - end - if _weather["{weather}"] ~= "N/A" then - _weather["{weather}"] = helpers.capitalize(_weather["{weather}"]) - end + -- Wind speed in km/h if MPH was available + if _weather["{windmph}"] ~= "N/A" then + _weather["{windmph}"] = tonumber(_weather["{windmph}"]) + _weather["{windkmh}"] = math.ceil(_weather["{windmph}"] * 1.6) + end -- Temperature in °C if °F was available + if _weather["{tempf}"] ~= "N/A" then + _weather["{tempf}"] = tonumber(_weather["{tempf}"]) + _weather["{tempc}"] = math.ceil((_weather["{tempf}"] - 32) * 5/9) + end -- Dew Point in °C if °F was available + if _weather["{dewf}"] ~= "N/A" then + _weather["{dewf}"] = tonumber(_weather["{dewf}"]) + _weather["{dewc}"] = math.ceil((_weather["{dewf}"] - 32) * 5/9) + end -- Capitalize some stats so they don't look so out of place + if _weather["{sky}"] ~= "N/A" then + _weather["{sky}"] = helpers.capitalize(_weather["{sky}"]) + end + if _weather["{weather}"] ~= "N/A" then + _weather["{weather}"] = helpers.capitalize(_weather["{weather}"]) + end - return _weather + return _weather end -- }}} diff --git a/home/.config/awesome/vicious/widgets/wifi.lua b/home/.config/awesome/vicious/widgets/wifi.lua index 973f109d..503471a3 100644 --- a/home/.config/awesome/vicious/widgets/wifi.lua +++ b/home/.config/awesome/vicious/widgets/wifi.lua @@ -9,12 +9,12 @@ local math = { ceil = math.ceil } local setmetatable = setmetatable local helpers = require("vicious.helpers") local io = { - open = io.open, - popen = io.popen + open = io.open, + popen = io.popen } local string = { - find = string.find, - match = string.match + find = string.find, + match = string.match } -- }}} @@ -32,60 +32,60 @@ local iwcpaths = { "/sbin", "/usr/sbin", "/usr/local/sbin", "/usr/bin" } -- {{{ Wireless widget type local function worker(format, warg) - if not warg then return end + if not warg then return end - -- Default values - local winfo = { - ["{ssid}"] = "N/A", - ["{mode}"] = "N/A", - ["{chan}"] = 0, - ["{rate}"] = 0, - ["{link}"] = 0, - ["{linp}"] = 0, - ["{sign}"] = 0 - } + -- Default values + local winfo = { + ["{ssid}"] = "N/A", + ["{mode}"] = "N/A", + ["{chan}"] = 0, + ["{rate}"] = 0, + ["{link}"] = 0, + ["{linp}"] = 0, + ["{sign}"] = 0 + } - -- Sbin paths aren't in user PATH, search for the binary - if iwconfig == "iwconfig" then - for _, p in ipairs(iwcpaths) do - local f = io.open(p .. "/iwconfig", "rb") - if f then - iwconfig = p .. "/iwconfig" - f:close() - break - end - end + -- Sbin paths aren't in user PATH, search for the binary + if iwconfig == "iwconfig" then + for _, p in ipairs(iwcpaths) do + local f = io.open(p .. "/iwconfig", "rb") + if f then + iwconfig = p .. "/iwconfig" + f:close() + break + end end + end - -- Get data from iwconfig where available - local f = io.popen(iwconfig .." ".. helpers.shellquote(warg) .. " 2>&1") - local iw = f:read("*all") - f:close() - - -- iwconfig wasn't found, isn't executable, or non-wireless interface - if iw == nil or string.find(iw, "No such device") then - return winfo - end - - -- Output differs from system to system, some stats can be - -- separated by =, and not all drivers report all stats - winfo["{ssid}"] = -- SSID can have almost anything in it - helpers.escape(string.match(iw, 'ESSID[=:]"(.-)"') or winfo["{ssid}"]) - winfo["{mode}"] = -- Modes are simple, but also match the "-" in Ad-Hoc - string.match(iw, "Mode[=:]([%w%-]*)") or winfo["{mode}"] - winfo["{chan}"] = -- Channels are plain digits - tonumber(string.match(iw, "Channel[=:]([%d]+)") or winfo["{chan}"]) - winfo["{rate}"] = -- Bitrate can start with a space, we don't want to display Mb/s - tonumber(string.match(iw, "Bit Rate[=:]([%s]?[%d%.]*)") or winfo["{rate}"]) - winfo["{link}"] = -- Link quality can contain a slash (32/70), match only the first number - tonumber(string.match(iw, "Link Quality[=:]([%d]+)") or winfo["{link}"]) - winfo["{sign}"] = -- Signal level can be a negative value, don't display decibel notation - tonumber(string.match(iw, "Signal level[=:]([%-]?[%d]+)") or winfo["{sign}"]) - - -- Link quality percentage if quality was available - if winfo["{link}"] ~= 0 then winfo["{linp}"] = math.ceil(winfo["{link}"] / 0.7) end + -- Get data from iwconfig where available + local f = io.popen(iwconfig .." ".. helpers.shellquote(warg) .. " 2>&1") + local iw = f:read("*all") + f:close() + -- iwconfig wasn't found, isn't executable, or non-wireless interface + if iw == nil or string.find(iw, "No such device") then return winfo + end + + -- Output differs from system to system, some stats can be + -- separated by =, and not all drivers report all stats + winfo["{ssid}"] = -- SSID can have almost anything in it + helpers.escape(string.match(iw, 'ESSID[=:]"(.-)"') or winfo["{ssid}"]) + winfo["{mode}"] = -- Modes are simple, but also match the "-" in Ad-Hoc + string.match(iw, "Mode[=:]([%w%-]*)") or winfo["{mode}"] + winfo["{chan}"] = -- Channels are plain digits + tonumber(string.match(iw, "Channel[=:]([%d]+)") or winfo["{chan}"]) + winfo["{rate}"] = -- Bitrate can start with a space, we don't want to display Mb/s + tonumber(string.match(iw, "Bit Rate[=:]([%s]?[%d%.]*)") or winfo["{rate}"]) + winfo["{link}"] = -- Link quality can contain a slash (32/70), match only the first number + tonumber(string.match(iw, "Link Quality[=:]([%d]+)") or winfo["{link}"]) + winfo["{sign}"] = -- Signal level can be a negative value, don't display decibel notation + tonumber(string.match(iw, "Signal level[=:]([%-]?[%d]+)") or winfo["{sign}"]) + + -- Link quality percentage if quality was available + if winfo["{link}"] ~= 0 then winfo["{linp}"] = math.ceil(winfo["{link}"] / 0.7) end + + return winfo end -- }}} diff --git a/home/.config/awesome/wi.lua b/home/.config/awesome/wi.lua index 6aeef342..f297dc2c 100644 --- a/home/.config/awesome/wi.lua +++ b/home/.config/awesome/wi.lua @@ -22,32 +22,32 @@ baticon:set_image(beautiful.widget_batfull) -- Charge % batpct = wibox.widget.textbox() vicious.register(batpct, vicious.widgets.bat, function(widget, args) - bat_state = args[1] - bat_charge = args[2] - bat_time = args[3] + bat_state = args[1] + bat_charge = args[2] + bat_time = args[3] - if args[1] == "-" then - if bat_charge > 70 then - baticon:set_image(beautiful.widget_batfull) - elseif bat_charge > 30 then - baticon:set_image(beautiful.widget_batmed) - elseif bat_charge > 10 then - baticon:set_image(beautiful.widget_batlow) - else - baticon:set_image(beautiful.widget_batempty) - end - else - baticon:set_image(beautiful.widget_ac) - if args[1] == "+" then - blink = not blink - if blink then - baticon:set_image(beautiful.widget_acblink) - end - end - end + if args[1] == "-" then + if bat_charge > 70 then + baticon:set_image(beautiful.widget_batfull) + elseif bat_charge > 30 then + baticon:set_image(beautiful.widget_batmed) + elseif bat_charge > 10 then + baticon:set_image(beautiful.widget_batlow) + else + baticon:set_image(beautiful.widget_batempty) + end + else + baticon:set_image(beautiful.widget_ac) + if args[1] == "+" then + blink = not blink + if blink then + baticon:set_image(beautiful.widget_acblink) + end + end + end - return args[2] .. "%" -end, nil, "BAT1") + return args[2] .. "%" + end, nil, "BAT1") -- Buttons function popup_bat() @@ -67,7 +67,7 @@ function popup_bat() end naughty.notify { text = "Charge : " .. bat_charge .. "%\nState : " .. state .. - " (" .. bat_time .. ")", timeout = 5, hover_timeout = 0.5 } + " (" .. bat_time .. ")", timeout = 5, hover_timeout = 0.5 } end batpct:buttons(awful.util.table.join(awful.button({ }, 1, popup_bat))) baticon:buttons(batpct:buttons()) @@ -81,30 +81,30 @@ pacicon:set_image(beautiful.widget_pac) -- Upgrades pacwidget = wibox.widget.textbox() vicious.register(pacwidget, vicious.widgets.pkg, function(widget, args) - if args[1] > 0 then - pacicon:set_image(beautiful.widget_pacnew) - else - pacicon:set_image(beautiful.widget_pac) - end + if args[1] > 0 then + pacicon:set_image(beautiful.widget_pacnew) + else + pacicon:set_image(beautiful.widget_pac) + end - return args[1] - end, 1801, "Arch S") -- Arch S for ignorepkg + return args[1] + end, 1801, "Arch S") -- Arch S for ignorepkg -- -- Buttons - function popup_pac() +function popup_pac() local pac_updates = "" local f = io.popen("pacman -Sup --dbpath /tmp/pacsync") if f then - pac_updates = f:read("*a"):match(".*/(.*)-.*\n$") + pac_updates = f:read("*a"):match(".*/(.*)-.*\n$") end f:close() if not pac_updates then - pac_updates = "System is up to date" + pac_updates = "System is up to date" end naughty.notify { text = pac_updates } - end - pacwidget:buttons(awful.util.table.join(awful.button({ }, 1, popup_pac))) - pacicon:buttons(pacwidget:buttons()) +end +pacwidget:buttons(awful.util.table.join(awful.button({ }, 1, popup_pac))) +pacicon:buttons(pacwidget:buttons()) -- End Pacman }}} -- -- {{{ VOLUME @@ -121,17 +121,17 @@ vicious.register(volpct, vicious.widgets.volume, "$1%", nil, "Master") -- -- Buttons volicon:buttons(awful.util.table.join( - awful.button({ }, 1, - function() awful.util.spawn_with_shell("amixer -q set Master toggle") end), - awful.button({ }, 4, - function() awful.util.spawn_with_shell("amixer -q set Master 3+% unmute") end), - awful.button({ }, 5, - function() awful.util.spawn_with_shell("amixer -q set Master 3-% unmute") end) - )) - volpct:buttons(volicon:buttons()) - volspace:buttons(volicon:buttons()) - -- End Volume }}} - -- + awful.button({ }, 1, + function() awful.util.spawn_with_shell("amixer -q set Master toggle") end), + awful.button({ }, 4, + function() awful.util.spawn_with_shell("amixer -q set Master 3+% unmute") end), + awful.button({ }, 5, + function() awful.util.spawn_with_shell("amixer -q set Master 3-% unmute") end) +)) +volpct:buttons(volicon:buttons()) +volspace:buttons(volicon:buttons()) +-- End Volume }}} +-- -- {{{ Start CPU cpuicon = wibox.widget.imagebox() cpuicon:set_image(beautiful.widget_cpu) @@ -148,7 +148,7 @@ mem = wibox.widget.textbox() vicious.register(mem, vicious.widgets.mem, "Mem: $1% Use: $2MB Total: $3MB Free: $4MB Swap: $5%", 2) -- End Mem }}} -- --- {{{ Start Gmail +-- {{{ Start Gmail --mailicon = wibox.widget.imagebox(beautiful.widget_mail) --mailwidget = wibox.widget.textbox() --gmail_t = awful.tooltip({ objects = { mailwidget },}) @@ -157,7 +157,7 @@ vicious.register(mem, vicious.widgets.mem, "Mem: $1% Use: $2MB Total: $3MB Free: -- gmail_t:set_text(args["{subject}"]) -- gmail_t:add_to_object(mailicon) -- return args["{count}"] --- end, 120) +-- end, 120) -- -- mailicon:buttons(awful.util.table.join( -- awful.button({ }, 1, function () awful.util.spawn("urxvt -e mutt", false) end) diff --git a/home/.config/awesome/widgets/aurup.lua b/home/.config/awesome/widgets/aurup.lua index 771d0185..e936f669 100644 --- a/home/.config/awesome/widgets/aurup.lua +++ b/home/.config/awesome/widgets/aurup.lua @@ -1,33 +1,33 @@ -- {{{ init environment local wakka = {} local capi = { - mouse = mouse, - screen = screen + mouse = mouse, + screen = screen } -- {{{ display -- formats the lines for the notify local function display() - local lines = "AUR Updates:\n" - local f = io.popen("cower -u", "r") - local s = f:read('*all') - line = lines .. "\n" .. s .. "\n" - f:close() - return line + local lines = "AUR Updates:\n" + local f = io.popen("cower -u", "r") + local s = f:read('*all') + line = lines .. "\n" .. s .. "\n" + f:close() + return line end -- }}} -- }}} function wakka.addToWidget(mywidget) - mywidget:add_signal('mouse::enter', function () - usage = naughty.notify({ - text = string.format('%s', "monospace", display()), - timeout = 0, - hover_timeout = 0.5, - screen = capi.mouse.screen - }) - end) - mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) + mywidget:add_signal('mouse::enter', function () + usage = naughty.notify({ + text = string.format('%s', "monospace", display()), + timeout = 0, + hover_timeout = 0.5, + screen = capi.mouse.screen + }) + end) + mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) end -return wakka \ No newline at end of file +return wakka diff --git a/home/.config/awesome/widgets/bitcoin.lua b/home/.config/awesome/widgets/bitcoin.lua index df0225c1..bfb5b7ae 100644 --- a/home/.config/awesome/widgets/bitcoin.lua +++ b/home/.config/awesome/widgets/bitcoin.lua @@ -1,39 +1,39 @@ -- {{{ init environment local wakka = {} local capi = { - mouse = mouse, - screen = screen + mouse = mouse, + screen = screen } -- {{{ display -- formats the lines for the notify local function display() - local lines = "Bitcoin:\n" - local tick = "Ask:\n" - local f = io.popen("bitcoind getbalance", "r") - local t = io.popen("curl -q -s https://api.bitcoinaverage.com/ticker/global/AUD/ask", "r") - local s = f:read('*all') - local g = t:read('*all') - line = lines .. "\n" .. s .. "\n" - ticker = tick .. "\n" .. g .. "\n" - f:close() - t:close() --- return line, ticker - return string.format('%s%s',line, ticker) + local lines = "Bitcoin:\n" + local tick = "Ask:\n" + local f = io.popen("bitcoind getbalance", "r") + local t = io.popen("curl -q -s https://api.bitcoinaverage.com/ticker/global/AUD/ask", "r") + local s = f:read('*all') + local g = t:read('*all') + line = lines .. "\n" .. s .. "\n" + ticker = tick .. "\n" .. g .. "\n" + f:close() + t:close() + -- return line, ticker + return string.format('%s%s',line, ticker) end function wakka.addToWidget(mywidget) - mywidget:add_signal('mouse::enter', function () - run_display = display() - usage = naughty.notify({ - text = string.format('%s', "monospace", run_display), - timeout = 0, - hover_timeout = 0.5, - screen = capi.mouse.screen - }) - end) - mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) + mywidget:add_signal('mouse::enter', function () + run_display = display() + usage = naughty.notify({ + text = string.format('%s', "monospace", run_display), + timeout = 0, + hover_timeout = 0.5, + screen = capi.mouse.screen + }) + end) + mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) end return wakka diff --git a/home/.config/awesome/widgets/gfxtemp.lua b/home/.config/awesome/widgets/gfxtemp.lua index 47140c5a..284895ab 100644 --- a/home/.config/awesome/widgets/gfxtemp.lua +++ b/home/.config/awesome/widgets/gfxtemp.lua @@ -1,33 +1,33 @@ -- {{{ init environment local wakka = {} local capi = { - mouse = mouse, - screen = screen + mouse = mouse, + screen = screen } -- {{{ display -- formats the lines for the notify local function display() - local lines = "GFX Temp:\n" - local f = io.popen("/opt/bin/aticonfig --odgt | grep Temperature | cut -c 43-52", "r") - local s = f:read('*all') - line = lines .. "\n" .. s .. "\n" - f:close() - return line + local lines = "GFX Temp:\n" + local f = io.popen("/opt/bin/aticonfig --odgt | grep Temperature | cut -c 43-52", "r") + local s = f:read('*all') + line = lines .. "\n" .. s .. "\n" + f:close() + return line end -- }}} -- }}} function wakka.addToWidget(mywidget) - mywidget:add_signal('mouse::enter', function () - usage = naughty.notify({ - text = string.format('%s', "monospace", display()), - timeout = 0, - hover_timeout = 0.5, - screen = capi.mouse.screen - }) - end) - mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) + mywidget:add_signal('mouse::enter', function () + usage = naughty.notify({ + text = string.format('%s', "monospace", display()), + timeout = 0, + hover_timeout = 0.5, + screen = capi.mouse.screen + }) + end) + mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) end return wakka diff --git a/home/.config/awesome/widgets/keydoc.lua b/home/.config/awesome/widgets/keydoc.lua index 39232b63..3561cbdd 100644 --- a/home/.config/awesome/widgets/keydoc.lua +++ b/home/.config/awesome/widgets/keydoc.lua @@ -11,8 +11,8 @@ local modkey = "Mod4" local beautiful = require("beautiful") local naughty = require("naughty") local capi = { - root = root, - client = client + root = root, + client = client } module("keydoc") @@ -23,101 +23,101 @@ local orig = awful.key.new -- Replacement for awful.key.new local function new(mod, key, press, release, docstring) - -- Usually, there is no use of release, let's just use it for doc - -- if it's a string. - if press and release and not docstring and type(release) == "string" then - docstring = release - release = nil - end - local k = orig(mod, key, press, release) - -- Remember documentation for this key (we take the first one) - if k and #k > 0 and docstring then - doc[k[1]] = { help = docstring, - group = currentgroup } - end + -- Usually, there is no use of release, let's just use it for doc + -- if it's a string. + if press and release and not docstring and type(release) == "string" then + docstring = release + release = nil + end + local k = orig(mod, key, press, release) + -- Remember documentation for this key (we take the first one) + if k and #k > 0 and docstring then + doc[k[1]] = { help = docstring, + group = currentgroup } + end - return k + return k end awful.key.new = new -- monkey patch -- Turn a key to a string local function key2str(key) - local sym = key.key or key.keysym - local translate = { - ["#14"] = "#", - [" "] = "Space", - } - sym = translate[sym] or sym - if not key.modifiers or #key.modifiers == 0 then return sym end - local result = "" - local translate = { - [modkey] = "⊞", - Shift = "⇧", - Control = "Ctrl", - } - for _, mod in pairs(key.modifiers) do - mod = translate[mod] or mod - result = result .. mod .. " + " - end - return result .. sym + local sym = key.key or key.keysym + local translate = { + ["#14"] = "#", + [" "] = "Space", + } + sym = translate[sym] or sym + if not key.modifiers or #key.modifiers == 0 then return sym end + local result = "" + local translate = { + [modkey] = "⊞", + Shift = "⇧", + Control = "Ctrl", + } + for _, mod in pairs(key.modifiers) do + mod = translate[mod] or mod + result = result .. mod .. " + " + end + return result .. sym end -- Unicode "aware" length function (well, UTF8 aware) -- See: http://lua-users.org/wiki/LuaUnicode local function unilen(str) - local _, count = string.gsub(str, "[^\128-\193]", "") - return count + local _, count = string.gsub(str, "[^\128-\193]", "") + return count end -- Start a new group function group(name) - currentgroup = name - return {} + currentgroup = name + return {} end local function markup(keys) - local result = {} + local result = {} - -- Compute longest key combination - local longest = 0 - for _, key in ipairs(keys) do - if doc[key] then - longest = math.max(longest, unilen(key2str(key))) - end - end + -- Compute longest key combination + local longest = 0 + for _, key in ipairs(keys) do + if doc[key] then + longest = math.max(longest, unilen(key2str(key))) + end + end - local curgroup = nil - for _, key in ipairs(keys) do - if doc[key] then - local help, group = doc[key].help, doc[key].group - local skey = key2str(key) - result[group] = (result[group] or "") .. - ' ' .. - string.format("%" .. (longest - unilen(skey)) .. "s ", "") .. skey .. - ' ' .. - help .. '\n' - end - end + local curgroup = nil + for _, key in ipairs(keys) do + if doc[key] then + local help, group = doc[key].help, doc[key].group + local skey = key2str(key) + result[group] = (result[group] or "") .. + ' ' .. + string.format("%" .. (longest - unilen(skey)) .. "s ", "") .. skey .. + ' ' .. + help .. '\n' + end + end - return result + return result end -- Display help in a naughty notification local nid = nil function display() - local strings = awful.util.table.join( - markup(capi.root.keys()), - capi.client.focus and markup(capi.client.focus:keys()) or {}) + local strings = awful.util.table.join( + markup(capi.root.keys()), + capi.client.focus and markup(capi.client.focus:keys()) or {}) - local result = "" - for group, res in pairs(strings) do - if #result > 0 then result = result .. "\n" end - result = result .. - '' .. - group .. "\n" .. res - end - nid = naughty.notify({ text = result, - replaces_id = nid, - hover_timeout = 0.1, - timeout = 30 }).id + local result = "" + for group, res in pairs(strings) do + if #result > 0 then result = result .. "\n" end + result = result .. + '' .. + group .. "\n" .. res + end + nid = naughty.notify({ text = result, + replaces_id = nid, + hover_timeout = 0.1, + timeout = 30 }).id end diff --git a/home/.config/awesome/widgets/namecoin.lua b/home/.config/awesome/widgets/namecoin.lua index 0cc6026b..245ebd56 100644 --- a/home/.config/awesome/widgets/namecoin.lua +++ b/home/.config/awesome/widgets/namecoin.lua @@ -1,33 +1,33 @@ -- {{{ init environment local wakka = {} local capi = { - mouse = mouse, - screen = screen + mouse = mouse, + screen = screen } -- {{{ display -- formats the lines for the notify local function display() - local lines = "Namecoin:\n" - local f = io.popen("namecoind getbalance", "r") - local s = f:read('*all') - line = lines .. "\n" .. s .. "\n" - f:close() - return line + local lines = "Namecoin:\n" + local f = io.popen("namecoind getbalance", "r") + local s = f:read('*all') + line = lines .. "\n" .. s .. "\n" + f:close() + return line end -- }}} -- }}} function wakka.addToWidget(mywidget) - mywidget:add_signal('mouse::enter', function () - usage = naughty.notify({ - text = string.format('%s', "monospace", display()), - timeout = 0, - hover_timeout = 0.5, - screen = capi.mouse.screen - }) - end) - mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) + mywidget:add_signal('mouse::enter', function () + usage = naughty.notify({ + text = string.format('%s', "monospace", display()), + timeout = 0, + hover_timeout = 0.5, + screen = capi.mouse.screen + }) + end) + mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) end return wakka diff --git a/home/.config/awesome/widgets/pacmanup.lua b/home/.config/awesome/widgets/pacmanup.lua index 51902ae8..f728be7d 100644 --- a/home/.config/awesome/widgets/pacmanup.lua +++ b/home/.config/awesome/widgets/pacmanup.lua @@ -1,33 +1,33 @@ -- {{{ init environment local wakka = {} local capi = { - mouse = mouse, - screen = screen + mouse = mouse, + screen = screen } -- {{{ display -- formats the lines for the notify local function display() - local lines = "Pacman Updates:\n" - local f = io.popen("pacman -Qqu", "r") - local s = f:read('*all') - line = lines .. "\n" .. s .. "\n" - f:close() - return line + local lines = "Pacman Updates:\n" + local f = io.popen("pacman -Qqu", "r") + local s = f:read('*all') + line = lines .. "\n" .. s .. "\n" + f:close() + return line end -- }}} -- }}} function wakka.addToWidget(mywidget) - mywidget:add_signal('mouse::enter', function () - usage = naughty.notify({ - text = string.format('%s', "monospace", display()), - timeout = 0, - hover_timeout = 0.5, - screen = capi.mouse.screen - }) - end) - mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) + mywidget:add_signal('mouse::enter', function () + usage = naughty.notify({ + text = string.format('%s', "monospace", display()), + timeout = 0, + hover_timeout = 0.5, + screen = capi.mouse.screen + }) + end) + mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) end -return wakka \ No newline at end of file +return wakka diff --git a/home/.config/awesome/widgets/sysinf.lua b/home/.config/awesome/widgets/sysinf.lua index 2cfa958d..72aa85a0 100644 --- a/home/.config/awesome/widgets/sysinf.lua +++ b/home/.config/awesome/widgets/sysinf.lua @@ -1,33 +1,33 @@ -- {{{ init environment local wakka = {} local capi = { - mouse = mouse, - screen = screen + mouse = mouse, + screen = screen } -- {{{ display -- formats the lines for the notify local function display() - local lines = "AUR Updates:\n" - local f = io.popen("archey", "r") - local s = f:read('*all') - line = lines .. "\n" .. s .. "\n" - f:close() - return line + local lines = "AUR Updates:\n" + local f = io.popen("archey", "r") + local s = f:read('*all') + line = lines .. "\n" .. s .. "\n" + f:close() + return line end -- }}} -- }}} function wakka.addToWidget(mywidget) - mywidget:add_signal('mouse::enter', function () - usage = naughty.notify({ - text = string.format('%s', "monospace", display()), - timeout = 0, - hover_timeout = 0.5, - screen = capi.mouse.screen - }) - end) - mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) + mywidget:add_signal('mouse::enter', function () + usage = naughty.notify({ + text = string.format('%s', "monospace", display()), + timeout = 0, + hover_timeout = 0.5, + screen = capi.mouse.screen + }) + end) + mywidget:add_signal('mouse::leave', function () naughty.destroy(usage) end) end return wakka diff --git a/home/.config/bspwm/bspwmrc b/home/.config/bspwm/bspwmrc index 798b84d5..4fd7eb53 100755 --- a/home/.config/bspwm/bspwmrc +++ b/home/.config/bspwm/bspwmrc @@ -16,13 +16,11 @@ al-compositor --start & lxpolkit & # panel -al-tint2-session & -sleep 1; start-polybar & - +sleep 1; al-polybar-session & +# Set some bsp specific stuff bspc monitor -d I II III IV V VI VII VIII IX X - bspc config border_width 3 bspc config window_gap 12 bspc config top_padding 18 @@ -37,7 +35,7 @@ bspc config paddingless_monocle true bspc config pointer_modifier mod1 bspc config click_to_focus true -bspc config pointer_action1 move +bspc config pointer_action1 move bspc config pointer_action2 resize_side bspc config pointer_action3 resize_corner diff --git a/home/.config/conky/AL-Default.conkyrc b/home/.config/conky/AL-Default.conkyrc index 4996f6da..b4de46a1 100644 --- a/home/.config/conky/AL-Default.conkyrc +++ b/home/.config/conky/AL-Default.conkyrc @@ -1,81 +1,81 @@ conky.config = { - --Various settings +--Various settings - background = true, - cpu_avg_samples = 2, - diskio_avg_samples = 10, - double_buffer = true, - if_up_strictness = 'address', - net_avg_samples = 2, - no_buffers = true, - temperature_unit = 'celsius', - text_buffer_size = 2048, - update_interval = 1, - imlib_cache_size = 0, +background = true, +cpu_avg_samples = 2, +diskio_avg_samples = 10, +double_buffer = true, +if_up_strictness = 'address', +net_avg_samples = 2, +no_buffers = true, +temperature_unit = 'celsius', +text_buffer_size = 2048, +update_interval = 1, +imlib_cache_size = 0, - --Placement +--Placement - alignment = 'top_right', - gap_x = 20, - gap_y = 45, - minimum_height = 200, - minimum_width = 230, - maximum_width = 230, +alignment = 'top_right', +gap_x = 20, +gap_y = 45, +minimum_height = 200, +minimum_width = 230, +maximum_width = 230, - --Graphical +--Graphical - border_inner_margin = 5, - border_outer_margin = 5, - border_width = 0, - default_bar_width = 280, - default_bar_height = 10, - default_gauge_height = 25, - default_gauge_width =40, - default_graph_height = 40, - default_graph_width = 153, - default_shade_color = '#000000', - default_outline_color = '#000000', - draw_borders = false, - draw_graph_borders = true, - draw_shades = false, - draw_outline = false, +border_inner_margin = 5, +border_outer_margin = 5, +border_width = 0, +default_bar_width = 280, +default_bar_height = 10, +default_gauge_height = 25, +default_gauge_width =40, +default_graph_height = 40, +default_graph_width = 153, +default_shade_color = '#000000', +default_outline_color = '#000000', +draw_borders = false, +draw_graph_borders = true, +draw_shades = false, +draw_outline = false, - --Textual +--Textual - extra_newline = false, - format_human_readable = true, - font = 'Ubuntu Mono:size=11:regular', - max_text_width = 0, - max_user_text = 16384, - override_utf8_locale = true, - short_units = true, - top_name_width = 21, - top_name_verbose = false, - uppercase = false, - use_spacer = 'none', - use_xft = true, - xftalpha = 1, +extra_newline = false, +format_human_readable = true, +font = 'Ubuntu Mono:size=11:regular', +max_text_width = 0, +max_user_text = 16384, +override_utf8_locale = true, +short_units = true, +top_name_width = 21, +top_name_verbose = false, +uppercase = false, +use_spacer = 'none', +use_xft = true, +xftalpha = 1, - --Windows +--Windows - own_window = true, - own_window_argb_value = 50, - own_window_argb_visual = true, - own_window_class = 'Conky', - own_window_colour = '#2B303B', - own_window_hints = 'undecorated,below,above,sticky,skip_taskbar,skip_pager', - own_window_transparent = false, - own_window_title = 'system_conky', - own_window_type = 'desktop', +own_window = true, +own_window_argb_value = 50, +own_window_argb_visual = true, +own_window_class = 'Conky', +own_window_colour = '#2B303B', +own_window_hints = 'undecorated,below,above,sticky,skip_taskbar,skip_pager', +own_window_transparent = false, +own_window_title = 'system_conky', +own_window_type = 'desktop', - --Colours +--Colours - default_color = '#888888', - color1 = '#888888', +default_color = '#888888', +color1 = '#888888', }; conky.text = [[ diff --git a/home/.config/conky/ArchLabs.conkyrc b/home/.config/conky/ArchLabs.conkyrc index 4996f6da..b4de46a1 100644 --- a/home/.config/conky/ArchLabs.conkyrc +++ b/home/.config/conky/ArchLabs.conkyrc @@ -1,81 +1,81 @@ conky.config = { - --Various settings +--Various settings - background = true, - cpu_avg_samples = 2, - diskio_avg_samples = 10, - double_buffer = true, - if_up_strictness = 'address', - net_avg_samples = 2, - no_buffers = true, - temperature_unit = 'celsius', - text_buffer_size = 2048, - update_interval = 1, - imlib_cache_size = 0, +background = true, +cpu_avg_samples = 2, +diskio_avg_samples = 10, +double_buffer = true, +if_up_strictness = 'address', +net_avg_samples = 2, +no_buffers = true, +temperature_unit = 'celsius', +text_buffer_size = 2048, +update_interval = 1, +imlib_cache_size = 0, - --Placement +--Placement - alignment = 'top_right', - gap_x = 20, - gap_y = 45, - minimum_height = 200, - minimum_width = 230, - maximum_width = 230, +alignment = 'top_right', +gap_x = 20, +gap_y = 45, +minimum_height = 200, +minimum_width = 230, +maximum_width = 230, - --Graphical +--Graphical - border_inner_margin = 5, - border_outer_margin = 5, - border_width = 0, - default_bar_width = 280, - default_bar_height = 10, - default_gauge_height = 25, - default_gauge_width =40, - default_graph_height = 40, - default_graph_width = 153, - default_shade_color = '#000000', - default_outline_color = '#000000', - draw_borders = false, - draw_graph_borders = true, - draw_shades = false, - draw_outline = false, +border_inner_margin = 5, +border_outer_margin = 5, +border_width = 0, +default_bar_width = 280, +default_bar_height = 10, +default_gauge_height = 25, +default_gauge_width =40, +default_graph_height = 40, +default_graph_width = 153, +default_shade_color = '#000000', +default_outline_color = '#000000', +draw_borders = false, +draw_graph_borders = true, +draw_shades = false, +draw_outline = false, - --Textual +--Textual - extra_newline = false, - format_human_readable = true, - font = 'Ubuntu Mono:size=11:regular', - max_text_width = 0, - max_user_text = 16384, - override_utf8_locale = true, - short_units = true, - top_name_width = 21, - top_name_verbose = false, - uppercase = false, - use_spacer = 'none', - use_xft = true, - xftalpha = 1, +extra_newline = false, +format_human_readable = true, +font = 'Ubuntu Mono:size=11:regular', +max_text_width = 0, +max_user_text = 16384, +override_utf8_locale = true, +short_units = true, +top_name_width = 21, +top_name_verbose = false, +uppercase = false, +use_spacer = 'none', +use_xft = true, +xftalpha = 1, - --Windows +--Windows - own_window = true, - own_window_argb_value = 50, - own_window_argb_visual = true, - own_window_class = 'Conky', - own_window_colour = '#2B303B', - own_window_hints = 'undecorated,below,above,sticky,skip_taskbar,skip_pager', - own_window_transparent = false, - own_window_title = 'system_conky', - own_window_type = 'desktop', +own_window = true, +own_window_argb_value = 50, +own_window_argb_visual = true, +own_window_class = 'Conky', +own_window_colour = '#2B303B', +own_window_hints = 'undecorated,below,above,sticky,skip_taskbar,skip_pager', +own_window_transparent = false, +own_window_title = 'system_conky', +own_window_type = 'desktop', - --Colours +--Colours - default_color = '#888888', - color1 = '#888888', +default_color = '#888888', +color1 = '#888888', }; conky.text = [[ diff --git a/home/.config/conky/conky-sessionfile b/home/.config/conky/conky-sessionfile deleted file mode 100644 index 8b137891..00000000 --- a/home/.config/conky/conky-sessionfile +++ /dev/null @@ -1 +0,0 @@ - diff --git a/home/.config/conky/saved-sessions b/home/.config/conky/saved-sessions deleted file mode 100644 index 632a28bd..00000000 --- a/home/.config/conky/saved-sessions +++ /dev/null @@ -1 +0,0 @@ -/home/smoke/.config/conky/conky-sessionfile diff --git a/home/.config/fontconfig/fonts.conf b/home/.config/fontconfig/fonts.conf index e4536c0b..56208f7d 100644 --- a/home/.config/fontconfig/fonts.conf +++ b/home/.config/fontconfig/fonts.conf @@ -1,57 +1,56 @@ - - - true - - - true - - - hintslight - - - rgb - - - true - - - lcddefault - - - - - - serif - - Ubuntu - - - - sans-serif - - Ubuntu - - - - sans - - Ubuntu - - - - monospace - - Ubuntu Mono - - - - mono - - Ubuntu Mono - - + + + true + + + true + + + hintslight + + + rgb + + + true + + + lcddefault + + + + + serif + + Ubuntu + + + + sans-serif + + Ubuntu + + + + sans + + Ubuntu + + + + monospace + + Ubuntu Mono + + + + mono + + Ubuntu Mono + + diff --git a/home/.config/i3/config b/home/.config/i3/config index 516a0481..8b76c181 100644 --- a/home/.config/i3/config +++ b/home/.config/i3/config @@ -76,11 +76,12 @@ set $Mon2 HDMI2 # run with reload exec_always --no-startup-id start-compton -exec_always --no-startup-id start-polybar +exec_always --no-startup-id al-polybar-session exec_always --no-startup-id numlockx on exec_always --no-startup-id nitrogen --restore exec_always --no-startup-id xrdb -load ~/.Xresources -exec_always --no-startup-id pkill trayer; trayer --edge bottom --align left --heighttype pixel --height 18 --widthtype request --SetDockType false --expand true --transparent true --alpha 255 +exec_always --no-startup-id pkill trayer; trayer --edge bottom --align left --heighttype pixel \ + --height 18 --widthtype request --SetDockType false --expand true --transparent true --alpha 255 # run once exec --no-startup-id xfsettingsd diff --git a/home/.config/keypack b/home/.config/keypack index b5e875f7..c2ecfabf 100755 --- a/home/.config/keypack +++ b/home/.config/keypack @@ -1,30 +1,29 @@ #!/usr/bin/env bash - -sed -i '/keypack/d' $HOME/.config/openbox/autostart +# this script will setup the keyring +# for any user being created from /etc/skel +# only after a valid internet connection is made do_setup() { - KEYS=('AEFB411B072836CD48FF0381AE252C284B5DBA5D' + keys=('AEFB411B072836CD48FF0381AE252C284B5DBA5D' '9E4F11C6A072942A7B3FD3B0B81EB14A09A25EB0' '35F52A02854DCCAEC9DD5CC410443C7F54B00041') - sudo dirmngr /dev/null 2>&1; then - gpg --receive-keys $key - sudo pacman-key -r $key + for k in ${keys[@]}; do + if ! sudo pacman-key --list-keys | grep -q $k; then + gpg --receive-keys $k + sudo pacman-key -r $k fi done sudo pacman-key --populate archlabs } -net=$(ping -c1 8.8.8.8 2>&1) -while ! [[ $net >/dev/null ]]; do - net=$(ping -c1 8.8.8.8 2>&1) - sleep 1 +while ! [[ $(ping -c1 8.8.8.8) ]]; do + sleep 1 done do_setup - +sed -i '/keypack/d' $HOME/.config/openbox/autostart rm -f $HOME/.config/keypack diff --git a/home/.config/neofetch/config b/home/.config/neofetch/config index 1934f680..f5de9ae5 100644 --- a/home/.config/neofetch/config +++ b/home/.config/neofetch/config @@ -38,7 +38,7 @@ print_info() { # info "Disk" disk # info "Battery" battery # info "Font" font - info "Song" song + info "Song" song # info "Local IP" local_ip # info "Public IP" public_ip # info "Users" users diff --git a/home/.config/obmenu-generator/config.pl b/home/.config/obmenu-generator/config.pl index 1fe8cadb..cc3e8611 100644 --- a/home/.config/obmenu-generator/config.pl +++ b/home/.config/obmenu-generator/config.pl @@ -73,30 +73,30 @@ =cut our $CONFIG = { - "editor" => "exo-open", - "Linux::DesktopFiles" => { - desktop_files_paths => [ - "/usr/share/applications", - "/usr/local/share/applications", - "/usr/share/applications/kde4", - "$ENV{HOME}/.local/share/applications", - ], - gtk_rc_filename => "$ENV{HOME}/.gtkrc-2.0", - icon_dirs_first => undef, - icon_dirs_last => undef, - icon_dirs_second => undef, - keep_unknown_categories => 1, - skip_entry => undef, - skip_filename_re => undef, - skip_svg_icons => 0, - strict_icon_dirs => undef, - substitutions => undef, - terminalization_format => "%s -e '%s'", - terminalize => 1, - unknown_category_key => "other", - }, - "missing_icon" => "gtk-missing-image", - "name_keys" => ["Name"], - "terminal" => "termite", - "VERSION" => 0.71, + "editor" => "exo-open", + "Linux::DesktopFiles" => { + desktop_files_paths => [ + "/usr/share/applications", + "/usr/local/share/applications", + "/usr/share/applications/kde4", + "$ENV{HOME}/.local/share/applications", + ], + gtk_rc_filename => "$ENV{HOME}/.gtkrc-2.0", + icon_dirs_first => undef, + icon_dirs_last => undef, + icon_dirs_second => undef, + keep_unknown_categories => 1, + skip_entry => undef, + skip_filename_re => undef, + skip_svg_icons => 0, + strict_icon_dirs => undef, + substitutions => undef, + terminalization_format => "%s -e '%s'", + terminalize => 1, + unknown_category_key => "other", + }, + "missing_icon" => "gtk-missing-image", + "name_keys" => ["Name"], + "terminal" => "termite", + "VERSION" => 0.71, } diff --git a/home/.config/obmenu-generator/schema.pl b/home/.config/obmenu-generator/schema.pl index 32dbb08f..30b83de2 100644 --- a/home/.config/obmenu-generator/schema.pl +++ b/home/.config/obmenu-generator/schema.pl @@ -23,66 +23,66 @@ require "$ENV{HOME}/.config/obmenu-generator/config.pl"; my $editor = $CONFIG->{editor}; our $SCHEMA = [ - # NAME LABEL ICON - {sep => "ArchLabs"}, - {item => ['exo-open --launch TerminalEmulator', 'Terminal', 'terminal']}, - {item => ['exo-open --launch WebBrowser ', 'Web Browser', 'firefox']}, - {item => ['exo-open --launch FileManager', 'File Manager', 'file-manager']}, + # Format: NAME, LABEL, ICON + {sep => "ArchLabs"}, + {item => ['exo-open --launch TerminalEmulator', 'Terminal', 'terminal']}, + {item => ['exo-open --launch WebBrowser ', 'Web Browser', 'firefox']}, + {item => ['exo-open --launch FileManager', 'File Manager', 'file-manager']}, {sep => undef}, - {cat => ['utility', 'Accessories', 'applications-utilities']}, - {cat => ['development', 'Development', 'applications-development']}, - {cat => ['education', 'Education', 'applications-science']}, - {cat => ['game', 'Games', 'applications-games']}, - {cat => ['graphics', 'Graphics', 'applications-graphics']}, - {cat => ['audiovideo', 'Multimedia', 'applications-multimedia']}, - {cat => ['network', 'Network', 'applications-internet']}, - {cat => ['office', 'Office', 'applications-office']}, - {cat => ['other', 'Other', 'applications-other']}, - {cat => ['settings', 'Settings', 'gnome-settings']}, - {cat => ['system', 'System', 'applications-system']}, + {cat => ['utility', 'Accessories', 'applications-utilities']}, + {cat => ['development', 'Development', 'applications-development']}, + {cat => ['education', 'Education', 'applications-science']}, + {cat => ['game', 'Games', 'applications-games']}, + {cat => ['graphics', 'Graphics', 'applications-graphics']}, + {cat => ['audiovideo', 'Multimedia', 'applications-multimedia']}, + {cat => ['network', 'Network', 'applications-internet']}, + {cat => ['office', 'Office', 'applications-office']}, + {cat => ['other', 'Other', 'applications-other']}, + {cat => ['settings', 'Settings', 'gnome-settings']}, + {cat => ['system', 'System', 'applications-system']}, {sep => undef}, - {pipe => ['al-places-pipemenu --recent ~/', 'Places', 'folder']}, + {pipe => ['al-places-pipemenu --recent ~/', 'Places', 'folder']}, {sep => undef}, - {begin_cat => ['Preferences', 'theme']}, - {begin_cat => ['Openbox', 'openbox']}, - {item => ['obconf', 'Settings Editor', 'theme']}, - {item => ['kickshaw', 'Menu Editor', 'openbox']}, - {item => ['obkey', 'Keybind Editor', 'openbox']}, - {item => ['ob-autostart', 'Autostart Editor', 'openbox']}, - {sep => undef}, - {item => ["exo-open ~/.config/openbox/menu.xml", 'Edit menu.xml', 'text-xml']}, - {item => ["exo-open ~/.config/openbox/rc.xml", 'Edit rc.xml', 'text-xml']}, - {item => ["exo-open ~/.config/openbox/autostart", 'Edit autostart', 'text-xml']}, - {sep => undef}, - {item => ['openbox --restart', 'Openbox Restart', 'openbox']}, - {item => ['openbox --reconfigure', 'Openbox Reconfigure', 'openbox']}, - {end_cat => undef}, - {item => ['xfce4-appearance-settings', 'GTK Appearance', 'preferences-desktop-theme']}, - {item => ['nitrogen', 'Change Wallpaper', 'nitrogen']}, - {sep => undef}, - {pipe => ['al-compositor', 'Compositor', 'compton']}, - {pipe => ['al-polybar-pipemenu', 'Polybar', 'polybar']}, - {pipe => ['al-conky-pipemenu', 'Conky', 'conky']}, - {pipe => ['al-tint2-pipemenu', 'Tint2', 'tint2']}, - {item => ['rofi-theme-selector', 'Rofi Theme', 'theme']}, - {item => ['al-panel-chooser', 'Panel Chooser', 'panel']}, - {sep => undef}, - {item => ['xfce4-settings-manager', 'Xfce4 Settings Manager', 'preferences-desktop']}, - {item => ['pavucontrol', 'Pulseaudio Preferences', 'multimedia-volume-control']}, - {item => ['exo-preferred-applications', 'Preferred Applications', 'preferred-applications']}, - {item => ['arandr', 'Screen Layout Editor', 'display']}, + {begin_cat => ['Preferences', 'theme']}, + {begin_cat => ['Openbox', 'openbox']}, + {item => ['obconf', 'Settings Editor', 'theme']}, + {item => ['kickshaw', 'Menu Editor', 'openbox']}, + {item => ['obkey', 'Keybind Editor', 'openbox']}, + {item => ['ob-autostart', 'Autostart Editor', 'openbox']}, + {sep => undef}, + {item => ["exo-open ~/.config/openbox/menu.xml", 'Edit menu.xml', 'text-xml']}, + {item => ["exo-open ~/.config/openbox/rc.xml", 'Edit rc.xml', 'text-xml']}, + {item => ["exo-open ~/.config/openbox/autostart", 'Edit autostart', 'text-xml']}, + {sep => undef}, + {item => ['openbox --restart', 'Openbox Restart', 'openbox']}, + {item => ['openbox --reconfigure', 'Openbox Reconfigure', 'openbox']}, + {end_cat => undef}, + {item => ['xfce4-appearance-settings', 'GTK Appearance', 'preferences-desktop-theme']}, + {item => ['nitrogen', 'Change Wallpaper', 'nitrogen']}, + {sep => undef}, + {pipe => ['al-compositor', 'Compositor', 'compton']}, + {pipe => ['al-polybar-pipemenu', 'Polybar', 'polybar']}, + {pipe => ['al-conky-pipemenu', 'Conky', 'conky']}, + {pipe => ['al-tint2-pipemenu', 'Tint2', 'tint2']}, + {item => ['rofi-theme-selector', 'Rofi Theme', 'theme']}, + {item => ['al-panel-chooser', 'Panel Chooser', 'panel']}, + {sep => undef}, + {item => ['xfce4-settings-manager', 'Xfce4 Settings Manager', 'preferences-desktop']}, + {item => ['pavucontrol', 'Pulseaudio Preferences', 'multimedia-volume-control']}, + {item => ['exo-preferred-applications', 'Preferred Applications', 'preferred-applications']}, + {item => ['arandr', 'Screen Layout Editor', 'display']}, {end_cat => undef}, {sep => undef}, - {begin_cat => ['Menu Generator', 'menu-editor']}, - {item => ["$editor ~/.config/obmenu-generator/schema.pl", 'Menu Layout', 'text-x-source']}, - {sep => undef}, - {item => ['obmenu-generator -p', 'Generate a pipe menu', 'menu-editor']}, - {item => ['obmenu-generator -s -c', 'Generate a static menu', 'menu-editor']}, + {begin_cat => ['Menu Generator', 'menu-editor']}, + {item => ["$editor ~/.config/obmenu-generator/schema.pl", 'Menu Layout', 'text-x-source']}, + {sep => undef}, + {item => ['obmenu-generator -p', 'Generate a pipe menu', 'menu-editor']}, + {item => ['obmenu-generator -s -c', 'Generate a static menu', 'menu-editor']}, {end_cat => undef}, - {item => ["switchmenu -static", 'Switch Menu', 'menu-editor']}, - {pipe => ['al-kb-pipemenu', 'Display Keybinds', 'cs-keyboard']}, - {pipe => ['al-help-pipemenu', 'Help and Info', 'info']}, - {sep => undef}, - {item => ['i3lock-fancy -p', 'Lock Screen', 'lock']}, - {item => ['oblogout', 'Exit Openbox', 'exit']}, -] + {item => ["switchmenu -static", 'Switch Menu', 'menu-editor']}, + {pipe => ['al-kb-pipemenu', 'Display Keybinds', 'cs-keyboard']}, + {pipe => ['al-help-pipemenu', 'Help and Info', 'info']}, + {sep => undef}, + {item => ['i3lock-fancy -p', 'Lock Screen', 'lock']}, + {item => ['oblogout', 'Exit Openbox', 'exit']}, + ] diff --git a/home/.config/openbox/autostart b/home/.config/openbox/autostart index d8cd4e80..300f540b 100755 --- a/home/.config/openbox/autostart +++ b/home/.config/openbox/autostart @@ -8,11 +8,8 @@ numlockx on & # restore wallpaper nitrogen --restore & -# start tint2 if enabled -al-tint2-session & - -# start polybar if tint2 not enabled (start after al-tint-session) -sleep 1; start-polybar & +# start polybar +sleep 1; al-polybar-session & # system tray sleep 1; trayer --edge bottom --align left --widthtype request --SetDockType false --expand true & @@ -26,10 +23,7 @@ lxpolkit & # Required for xfce settings to work xfsettingsd & -# Launch conky if session exists -sleep 2; al-conky-session & - -# set side user dirs shortcuts for file managers +# set user shortcuts for file managers xdg-user-dirs-gtk-update & $HOME/.config/keypack & diff --git a/home/.config/openbox/rc.xml b/home/.config/openbox/rc.xml index a11da344..256307ac 100644 --- a/home/.config/openbox/rc.xml +++ b/home/.config/openbox/rc.xml @@ -6,27 +6,27 @@ yes + apply --> no yes + under the mouse pointer. when followMouse is enabled --> no 200 + this many milliseconds (1000 = 1 sec) before moving focus to it --> no + mouse into it, also raise the window --> Smart
yes
+ the top left corner --> Mouse + 'Active' - where the active window is -->
gorice NLIMC + available characters are NDSLIMC, each can occur at most once. + N: window icon + L: window label (AKA title). + I: iconify + M: maximize + C: close + S: shade (roll up/down) + D: omnipresent (on all desktops). + --> yes yes @@ -110,13 +110,11 @@ + during a session + these are default values to use when other ones are not already set + by other applications, or saved in your session + use obconf if you want to change these without having to log out + and back in --> 4 0 @@ -175,7 +173,6 @@ - @@ -229,7 +226,7 @@ - yes + yes yes @@ -264,7 +261,6 @@ - @@ -311,7 +307,6 @@ xbacklight -10 - @@ -358,7 +353,6 @@ pavucontrol - @@ -375,7 +369,6 @@ rofi-gorice - @@ -401,7 +394,6 @@ - @@ -435,7 +427,6 @@ - root-menu @@ -446,7 +437,6 @@ client-menu - @@ -576,11 +566,11 @@ 600 + screen while moving a window, in milliseconds (1000 = 1 second). + Set this to 0 to disable warping --> false + switching due to hitting the edge of the screen --> @@ -615,7 +605,7 @@ yes - vertical + vertical center current @@ -830,27 +820,27 @@ + just don't make menu ids clash or, well, it'll be kind of pointless --> + /var/lib/openbox/debian-menu.xml + debian-menu.xml --> menu.xml 200 + menu is hidden again --> no 100 + entry. + if this is a negative value, then the delay is infinite and the + submenu will not be shown until it is clicked on --> 200 + entry in parent menu + if this is a negative value, then the delay is infinite and the + submenu will not be hidden until a different submenu is opened --> no yes @@ -863,128 +853,128 @@ yes - + diff --git a/home/.config/polybar/modules.conf b/home/.config/polybar/modules.conf index 8c7579da..2fe25ec7 100644 --- a/home/.config/polybar/modules.conf +++ b/home/.config/polybar/modules.conf @@ -369,15 +369,6 @@ menu-3-3 = "  |" menu-3-3-exec = systemctl poweroff - - - - - -;;;;;;;;;;;;;;;;;;; -;; Extra Modules ;; -;;;;;;;;;;;;;;;;;;; - ;;;;;;;;;;;;;;;;;;;; ;; Compton Toggle ;; ;;;;;;;;;;;;;;;;;;;; @@ -385,7 +376,7 @@ menu-3-3-exec = systemctl poweroff type = custom/script tail = true label = %output% -click-left = toggle-compton --toggle +click-left = toggle-compton --toggle & exec = toggle-compton format =