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 @@ [](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/coverage) [](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)):  @@ -190,6 +202,10 @@  +Greyish Powerline (`-t powerline-greyish`) + + + Default (nothing or `-t default`):  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": " " } }
