summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/awesome/backup_status_widget.lua69
-rw-r--r--config/awesome/rc.lua2
2 files changed, 71 insertions, 0 deletions
diff --git a/config/awesome/backup_status_widget.lua b/config/awesome/backup_status_widget.lua
new file mode 100644
index 0000000..577b082
--- /dev/null
+++ b/config/awesome/backup_status_widget.lua
@@ -0,0 +1,69 @@
+-- from https://awesomewm.org/recipes/countdown/
+-- on 2018-04-10
+-- slightly modified
+
+local gears = require("gears")
+local awful = require("awful")
+local wibox = require("wibox")
+local naughty = require("naughty")
+local beautiful = require("beautiful")
+
+local backup_state_file = '/var/cache/dsa/nagios/borgmatic.stamp'
+local max_age_s = 3600*24
+
+
+function backup_status_get_mtime()
+ local f = io.popen("stat -c %Y " .. backup_state_file)
+ local last_modified = f:read()
+ if last_modified == nil then
+ return 0
+ else
+ return last_modified
+ end
+end
+
+function backup_status_age()
+ local mtime = backup_status_get_mtime()
+ local current_time = os.time(os.date("*t"))
+ return current_time - mtime
+end
+
+function backup_status_update(widget)
+ local age = backup_status_age()
+ widget.checked = (age > max_age_s)
+end
+
+backup_status_widget = wibox.widget {
+ checked = false,
+ check_color = "#ff0000",
+ border_color = "#499644",
+ border_width = 2,
+ shape = gears.shape.circle,
+ widget = wibox.widget.checkbox
+}
+
+local backup_status_tooltip = awful.tooltip { }
+backup_status_tooltip:add_to_object(backup_status_widget)
+
+backup_status_widget:connect_signal('mouse::enter', function()
+ -- local mtime = backup_status_get_mtime()
+ -- backup_status_tooltip.text = os.date('state file last touched %c', mtime)
+ if backup_status_widget.checked then
+ backup_status_tooltip.text = 'Backup state file too old.'
+ else
+ backup_status_tooltip.text = 'Backup state file is recent.'
+ end
+end)
+
+
+backup_status_timer = gears.timer({timeout = 900,
+ call_now = true,
+ autostart = true,
+ callback = function()
+ backup_status_update(backup_status_widget)
+ end,
+ })
+
+backup_status_widget:buttons(awful.util.table.join(
+ awful.button({}, 1, function() backup_status_update(backup_status_widget) end)
+))
diff --git a/config/awesome/rc.lua b/config/awesome/rc.lua
index 6040eb3..00266d1 100644
--- a/config/awesome/rc.lua
+++ b/config/awesome/rc.lua
@@ -17,6 +17,7 @@ local cyclefocus = require("cyclefocus")
require("debian.menu")
require("volume")
require("battery")
+require("backup_status_widget")
require("weasel-rules")
require("countdown")
-- require("revelation")
@@ -211,6 +212,7 @@ awful.screen.connect_for_each_screen(function(s)
right_layout:add(volume_widget)
right_layout:add(countdown.widget)
right_layout:add(countdown.checkbox)
+ right_layout:add(backup_status_widget)
right_layout:add(mytextclock)
right_layout:add(s.mylayoutbox)