diff --git a/README.md b/README.md index e6347fc..63f2738 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,7 @@ Modules and commandline utilities are only required for modules, the core itself * power (for the module 'battery') * dbus (for the module 'spotify') * i3ipc (for the module 'title') +* pacman-contrib (for module 'arch-update') # Required commandline utilities diff --git a/bumblebee/modules/arch-update.py b/bumblebee/modules/arch-update.py new file mode 100644 index 0000000..8df8b13 --- /dev/null +++ b/bumblebee/modules/arch-update.py @@ -0,0 +1,42 @@ +"""Check updates to Arch Linux.""" + + +import subprocess +import bumblebee.input +import bumblebee.output +import bumblebee.engine + + +class Module(bumblebee.engine.Module): + def __init__(self, engine, config): + widget = bumblebee.output.Widget(full_text=self.utilization) + super(Module, self).__init__(engine, config, widget) + self.packages = self.check_updates() + + def check_updates(self): + p = subprocess.Popen( + "checkupdates", stdout=subprocess.PIPE, shell=True) + + p_status = p.wait() + + if p_status == 0: + (output, err) = p.communicate() + + output = output.decode('utf-8') + packages = output.split('\n') + packages.pop() + + return len(packages) + return '0' + + def utilization(self, widget): + return 'Update Arch: {}'.format(self.packages) + + def hidden(self): + return self.check_updates() == 0 + + def update(self, widgets): + self.packages = self.check_updates() + + def state(self, widget): + return self.threshold_state(self.packages, 1, 100) diff --git a/themes/icons/awesome-fonts.json b/themes/icons/awesome-fonts.json index 699ab21..f041a00 100644 --- a/themes/icons/awesome-fonts.json +++ b/themes/icons/awesome-fonts.json @@ -117,10 +117,13 @@ "repeat-on": { "prefix": "" }, "repeat-off": { "prefix": "" } }, - "github": { - "prefix": "  " - }, - "hipchat": { + "arch-update": { + "prefix": "" + }, + "github": { + "prefix": "  " + }, + "hipchat": { "prefix": "  " }, "spotify": {