diff --git a/awesome/battery.lua b/awesome/battery.lua
index d90e824..b3cea08 100644
--- a/awesome/battery.lua
+++ b/awesome/battery.lua
@@ -5,57 +5,65 @@
local wibox = require("wibox")
local naughty = require("naughty")
local beautiful = require("beautiful")
+local awful = require('awful')
+local su = require('su')
local previous_percent = 0
-function batteryInfo()
- local fd = io.popen('acpi | head -n 1 | cut -d ":" -f 2 | cut -d "," -f 2 | tr -d "%"')
- local percentage = fd:read('*all')
- fd:close()
- return tonumber(percentage)
-end
+function batteryInfo(callback)
+ awful.spawn.easy_async('acpi', function(stdout)
+ -- Consider only the first line
+ local line = su.split(stdout, '\n')[1]
-function isCharging()
- local _,_,error = os.execute('acpi | head -n 1 | grep Discharging')
- return error ~= 0
+ local split = su.split(line, ':')
+
+ -- Extract the percentage from the string
+ local percent = tonumber(su.split(split[2],',')[2]:sub(1, -2))
+
+ -- callback(percent, isCharging)
+ callback(tonumber(percent), not string.find(line, 'Discharging'))
+ end)
end
function update_battery()
- local percent = batteryInfo()
- local color
- local symbol
+ batteryInfo(function(percent, isCharging)
- if percent < 15 then
- color="red"
- elseif percent < 30 then
- color="orange"
- elseif percent > 90 then
- color="green"
- else
- color="white"
- end
+ local color
+ local symbol
- if isCharging() then
- color = 'green'
- symbol = '⚡'
- else
- symbol = '%'
- end
+ if percent < 15 then
+ color="red"
+ elseif percent < 30 then
+ color="orange"
+ elseif percent > 90 then
+ color="green"
+ else
+ color="white"
+ end
- if previous_percent >= 15 and percent < 15 then
- naughty.notify({
- title = "Low battery...",
- text = "Battery level is lower than 15% !",
- fg="#000000",
- bg="#ff0000",
- timeout=5
- })
- end
+ if isCharging then
+ color = 'green'
+ symbol = '⚡'
+ else
+ symbol = '%'
+ end
- battery_widget:set_markup('' .. percent .. ' ' .. symbol .. '')
+ if previous_percent >= 15 and percent < 15 then
+ naughty.notify({
+ title = "Low battery...",
+ text = "Battery level is lower than 15% !",
+ fg="#000000",
+ bg="#ff0000",
+ timeout=5
+ })
+ end
- previous_percent = percent
+ battery_widget:set_markup('' .. percent .. ' ' .. symbol .. '')
+
+ previous_percent = percent
+
+ end)
end
diff --git a/awesome/music.lua b/awesome/music.lua
index f5f5388..df09fdf 100644
--- a/awesome/music.lua
+++ b/awesome/music.lua
@@ -1,6 +1,7 @@
local naughty = require("naughty")
local wibox = require("wibox")
local awful = require("awful")
+local su = require('su')
local ret = {}
ret.text_widget = wibox.widget.textbox()
@@ -18,33 +19,6 @@ local position = 1
local width = 30
local dots = 3
-local function string_starts_with(String,Start)
- return string.sub(String,1,string.len(Start))==Start
-end
-
-local function string_split(str, delimiter)
- if str == nil then
- return {}
- end
- local ret = {''}
- count = 1
- for i = 1, string.len(str) do
- local c = str:sub(i,i)
- if c == delimiter then
- count = count + 1
- ret[count] = ''
- else
- ret[count] = ret[count] .. c
- end
- end
- return ret
-end
-
-local function pad(str, len, char)
- if char == nil then char = ' ' end
- return str .. string.rep(char, len - #str)
-end
-
local function set_text(text)
total_text = text
@@ -57,21 +31,21 @@ ret.execute_command = function(command)
awful.spawn.easy_async('music-client ' .. command, function(stdout, stderr, reason, code)
- local text = string_split(stdout, '\n')
+ local text = su.split(stdout, '\n')
local active_command =
- string_starts_with(command, 'file') or
- string_starts_with(command, 'next') or
- string_starts_with(command, 'previous')
+ su.starts_with(command, 'file') or
+ su.starts_with(command, 'next') or
+ su.starts_with(command, 'previous')
local start_server_command = active_command or
- string_starts_with(command, 'play') or
- string_starts_with(command, 'pause')
+ su.starts_with(command, 'play') or
+ su.starts_with(command, 'pause')
if code == 0 then
if active_command then
set_text(text[1])
- elseif string_starts_with(command, 'noop') then
+ elseif su.starts_with(command, 'noop') then
total_text = text[1]
position = math.floor((width - string.len(total_text)) / 2)
end
@@ -96,7 +70,7 @@ end
function update_widget()
ret.icon_widget:set_text(' ' .. icon .. ' ')
if string.len(total_text) < width then
- ret.text_widget:set_text(' ' .. pad(total_text, width + 1, ' '))
+ ret.text_widget:set_text(' ' .. su.pad(total_text, width + 1, ' '))
else
local pos = math.min(position, string.len(total_text) - width)
pos = math.max(1, pos)
diff --git a/awesome/su.lua b/awesome/su.lua
new file mode 100644
index 0000000..319d704
--- /dev/null
+++ b/awesome/su.lua
@@ -0,0 +1,30 @@
+local module = {}
+
+module.starts_with = function(String,Start)
+ return string.sub(String,1,string.len(Start))==Start
+end
+
+module.split = function(str, delimiter)
+ if str == nil then
+ return {}
+ end
+ local ret = {''}
+ count = 1
+ for i = 1, string.len(str) do
+ local c = str:sub(i,i)
+ if c == delimiter then
+ count = count + 1
+ ret[count] = ''
+ else
+ ret[count] = ret[count] .. c
+ end
+ end
+ return ret
+end
+
+module.pad = function(str, len, char)
+ if char == nil then char = ' ' end
+ return str .. string.rep(char, len - #str)
+end
+
+return module