diff --git a/drawing/Pacman.lua b/drawing/Pacman.lua index 9e80ada..71dba01 100644 --- a/drawing/Pacman.lua +++ b/drawing/Pacman.lua @@ -5,13 +5,10 @@ local Line = require 'Line' local TextColumn = require 'TextColumn' local Util = require 'Util' -local PACMAN_TABLE = { - 'pacman -Qq', - 'pacman -Qeq', - 'pacman -Quq', - 'pacman -Qdtq', - 'pacman -Qmq' -} +local __string_match = string.match +local __string_gmatch = string.gmatch + +local STATS_FILE = '/tmp/.conky_pacman' local _TEXT_SPACING_ = 20 @@ -44,9 +41,18 @@ local info = _G_Widget_.TextColumn{ _TEXT_SPACING_ = nil local update = function(cr) - for i, cmd in pairs(PACMAN_TABLE) do - TextColumn.set(info, cr, i, Util.line_count(Util.execute_cmd(cmd))) - end + local stats = __string_match(Util.read_file(STATS_FILE), '%d+%s+(.*)$') + if stats then + local i = 1 + for v in __string_gmatch(stats, '[^%s]+') do + TextColumn.set(info, cr, i, v) + i = i + 1 + end + else + for i=1,5 do + TextColumn.set(info, cr, i, 'N/A') + end + end end local draw_static = function(cr) @@ -57,7 +63,7 @@ end local draw_dynamic = function(cr, log_is_changed) if log_is_changed then update(cr) end - + TextColumn.draw(info, cr) end diff --git a/scripts/pacman_stats b/scripts/pacman_stats new file mode 100755 index 0000000..d2f5e43 --- /dev/null +++ b/scripts/pacman_stats @@ -0,0 +1,25 @@ +#! /bin/bash + +stat_file=/tmp/.conky_pacman +log_file=/var/log/pacman.log + +write_stats() { + now=$(date +%s) + tot=$(pacman -Qq | wc -l) + exp=$(pacman -Qeq | wc -l) + out=$(pacman -Quq | wc -l) + orp=$(pacman -Qdtq | wc -l) + loc=$(pacman -Qmq | wc -l) + echo "$now" "$tot" "$exp" "$out" "$orp" "$loc" > "$stat_file" +} + +if [[ -f "$stat_file" ]]; then + last_pacman_update=$(stat -c %Y "$log_file") + last_stat_update=$(awk '{ print $1 }' "$stat_file") + if (( last_pacman_update > last_stat_update )); then + write_stats + fi +else + write_stats +fi +