Hello community,

here is the log from the commit of package bumblebee-status for 
openSUSE:Factory checked in at 2018-04-19 15:31:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bumblebee-status (Old)
 and      /work/SRC/openSUSE:Factory/.bumblebee-status.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bumblebee-status"

Thu Apr 19 15:31:19 2018 rev:5 rq:597602 version:1.6.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/bumblebee-status/bumblebee-status.changes        
2018-01-26 13:40:32.174389701 +0100
+++ /work/SRC/openSUSE:Factory/.bumblebee-status.new/bumblebee-status.changes   
2018-04-19 15:31:20.766483385 +0200
@@ -1,0 +2,24 @@
+Tue Apr 17 11:48:45 UTC 2018 - [email protected]
+
+- Ensure summaries are noun phrases
+
+-------------------------------------------------------------------
+Wed Apr 11 22:59:18 UTC 2018 - [email protected]
+
+- Update to 1.6.1
+  * traffic: Hide down interfaces
+  * nic: Add output format parameter
+  * new theme "greyish-powerline"
+  * new module "taskwarrior"
+  * fix: brightness: Return format fix
+  * fix: theme engine: Remove unneeded YAML dependency
+  * fix: general: Removed typos
+  * fix: battery: Better error handling
+  * fix: getcrypto: Handle downtime of crypto service
+  * fix: datetime: Fallback to en_US formatting
+  * fix: memory: Fixes to percentage calculation
+- package some modules separately (more can be done, this is a
+  start)
+- cleanup with spec-cleaner
+
+-------------------------------------------------------------------

Old:
----
  bumblebee-status-1.6.0.tar.gz

New:
----
  bumblebee-status-1.6.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ bumblebee-status.spec ++++++
--- /var/tmp/diff_new_pack.4o8IKz/_old  2018-04-19 15:31:21.374458399 +0200
+++ /var/tmp/diff_new_pack.4o8IKz/_new  2018-04-19 15:31:21.378458235 +0200
@@ -17,12 +17,12 @@
 
 
 Name:           bumblebee-status
-Version:        1.6.0
+Version:        1.6.1
 Release:        0
 Summary:        Modular, theme-able status line generator for the i3 window 
manager
 License:        MIT
 Group:          System/Monitoring
-Url:            https://github.com/tobi-wan-kenobi/bumblebee-status/wiki
+URL:            https://github.com/tobi-wan-kenobi/bumblebee-status/wiki
 Source0:        
https://github.com/tobi-wan-kenobi/bumblebee-status/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
 Patch1:         use-python-3.patch
 # In earlier i3 versions, blocks won't have background colors
@@ -43,6 +43,71 @@
 
 You can use the mouse wheel up/down to switch workspaces forward and back 
everywhere throughout the bar.
 
+%package module-cmus
+Summary:        Widget to show information about the current song in cmus
+Group:          System/Monitoring
+Requires:       cmus
+Supplements:    packageand(%{name}:cmus)
+BuildArch:      noarch
+
+%description module-cmus
+Displays information about the current song in cmus via cmus-remote.
+
+It takes a parameter (cmus.format) which customizes how the song
+is displayed. Tag values can be put in curly brackets, (i.e., {artist}).
+
+%package module-dnf
+Summary:        Widget to display DNF package update information
+Group:          System/Monitoring
+Requires:       dnf
+Supplements:    packageand(%{name}:dnf)
+BuildArch:      noarch
+
+%description module-dnf
+Displays DNF package update information 
(<security>/<bugfixes>/<enhancements>/<other>)
+via dnf.
+
+It takes a parameter (dnf.interval) which controls the time in seconds
+between two consecutive update checks (default = 30 minutes)
+
+%package module-mpd
+Summary:        Widget to display information about the current song in mpd
+Group:          System/Monitoring
+Requires:       mpclient
+Supplements:    packageand(%{name}:mpd)
+BuildArch:      noarch
+
+%description module-mpd
+Displays information about the current song in mpd (via mpc)
+
+Takes two parameters:
+  * mpd.format: Format string for the song information. Tag values can
+    be put in curly brackets (i.e. {artist})
+  * mpd.host: MPD host to connect to. (mpc behaviour by default)
+
+%package module-redshift
+Summary:        Widget to display the current color temperature of redshift
+Group:          System/Monitoring
+Requires:       redshift
+Supplements:    packageand(%{name}:redshift)
+BuildArch:      noarch
+
+%description module-redshift
+Displays the current color temperature of redshift. Takes no parameters.
+
+%package module-mocp
+Summary:        Widget to display information about the current song in moc
+Group:          System/Monitoring
+Requires:       moc
+Supplements:    packageand(%{name}:moc)
+BuildArch:      noarch
+
+%description module-mocp
+Displays information about the current song in moc, via mocp.
+
+Takes one parameter (mocp.format) that formats song information. Tag values can
+be put in curly brackets (i.e. {artist})
+
 %prep
 %setup -q
 %patch1 -p1
