From 68cb2e1c79373fb89ae1cf23fadc60b155c8b51c Mon Sep 17 00:00:00 2001 From: Frank Zhao Date: Tue, 4 Jun 2019 13:48:36 +1000 Subject: [PATCH] Add datetimetz module for timezone information in date display Allow multiple comma seperated timezones Handle click to cycle through configured timezones Example: ``` bumblebee-status -m datetimetz -p \ datetimetz.timezone=\ "Australia/Sydney,Pacific/Auckland,America/Los_Angeles" ``` Added dependencies to travis config --- .travis.yml | 2 + PKGBUILD | 4 +- README.md | 2 + bumblebee/modules/datetimetz.py | 79 ++++++++++++++++++++++++++++++++ screenshots/datetimetz.gif | Bin 0 -> 111595 bytes themes/icons/awesome-fonts.json | 3 ++ 6 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 bumblebee/modules/datetimetz.py create mode 100644 screenshots/datetimetz.gif diff --git a/.travis.yml b/.travis.yml index 2e763fb..39c71a6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,8 @@ install: - pip install -U coverage==4.3 - pip install codeclimate-test-reporter - pip install taskw + - pip install pytz + - pip install tzlocal script: - nosetests -v --with-coverage --cover-erase tests/ - CODECLIMATE_REPO_TOKEN=40cb00907f7a10e04868e856570bb997ab9c42fd3b63d980f2b2269433195fdf codeclimate-test-reporter diff --git a/PKGBUILD b/PKGBUILD index 15d0e43..4e6b57d 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -20,7 +20,9 @@ optdepends=('xorg-xbacklight: to display a displays brightness' 'pacman: display current status of pacman' 'iputils: display a ping' 'i3ipc-python: display titlebar' - 'fakeroot: dependency of the pacman module') + 'fakeroot: dependency of the pacman module' + 'pytz: timezone conversion for datetimetz module' + 'tzlocal: retrieve system timezone for datetimetz module') source=("$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") sha512sums=('3a66fc469dd3b081337c9e213a1b2262f25f30977ee6ef65b9fa5a8b6aa341637832d1a5dbb74e30d68e2824e0d19d7a911eb3390dc6062707a552f429b483e8') diff --git a/README.md b/README.md index 652f463..dffe0e3 100644 --- a/README.md +++ b/README.md @@ -186,6 +186,8 @@ Modules and commandline utilities are only required for modules, the core itself * i3ipc (for the module 'title') * pacman-contrib (for module 'arch-update') * docker (for the module 'docker_ps') +* pytz (for the module 'datetimetz') +* localtz (for the module 'datetimetz') # Required commandline utilities diff --git a/bumblebee/modules/datetimetz.py b/bumblebee/modules/datetimetz.py new file mode 100644 index 0000000..e546ace --- /dev/null +++ b/bumblebee/modules/datetimetz.py @@ -0,0 +1,79 @@ +# pylint: disable=C0111,R0903 + +"""Displays the current date and time with timezone options. + +Parameters: + * datetimetz.format : strftime()-compatible formatting string + * datetimetz.timezone : IANA timezone name + * datetz.format : alias for datetimetz.format + * timetz.format : alias for datetimetz.format + * timetz.timezone : alias for datetimetz.timezone + * datetimetz.locale : locale to use rather than the system default + * datetz.locale : alias for datetimetz.locale + * timetz.locale : alias for datetimetz.locale + * timetz.timezone : alias for datetimetz.timezone +""" + +from __future__ import absolute_import +import datetime +import locale +import pytz +import tzlocal +import bumblebee.input +import bumblebee.output +import bumblebee.engine + +ALIASES = ["datetz", "timetz"] + +def default_format(module): + default = "%x %X %Z" + if module == "datetz": + default = "%x %Z" + if module == "timetz": + default = "%X %Z" + return default + +class Module(bumblebee.engine.Module): + def __init__(self, engine, config): + super(Module, self).__init__(engine, config, + bumblebee.output.Widget(full_text=self.get_time)) + engine.input.register_callback(self, button=bumblebee.input.LEFT_MOUSE, cmd=self.next_tz) + engine.input.register_callback(self, button=bumblebee.input.RIGHT_MOUSE, cmd=self.prev_tz) + self._fmt = self.parameter("format", default_format(self.name)) + self._timezones = self.parameter("timezone", tzlocal.get_localzone().zone).split(",") + self._current_tz = 0 + + l = locale.getdefaultlocale() + if not l or l == (None, None): + l = ('en_US', 'UTF-8') + lcl = self.parameter("locale", ".".join(l)) + try: + locale.setlocale(locale.LC_TIME, lcl.split(".")) + except Exception: + locale.setlocale(locale.LC_TIME, ('en_US', 'UTF-8')) + + def get_time(self, widget): + try: + tz = pytz.timezone(self._timezones[self._current_tz].strip()) + retval = datetime.datetime.now(tz=tzlocal.get_localzone()).astimezone(tz).strftime(self._fmt) + except pytz.exceptions.UnknownTimeZoneError: + retval = "[Unknown timezone: {}]".format(self._timezones[self._current_tz].strip()) + + enc = locale.getpreferredencoding() + if hasattr(retval, "decode"): + return retval.decode(enc) + return retval + + def next_tz(self, event): + next_timezone = self._current_tz + 1 + if next_timezone >= len(self._timezones): + next_timezone = 0 # wraparound + self._current_tz = next_timezone + + def prev_tz(self, event): + previous_timezone = self._current_tz - 1 + if previous_timezone < 0: + previous_timezone = 0 # wraparound + self._current_tz = previous_timezone + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/screenshots/datetimetz.gif b/screenshots/datetimetz.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae926ebac904faceb8c55bb1237927c4c93f3b6f GIT binary patch literal 111595 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 literal 0 HcmV?d00001 diff --git a/themes/icons/awesome-fonts.json b/themes/icons/awesome-fonts.json index daa370c..eb4a623 100644 --- a/themes/icons/awesome-fonts.json +++ b/themes/icons/awesome-fonts.json @@ -6,6 +6,9 @@ "date": { "prefix": "" }, "time": { "prefix": "" }, "datetime": { "prefix": "" }, + "datetz": { "prefix": "" }, + "timetz": { "prefix": "" }, + "datetimetz": { "prefix": "" }, "memory": { "prefix": "" }, "cpu": { "prefix": "" }, "disk": { "prefix": "" },