summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--battery-widget/battery.lua1
-rw-r--r--batteryarc-widget/batteryarc.lua181
-rw-r--r--brightnessarc-widget/brightnessarc.lua17
-rw-r--r--run-shell/blur.pngbin329592 -> 0 bytes
-rw-r--r--run-shell/pixelate.pngbin133469 -> 0 bytes
-rw-r--r--run-shell/run-shell.lua89
6 files changed, 151 insertions, 137 deletions
diff --git a/battery-widget/battery.lua b/battery-widget/battery.lua
index d59fdc6..6d9f086 100644
--- a/battery-widget/battery.lua
+++ b/battery-widget/battery.lua
@@ -35,6 +35,7 @@ local notification
local function show_battery_status()
awful.spawn.easy_async([[bash -c 'acpi']],
function(stdout, _, _, _)
+ naughty.destroy(notification)
notification = naughty.notify{
text = stdout,
title = "Battery status",
diff --git a/batteryarc-widget/batteryarc.lua b/batteryarc-widget/batteryarc.lua
index cef1904..a15151f 100644
--- a/batteryarc-widget/batteryarc.lua
+++ b/batteryarc-widget/batteryarc.lua
@@ -20,7 +20,7 @@ local text = wibox.widget {
id = "txt",
font = "Play 6",
align = 'center', -- align the text
- valign = 'center',
+ valign = 'center',
widget = wibox.widget.textbox
}
@@ -45,117 +45,94 @@ local batteryarc = wibox.widget {
local last_battery_check = os.time()
watch("acpi -i", 10,
- function(widget, stdout)
- local batteryType
-
- local battery_info = {}
- local capacities = {}
-
- -- Change the logic of processing battery information from 'acpi -i'
- for s in stdout:gmatch("[^\r\n]+") do
- local status, charge_str = string.match(s, '.+: (%a+), (%d?%d?%d)%%,?.*')
- if charge_str ~= nil then
- table.insert(battery_info, {status = status, charge = tonumber(charge_str)})
- else
- local cap_str = string.match(s, '.+:.+last full capacity (%d+)')
- if cap_str ~= nil then
+ function(widget, stdout)
+ local batteryType
+
+ local battery_info = {}
+ local capacities = {}
+ for s in stdout:gmatch("[^\r\n]+") do
+ local status, charge_str, time = string.match(s, '.+: (%a+), (%d?%d?%d)%%,?.*')
+ if string.match(s, 'rate information') then
+ -- ignore such line
+ elseif status ~= nil then
+ table.insert(battery_info, {status = status, charge = tonumber(charge_str)})
+ else
+ local cap_str = string.match(s, '.+:.+last full capacity (%d+)')
table.insert(capacities, tonumber(cap_str))
end
end
-
- end
-
- -- total battery capacity
- local total_capacity = 0
- for i, cap in ipairs(capacities) do
- total_capacity = total_capacity + cap
- end
-
- -- capacity charged into all batteries
- local charge_cap = 0
- -- battery charge percentage 0~100
- local charge_perc = 0
-
- for i, batt in ipairs(battery_info) do
- -- BUG: batt.charge ranges from 0 to 100, should be divided by 100
- charge_cap = charge_cap + batt.charge/100 * capacities[i]
- end
-
-
- local status
-
- -- new logic to determine status
- status = 'Full'
- for i, batt in ipairs(battery_info) do
- if batt.status == 'Charging' then
- status = 'Charging'
- break
+
+ local capacity = 0
+ for i, cap in ipairs(capacities) do
+ capacity = capacity + cap
+ end
+
+ local charge = 0
+ local status
+ for i, batt in ipairs(battery_info) do
+ if batt.charge >= charge then
+ -- use most charged battery status. This is arbitrary, and maybe another metric should be used
+ status = batt.status
+ end
+
+ charge = charge + batt.charge * capacities[i]
end
- if batt.status == 'Discharging' then
- status = 'Discharging'
- break
- end
- end
-
-
- if total_capacity > 0 then
- charge_perc = charge_cap / total_capacity * 100
- end
-
- -- when widget.value is < 0.04, the widget shows a full circle (as widget.value=1)
- -- so the charge_perc value is checked first
- if charge_perc >= 5 then
- widget.value = charge_perc / 100
- else
- widget.value = 0.05
- end
-
-
- if status == 'Charging' then
- text_with_background.bg = beautiful.widget_green
- text_with_background.fg = beautiful.widget_black
- else
- text_with_background.bg = beautiful.widget_transparent
- text_with_background.fg = beautiful.widget_main_color
- end
-
- text.text = string.format('%d', charge_perc)
-
- -- add variables to make it easy to change settings
- local bat_high = 75
- local bat_low = 30
-
--- if charge_perc <= bat_low then
- if charge_perc <= bat_low then
- batteryarc.colors = { beautiful.widget_red }
- if status ~= 'Charging' and os.difftime(os.time(), last_battery_check) > 300 then
- -- if 5 minutes have elapsed since the last warning
- last_battery_check = os.time()
-
- show_battery_warning()
+
+ local charge_percentage
+ if capacity > 5 then
+ charge = charge / capacity
+ charge_percentage = charge / 100
+ else
+ -- when widget.value is < 0.04, the widget shows a full circle (as widget.value=1)
+ charge_percentage = 0.05
end
- elseif charge_perc > bat_low and charge_perc < bat_high then
- batteryarc.colors = { beautiful.widget_yellow }
- else
- batteryarc.colors = { beautiful.widget_main_color }
- end
- end,
- batteryarc)
+
+ widget.value = charge / 100
+
+ if status == 'Charging' then
+ text_with_background.bg = beautiful.widget_green
+ text_with_background.fg = beautiful.widget_black
+ else
+ text_with_background.bg = beautiful.widget_transparent
+ text_with_background.fg = beautiful.widget_main_color
+ end
+
+ --- if battery is fully charged (100) there is not enough place for three digits, so we don't show any text
+ text.text = charge == 100
+ and ''
+ or string.format('%d', charge)
+
+ if charge < 15 then
+ batteryarc.colors = { beautiful.widget_red }
+ if status ~= 'Charging' and os.difftime(os.time(), last_battery_check) > 300 then
+ -- if 5 minutes have elapsed since the last warning
+ last_battery_check = os.time()
+
+ show_battery_warning()
+ end
+ elseif charge > 15 and charge < 40 then
+ batteryarc.colors = { beautiful.widget_yellow }
+ else
+ batteryarc.colors = { beautiful.widget_main_color }
+ end
+ end,
+ batteryarc)
-- Popup with battery info
-- One way of creating a pop-up notification - naughty.notify
local notification
function show_battery_status()
awful.spawn.easy_async([[bash -c 'acpi']],
- function(stdout, _, _, _)
- notification = naughty.notify {
- text = stdout,
- title = "Battery status",
- timeout = 5,
- hover_timeout = 0.5,
- width = 200,
- }
- end)
+ function(stdout, _, _, _)
+ naughty.destroy(notification)
+ notification = naughty.notify {
+ text = stdout,
+ title = "Battery status",
+ timeout = 5,
+ hover_timeout = 0.5,
+ width = 200,
+ }
+ end)
end
batteryarc:connect_signal("mouse::enter", function() show_battery_status() end)
@@ -175,7 +152,7 @@ function show_battery_warning()
naughty.notify {
icon = HOME .. "/.config/awesome/awesome-wm-widgets/batteryarc-widget/spaceman.jpg",
icon_size = 100,
- text = "Battery is dying", -- switch text and title
+ text = "Battery is dying", -- switch text and title
title = "Huston, we have a problem",
timeout = 25, -- show the warning for a longer time
hover_timeout = 0.5,
diff --git a/brightnessarc-widget/brightnessarc.lua b/brightnessarc-widget/brightnessarc.lua
index 9bd2826..53ea218 100644
--- a/brightnessarc-widget/brightnessarc.lua
+++ b/brightnessarc-widget/brightnessarc.lua
@@ -2,19 +2,18 @@
-- Brightness Widget for Awesome Window Manager
-- Shows the brightness level of the laptop display
-- More details could be found here:
--- https://github.com/streetturtle/awesome-wm-widgets/tree/master/brightness-widget
+-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/brightnessarc-widget
-- @author Pavel Makhov
--- @copyright 2017 Pavel Makhov
+-- @copyright 2019 Pavel Makhov
-------------------------------------------------
local wibox = require("wibox")
local watch = require("awful.widget.watch")
local spawn = require("awful.spawn")
-local naughty = require("naughty")
local PATH_TO_ICON = "/usr/share/icons/Arc/status/symbolic/display-brightness-symbolic.svg"
-local GET_BRIGHTNESS_CMD = "light -G" -- "xbacklight -get"
+local GET_BRIGHTNESS_CMD = "light -G" -- "xbacklight -get"
local INC_BRIGHTNESS_CMD = "light -A 5" -- "xbacklight -inc 5"
local DEC_BRIGHTNESS_CMD = "light -U 5" -- "xbacklight -dec 5"
@@ -37,21 +36,19 @@ local brightnessarc = wibox.widget {
widget = wibox.container.arcchart
}
-local brightnessarc_widget = wibox.container.mirror(brightnessarc, { horizontal = true })
-
-local update_widget = function(widget, stdout, stderr, exitreason, exitcode)
+local update_widget = function(widget, stdout)
local brightness_level = string.match(stdout, "(%d?%d?)")
brightness_level = tonumber(string.format("% 3d", brightness_level))
widget.value = brightness_level / 100;
end,
-brightnessarc:connect_signal("button::press", function(_,_,_,button)
- if (button == 4) then spawn(INC_BRIGHTNESS_CMD, false)
+brightnessarc:connect_signal("button::press", function(_, _, _, button)
+ if (button == 4) then spawn(INC_BRIGHTNESS_CMD, false)
elseif (button == 5) then spawn(DEC_BRIGHTNESS_CMD, false)
end
end)
watch(GET_BRIGHTNESS_CMD, 1, update_widget, brightnessarc)
-return brightnessarc_widget
+return brightnessarc
diff --git a/run-shell/blur.png b/run-shell/blur.png
deleted file mode 100644
index 4e8b54c..0000000
--- a/run-shell/blur.png
+++ /dev/null
Binary files differ
diff --git a/run-shell/pixelate.png b/run-shell/pixelate.png
deleted file mode 100644
index fedf320..0000000
--- a/run-shell/pixelate.png
+++ /dev/null
Binary files differ
diff --git a/run-shell/run-shell.lua b/run-shell/run-shell.lua
index 31d17aa..c2a2e29 100644
--- a/run-shell/run-shell.lua
+++ b/run-shell/run-shell.lua
@@ -7,21 +7,19 @@
-- @copyright 2019 Pavel Makhov
-------------------------------------------------
-local capi = {
- screen = screen,
- client = client,
-}
local awful = require("awful")
local gfs = require("gears.filesystem")
local wibox = require("wibox")
local gears = require("gears")
local completion = require("awful.completion")
+local naughty = require("naughty")
local run_shell = awful.widget.prompt()
local widget = {}
function widget.new()
+
local widget_instance = {
_cached_wiboxes = {}
}
@@ -32,41 +30,82 @@ function widget.new()
ontop = true,
height = 1060,
width = 1920,
- opacity = 0.6,
- bg = '#000002'
+ opacity = 0.9,
+ bg = 'radial:960,540,20:960,540,700:0,#00000022:0.2,#33333388:1,#000000ff'
+ }
+
+ local suspend_button = wibox.widget {
+ image = '/usr/share/icons/Arc/actions/symbolic/system-shutdown-symbolic.svg',
+ widget = wibox.widget.imagebox,
+ resize = false,
+ set_hover = function(self, opacity)
+ naughty.notify{text = tostring(self.opacity)}
+ self.opacity = opacity
+ self.image = '/usr/share/icons/Arc/actions/symbolic/system-shutdown-symbolic.svg'
+ end
}
+ suspend_button:connect_signal("mouse::enter", function()
+ suspend_button:set_hover(1)
+ end)
+
+ suspend_button:connect_signal("mouse::leave", function()
+ suspend_button:set_hover(0.2)
+ end)
+
w:setup {
{
{
{
{
- markup = '<span font="awesomewm-font 14" color="#ffffff">a</span>',
- widget = wibox.widget.textbox,
+ {
+ markup = '<span font="awesomewm-font 14" color="#ffffff">a</span>',
+ widget = wibox.widget.textbox,
+ },
+ id = 'icon',
+ left = 10,
+ layout = wibox.container.margin
+ },
+ {
+ run_shell,
+ left = 10,
+ layout = wibox.container.margin,
},
- id = 'icon',
- left = 10,
- layout = wibox.container.margin
+ id = 'left',
+ layout = wibox.layout.fixed.horizontal
+ },
+ bg = '#333333',
+ shape = function(cr, width, height)
+ gears.shape.rounded_rect(cr, width, height, 3)
+ end,
+ shape_border_color = '#74aeab',
+ shape_border_width = 1,
+ forced_width = 200,
+ forced_height = 50,
+ widget = wibox.container.background
+ },
+ valign = 'center',
+ layout = wibox.container.place
+ },
+ {
+ {
+ suspend_button,
+ {
+ image = '/usr/share/icons/Arc/actions/symbolic/application-exit-symbolic.svg',
+ resize = false,
+ widget = wibox.widget.imagebox,
},
{
- run_shell,
- left = 10,
- layout = wibox.container.margin,
+ image = '/usr/share/icons/Arc/actions/symbolic/application-exit-symbolic.svg',
+ resize = false,
+ widget = wibox.widget.imagebox
},
- id = 'left',
layout = wibox.layout.fixed.horizontal
},
- widget = wibox.container.background,
- bg = '#333333',
- shape = function(cr, width, height)
- gears.shape.rounded_rect(cr, width, height, 3)
- end,
- shape_border_color = '#74aeab',
- shape_border_width = 1,
- forced_width = 200,
- forced_height = 50
+ valign = 'bottom',
+ layout = wibox.container.place,
},
- layout = wibox.container.place
+ layout = wibox.layout.stack
}
return w