@@ -72,7 +137,8 @@
 %{buildroot}%{_datadir}/%{name}
 
 %files
-%doc README.md LICENSE
+%license LICENSE
+%doc README.md
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/bumblebee
 %dir %{_datadir}/%{name}/bumblebee/modules
@@ -92,12 +158,10 @@
 %{_datadir}/%{name}/bumblebee/modules/bluetooth.py
 %{_datadir}/%{name}/bumblebee/modules/brightness.py
 %{_datadir}/%{name}/bumblebee/modules/caffeine.py
-%{_datadir}/%{name}/bumblebee/modules/cmus.py
 %{_datadir}/%{name}/bumblebee/modules/cpu.py
 %{_datadir}/%{name}/bumblebee/modules/currency.py
 %{_datadir}/%{name}/bumblebee/modules/datetime.py
 %{_datadir}/%{name}/bumblebee/modules/disk.py
-%{_datadir}/%{name}/bumblebee/modules/dnf.py
 %{_datadir}/%{name}/bumblebee/modules/error.py
 %{_datadir}/%{name}/bumblebee/modules/getcrypto.py
 %{_datadir}/%{name}/bumblebee/modules/github.py
@@ -107,17 +171,15 @@
 %{_datadir}/%{name}/bumblebee/modules/layout.py
 %{_datadir}/%{name}/bumblebee/modules/load.py
 %{_datadir}/%{name}/bumblebee/modules/memory.py
-%{_datadir}/%{name}/bumblebee/modules/mocp.py
-%{_datadir}/%{name}/bumblebee/modules/mpd.py
 %{_datadir}/%{name}/bumblebee/modules/nic.py
 %{_datadir}/%{name}/bumblebee/modules/nvidiagpu.py
 %{_datadir}/%{name}/bumblebee/modules/ping.py
 %{_datadir}/%{name}/bumblebee/modules/publicip.py
 %{_datadir}/%{name}/bumblebee/modules/pulseaudio.py
-%{_datadir}/%{name}/bumblebee/modules/redshift.py
 %{_datadir}/%{name}/bumblebee/modules/sensors.py
 %{_datadir}/%{name}/bumblebee/modules/spacer.py
 %{_datadir}/%{name}/bumblebee/modules/spotify.py
+%{_datadir}/%{name}/bumblebee/modules/taskwarrior.py
 %{_datadir}/%{name}/bumblebee/modules/test.py
 %{_datadir}/%{name}/bumblebee/modules/title.py
 %{_datadir}/%{name}/bumblebee/modules/todo.py
@@ -143,6 +205,7 @@
 %{_datadir}/%{name}/themes/icons/awesome-fonts.json
 %{_datadir}/%{name}/themes/icons/paxy97.json
 %{_datadir}/%{name}/themes/icons/test.json
+%{_datadir}/%{name}/themes/greyish-powerline.json
 %{_datadir}/%{name}/themes/powerline.json
 %{_datadir}/%{name}/themes/solarized-dark-awesome.json
 %{_datadir}/%{name}/themes/solarized-powerline.json
@@ -151,4 +214,19 @@
 %{_datadir}/%{name}/themes/test_cycle.json
 %{_datadir}/%{name}/themes/test_invalid.json
 
