diff --git a/bumblebee/modules/taskwarrior.py b/bumblebee/modules/taskwarrior.py new file mode 100644 index 0000000..a7ba92d --- /dev/null +++ b/bumblebee/modules/taskwarrior.py @@ -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 ouptut in bumblebee.""" + return "{}".format(self._pending_tasks_count) diff --git a/screenshots/taskwarrior.png b/screenshots/taskwarrior.png new file mode 100644 index 0000000..6f20147 Binary files /dev/null and b/screenshots/taskwarrior.png differ diff --git a/themes/icons/awesome-fonts.json b/themes/icons/awesome-fonts.json index d5f1c97..b9491da 100644 --- a/themes/icons/awesome-fonts.json +++ b/themes/icons/awesome-fonts.json @@ -132,5 +132,8 @@ "snow": { "prefix": "" }, "clear": { "prefix": "" }, "thunder": { "prefix": "" } + }, + "taskwarrior": { + "prefix": "  " } }