+%files module-cmus
+%{_datadir}/%{name}/bumblebee/modules/cmus.py
+
+%files module-dnf
+%{_datadir}/%{name}/bumblebee/modules/dnf.py
+
+%files module-mpd
+%{_datadir}/%{name}/bumblebee/modules/mpd.py
+
+%files module-redshift
+%{_datadir}/%{name}/bumblebee/modules/redshift.py
+
+%files module-mocp
+%{_datadir}/%{name}/bumblebee/modules/mocp.py
+
 %changelog

++++++ bumblebee-status-1.6.0.tar.gz -> bumblebee-status-1.6.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/.travis.yml 
new/bumblebee-status-1.6.1/.travis.yml
--- old/bumblebee-status-1.6.0/.travis.yml      2018-01-07 20:41:14.000000000 
+0100
+++ new/bumblebee-status-1.6.1/.travis.yml      2018-04-11 20:14:45.000000000 
+0200
@@ -6,13 +6,16 @@
   - "3.4"
   - "3.5"
   - "3.6"
+before_install:
+  - sudo apt-get -qq update
+  - sudo apt-get install -y task
 install:
   - pip install i3ipc
   - pip install psutil
   - pip install netifaces
-  - pip install pyyaml
   - pip install -U coverage==4.3
   - pip install codeclimate-test-reporter
+  - pip install taskw
 script:
   - nosetests -v --with-coverage --cover-erase tests/
   - 
CODECLIMATE_REPO_TOKEN=40cb00907f7a10e04868e856570bb997ab9c42fd3b63d980f2b2269433195fdf
 codeclimate-test-reporter
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/README.md 
new/bumblebee-status-1.6.1/README.md
--- old/bumblebee-status-1.6.0/README.md        2018-01-07 20:41:14.000000000 
+0100
+++ new/bumblebee-status-1.6.1/README.md        2018-04-11 20:14:45.000000000 
+0200
@@ -5,7 +5,7 @@
 [![Test 
Coverage](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/badges/coverage.svg)](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/coverage)
 [![Issue 
Count](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/badges/issue_count.svg)](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status)
 
-**Many, many thanks to all contributors! As of now, 25 of the modules are from 
various contributors (!), and only 16 from myself.**
+**Many, many thanks to all contributors! As of now, 26 of the modules are from 
various contributors (!), and only 16 from myself.**
 
 bumblebee-status is a modular, theme-able status line generator for the [i3 
window manager](https://i3wm.org/).
 
@@ -24,11 +24,15 @@
 
 Supported Python versions: 2.7, 3.3, 3.4, 3.5, 3.6
 
+Supported FontAwesome version: 4 (free version of 5 doesn't include some of 
the icons)
+
 Explicitly unsupported Python versions: 3.2 (missing unicode literals)
 
 # Documentation
 See [the wiki](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki) for 
documentation.
 
+See [FAQ](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki/FAQ) for, 
well, FAQs.
+
 Other resources:
 
 * A list of [available 
modules](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki/Available-Modules)
@@ -59,6 +63,14 @@
 
 Any parameter you can specify with `-p <name>=<value>`, you can alternatively 
specify in `~/.bumblebee-status.conf` or `~/.config/bumblebee-status.conf`. 
This parameters act as a **fallback**, so values specified with `-p` have 
priority.
 
+Parameters can also be used to override theme settings, such as:
+
+```
+$ ./bumblebee-status -p <module>.theme.<theme field>=<value>
+# for example, to get a spacer with a red background:
+$ ./bumblebee-status -m spacer -p spacer.theme.bg=#ff0000
+```
+
 Configuration files have a format like this:
 ```
 $ cat ~/.bumblebee-status.conf
@@ -139,7 +151,7 @@
 
 * psutil (for the modules 'cpu', 'memory', 'traffic')
 * netifaces (for the modules 'nic', 'traffic')
-* requests (for the modules 'weather', 'github', 'getcrypto', 'stock')
+* requests (for the modules 'weather', 'github', 'getcrypto', 'stock', 
'hipchat', 'currency')
 * power (for the module 'battery')
 * dbus (for the module 'spotify')
 * i3ipc (for the module 'title')
@@ -170,7 +182,7 @@
 
 :exclamation: Some themes (all 'Powerline' themes) require [Font 
Awesome](http://fontawesome.io/) and a powerline-compatible font 
([powerline-fonts](https://github.com/powerline/fonts), for example) to display 
all icons correctly.
 
-Gruvbox Powerline (`-t gruvbox-powerline`) (contributed by 
[@paxy97](https://github.com/paxy97)):
+Gruvbox Powerline (`-t gruvbox-powerline`) (contributed by 
[@TheEdgeOfRage](https://github.com/TheEdgeOfRage)):
 
 ![Gruvbox 
Powerline](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-gruvbox.png)
 
@@ -190,6 +202,10 @@
 
 
![Powerline](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline.png)
 
+Greyish Powerline (`-t powerline-greyish`)
+
+![Greyish 
Powerline](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-greyish.png)
+
 Default (nothing or `-t default`):
 
 
![Default](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/default.png)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/config.py 
new/bumblebee-status-1.6.1/bumblebee/config.py
--- old/bumblebee-status-1.6.0/bumblebee/config.py      2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/config.py      2018-04-11 
20:14:45.000000000 +0200
@@ -35,12 +35,15 @@
 
     def print_modules(self):
         for m in bumblebee.engine.all_modules():
-            mod = 
importlib.import_module("bumblebee.modules.{}".format(m["name"]))
-            print(textwrap.fill("{}:".format(m["name"]), 80,
-                    initial_indent=self._indent*2, 
subsequent_indent=self._indent*2))
-            for line in mod.__doc__.split("\n"):
-                print(textwrap.fill(line, 80,
-                    initial_indent=self._indent*3, 
subsequent_indent=self._indent*6))
+            try:
+                mod = 
importlib.import_module("bumblebee.modules.{}".format(m["name"]))
+                print(textwrap.fill("{}:".format(m["name"]), 80,
+                        initial_indent=self._indent*2, 
subsequent_indent=self._indent*2))
+                for line in mod.__doc__.split("\n"):
+                    print(textwrap.fill(line, 80,
+                        initial_indent=self._indent*3, 
subsequent_indent=self._indent*6))
+            except:
+                pass
 
 def create_parser():
     """Create the argument parser"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/engine.py 
new/bumblebee-status-1.6.1/bumblebee/engine.py
--- old/bumblebee-status-1.6.0/bumblebee/engine.py      2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/engine.py      2018-04-11 
20:14:45.000000000 +0200
@@ -38,6 +38,7 @@
         self.name = config.get("name", self.__module__.split(".")[-1])
         self._config = config
         self.id = self.name
+        self.error = None
         self._next = int(time.time())
         self._default_interval = 0
 
@@ -67,6 +68,12 @@
             if widget.name == name:
                 return widget
 
+    def errorWidget(self):
+        msg = self.error
+        if len(msg) > 10:
+            msg = "{}...".format(msg[0:7])
+        return bumblebee.output.Widget(full_text="error: {}".format(msg))
+
     def widget_by_id(self, uid):
         for widget in self._widgets:
             if widget.id == uid:
@@ -80,7 +87,12 @@
     def update_wrapper(self, widgets):
         if self._next > int(time.time()):
             return
-        self.update(self._widgets)
+        try:
+            self.error = None
+            self.update(self._widgets)
+        except Exception as e:
+            log.error("error updating '{}': {}".format(self.name, str(e)))
+            self.error = str(e)
         self._next += int(self.parameter("interval", 
self._default_interval))*60
 
     def interval(self, intvl):
@@ -204,9 +216,12 @@
     def _read_aliases(self):
         result = {}
         for module in all_modules():
-            mod = 
importlib.import_module("bumblebee.modules.{}".format(module["name"]))
-            for alias in getattr(mod, "ALIASES", []):
-                result[alias] = module["name"]
+            try:
+                mod = 
importlib.import_module("bumblebee.modules.{}".format(module["name"]))
+                for alias in getattr(mod, "ALIASES", []):
+                    result[alias] = module["name"]
+            except Exception as error:
+                log.warning("failed to import {}: {}".format(module["name"], 
str(error)))
         return result
 
     def _load_module(self, module_name, config_name=None):
@@ -244,9 +259,12 @@
             for module in self._modules:
                 self._current_module = module
                 module.update_wrapper(module.widgets())
-                for widget in module.widgets():
-                    widget.link_module(module)
-                    self._output.draw(widget=widget, module=module, 
engine=self)
+                if module.error == None:
+                    for widget in module.widgets():
+                        widget.link_module(module)
+                        self._output.draw(widget=widget, module=module, 
engine=self)
+                else:
+                    self._output.draw(widget=module.errorWidget(), 
module=module, engine=self)
             self._output.flush()
             self._output.end()
             if self.running():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/modules/battery.py 
new/bumblebee-status-1.6.1/bumblebee/modules/battery.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/battery.py     2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/battery.py     2018-04-11 
20:14:45.000000000 +0200
@@ -105,8 +105,11 @@
             state.append("AC")
         else:
             charge = ""
-            with open("{}/status".format(widget.name)) as f:
-                charge = f.read().strip()
+            try:
+                with open("{}/status".format(widget.name)) as f:
+                    charge = f.read().strip()
+            except IOError:
+                pass
             if charge == "Discharging":
                 state.append("discharging-{}".format(min([10, 25, 50, 80, 
100], key=lambda i: abs(i-capacity))))
             else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bumblebee-status-1.6.0/bumblebee/modules/brightness.py 
new/bumblebee-status-1.6.1/bumblebee/modules/brightness.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/brightness.py  2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/brightness.py  2018-04-11 
20:14:45.000000000 +0200
@@ -29,7 +29,7 @@
 
     def brightness(self, widget):
         if isinstance(self._brightness, float):
-            return "{:03.0f}%".format(self._brightness)
+            return "{:3.0f}%".format(self._brightness).strip()
         else:
             return "n/a"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/modules/datetime.py 
new/bumblebee-status-1.6.1/bumblebee/modules/datetime.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/datetime.py    2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/datetime.py    2018-04-11 
20:14:45.000000000 +0200
@@ -31,7 +31,10 @@
         super(Module, self).__init__(engine, config,
             bumblebee.output.Widget(full_text=self.get_time))
         self._fmt = self.parameter("format", default_format(self.name))
-        lcl = self.parameter("locale", ".".join(locale.getdefaultlocale()))
+        l = locale.getdefaultlocale()
+        if not l:
+            l = ('en_US', 'UTF-8')
+        lcl = self.parameter("locale", ".".join(l))
         locale.setlocale(locale.LC_TIME, lcl.split("."))
 
     def get_time(self, widget):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/modules/dnf.py 
new/bumblebee-status-1.6.1/bumblebee/modules/dnf.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/dnf.py 2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/dnf.py 2018-04-11 
20:14:45.000000000 +0200
@@ -6,7 +6,7 @@
     * dnf
 
 Parameters:
-    * dnf.interval: Time in seconds between two consecutive update checks 
(defaulst to 30 minutes)
+    * dnf.interval: Time in seconds between two consecutive update checks 
(defaults to 30 minutes)
 
 """
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bumblebee-status-1.6.0/bumblebee/modules/getcrypto.py 
new/bumblebee-status-1.6.1/bumblebee/modules/getcrypto.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/getcrypto.py   2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/getcrypto.py   2018-04-11 
20:14:45.000000000 +0200
@@ -34,6 +34,8 @@
         krakenget = 
requests.get('https://api.kraken.com/0/public/Ticker?pair='+epair).json()
     except (RequestException, Exception):
         return "No connection"
+    if not 'result' in krakenget:
+        return "No data"
     kethusdask = float(krakenget['result'][tickname]['a'][0])
     kethusdbid = float(krakenget['result'][tickname]['b'][0])
     return coin+": "+str((kethusdask+kethusdbid)/2)[0:6]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/modules/memory.py 
new/bumblebee-status-1.6.1/bumblebee/modules/memory.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/memory.py      2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/memory.py      2018-04-11 
20:14:45.000000000 +0200
@@ -50,12 +50,13 @@
                 if tmp[2] == "mB": value = value*1024*1024
                 if tmp[2] == "gB": value = value*1024*1024*1024
                 data[tmp[0]] = value
+        used = data["MemTotal"] - data["MemFree"] - data["Buffers"] - 
data["Cached"] - data["Slab"]
         self._mem = {
             "total": bumblebee.util.bytefmt(data["MemTotal"]),
             "available": bumblebee.util.bytefmt(data["MemAvailable"]),
             "free": bumblebee.util.bytefmt(data["MemFree"]),
-            "used": bumblebee.util.bytefmt(data["MemTotal"] - data["MemFree"] 
- data["Buffers"] - data["Cached"] - data["Slab"]),
-            "percent": (float(data["MemTotal"] - 
data["MemAvailable"])/data["MemTotal"])*100
+            "used": bumblebee.util.bytefmt(used),
+            "percent": float(used)/float(data["MemTotal"])*100.0
         }
 
     def state(self, widget):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/modules/nic.py 
new/bumblebee-status-1.6.1/bumblebee/modules/nic.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/nic.py 2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/nic.py 2018-04-11 
20:14:45.000000000 +0200
@@ -5,6 +5,7 @@
 Parameters:
     * nic.exclude: Comma-separated list of interface prefixes to exclude 
(defaults to "lo,virbr,docker,vboxnet,veth")
     * nic.states: Comma-separated list of states to show (prefix with "^" to 
invert - i.e. ^down -> show all devices that are not in state down)
+    * nic.format: Format string (defaults to "{intf} {state} {ip}")
 """
 
 try:
@@ -31,7 +32,7 @@
                 self._states["exclude"].append(state[1:])
             else:
                 self._states["include"].append(state)
-
+        self._format = self.parameter("format","{intf} {state} {ip}");
         self._update_widgets(widgets)
 
     def update(self, widgets):
@@ -91,7 +92,12 @@
             if not widget:
                 widget = bumblebee.output.Widget(name=intf)
                 widgets.append(widget)
-            widget.full_text("{} {} {}".format(intf, state, ", ".join(addr)))
+            widget.full_text(self._format.format(
+                **{
+                    "intf": intf,
+                    "state": state,
+                    "ip": ", ".join(addr)
+                }))
             widget.set("intf", intf)
             widget.set("state", state)
             widget.set("visited", True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bumblebee-status-1.6.0/bumblebee/modules/pulseaudio.py 
new/bumblebee-status-1.6.1/bumblebee/modules/pulseaudio.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/pulseaudio.py  2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/pulseaudio.py  2018-04-11 
20:14:45.000000000 +0200
@@ -1,14 +1,17 @@
 # pylint: disable=C0111,R0903
 
-"""Displays volume and mute status of PulseAudio devices.
+"""Displays volume and mute status and controls for PulseAudio devices. Use 
wheel up and down to change volume, left click mutes, right click opens 
pavucontrol.
 
-Aliases: pasink, pasource
+Aliases: pasink (use this to control output instead of input), pasource
 
 Parameters:
     * pulseaudio.autostart: If set to "true" (default is "false"), 
automatically starts the pulseaudio daemon if it is not running
 
 Requires the following executable:
+    * pulseaudio
     * pactl
+    * pavucontrol
+    * pacmd
 """
 
 import re
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bumblebee-status-1.6.0/bumblebee/modules/taskwarrior.py 
new/bumblebee-status-1.6.1/bumblebee/modules/taskwarrior.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/taskwarrior.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/taskwarrior.py 2018-04-11 
20:14:45.000000000 +0200
@@ -0,0 +1,39 @@
+"""Displays the number of pending tasks in TaskWarrior.
+
+Requires the following library:
+    * taskw
+
+Parameters:
+    * taskwarrior.taskrc : path to the taskrc file (defaults to ~/.taskrc)
+"""
+
+import bumblebee.input
+import bumblebee.output
+import bumblebee.engine
+
+from taskw import TaskWarrior
+
+
+class Module(bumblebee.engine.Module):
+    """TaskWarrior module."""
+
+    def __init__(self, engine, config):
+        """Initialize taskwarrior module."""
+        super(Module, self).__init__(engine, config,
+                                     bumblebee.output.Widget(
+                                         full_text=self.output))
+        self._pending_tasks_count = "0"
+
+    def update(self, widgets):
+        """Return a string with the number of pending tasks from 
TaskWarrior."""
+        try:
+            taskrc = self.parameter("taskrc", "~/.taskrc")
+            w = TaskWarrior(config_filename=taskrc)
+            pending_tasks = w.filter_tasks({'status': 'pending'})
+            self._pending_tasks_count = str(len(pending_tasks))
+        except:
+            self._pending_tasks_count = 'Error'
+
+    def output(self, _):
+        """Format the task counter to output in bumblebee."""
+        return "{}".format(self._pending_tasks_count)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/modules/traffic.py 
new/bumblebee-status-1.6.1/bumblebee/modules/traffic.py
--- old/bumblebee-status-1.6.0/bumblebee/modules/traffic.py     2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/modules/traffic.py     2018-04-11 
20:14:45.000000000 +0200
@@ -76,6 +76,8 @@
             state = "down"
             if len(self.get_addresses(interface)) > 0:
                 state = "up"
+            elif bumblebee.util.asbool(self.parameter("hide_down", True)):
+                continue
 
             if len(self._states["exclude"]) > 0 and state in 
self._states["exclude"]: continue
             if len(self._states["include"]) > 0 and state not in 
self._states["include"]: continue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/bumblebee/theme.py 
new/bumblebee-status-1.6.1/bumblebee/theme.py
--- old/bumblebee-status-1.6.0/bumblebee/theme.py       2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/bumblebee/theme.py       2018-04-11 
20:14:45.000000000 +0200
@@ -6,7 +6,6 @@
 import glob
 import copy
 import json
-import yaml
 import io
 import re
 import logging
@@ -233,6 +232,10 @@
             widget.set(key, (idx + 1) % len(value))
             value = value[idx]
 
+        mod = widget.get_module()
+        if mod and not mod.parameter("is-unittest"):
+            value = widget.get_module().parameter("theme.{}".format(name), 
value)
+
         if isinstance(value, list) or isinstance(value, dict):
             return value
         return self._colorset.get(value, value)
Binary files old/bumblebee-status-1.6.0/screenshots/taskwarrior.png and 
new/bumblebee-status-1.6.1/screenshots/taskwarrior.png differ
Binary files 
old/bumblebee-status-1.6.0/screenshots/themes/powerline-greyish.png and 
new/bumblebee-status-1.6.1/screenshots/themes/powerline-greyish.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bumblebee-status-1.6.0/themes/greyish-powerline.json 
new/bumblebee-status-1.6.1/themes/greyish-powerline.json
--- old/bumblebee-status-1.6.0/themes/greyish-powerline.json    1970-01-01 
01:00:00.000000000 +0100
+++ new/bumblebee-status-1.6.1/themes/greyish-powerline.json    2018-04-11 
20:14:45.000000000 +0200
@@ -0,0 +1,40 @@
+{
+       "icons": [ "awesome-fonts" ],
+       "defaults": {
+               "separator-block-width": 0,
+               "warning": {
+                       "fg": "#002b36",
+                       "bg": "#b58900"
+               },
+               "critical": {
+                       "fg": "#002b36",
+                       "bg": "#dc322f"
+               }
+       },
+       "cycle": [
+               { "fg": "#EFEFEF", "bg": "#0D0D0D" },
+               { "fg": "#EFEFEF", "bg": "#4F4F4F" }
+       ],
+       "dnf": {
+               "good": {
+                       "fg": "#002b36",
+                       "bg": "#859900"
+               }
+       },
+       "pacman": {
+               "good": {
+                       "fg": "#002b36",
+                       "bg": "#859900"
+               }
+       },
+       "battery": {
+               "charged": {
+                       "fg": "#002b36",
+                       "bg": "#859900"
+               },
+               "AC": {
+                       "fg": "#002b36",
+                       "bg": "#859900"
+               }
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bumblebee-status-1.6.0/themes/icons/awesome-fonts.json 
new/bumblebee-status-1.6.1/themes/icons/awesome-fonts.json
--- old/bumblebee-status-1.6.0/themes/icons/awesome-fonts.json  2018-01-07 
20:41:14.000000000 +0100
+++ new/bumblebee-status-1.6.1/themes/icons/awesome-fonts.json  2018-04-11 
20:14:45.000000000 +0200
@@ -132,5 +132,8 @@
     "snow": { "prefix": "" },
     "clear": { "prefix": "" },
     "thunder": { "prefix": "" }
+  },
+  "taskwarrior": {
+      "prefix": "  "
   }
 }


Reply via email to