From 754707379a12058b4c66802c3f0545c0e634103d Mon Sep 17 00:00:00 2001 From: Alex Kelly Date: Mon, 12 Sep 2022 13:29:19 -0400 Subject: [PATCH] Add active-task display and scrolling This adds an option allowing you to specify "taskwarrior.show_active=true" in your bar configuration and will display the current, active task id and description on the status bar, but will show the number of pending tasks if one isn't active. This also adds the scrolling decorator, since task descriptions can be quite long. --- bumblebee_status/modules/contrib/taskwarrior.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/bumblebee_status/modules/contrib/taskwarrior.py b/bumblebee_status/modules/contrib/taskwarrior.py index 0d540b5..7bc4c39 100644 --- a/bumblebee_status/modules/contrib/taskwarrior.py +++ b/bumblebee_status/modules/contrib/taskwarrior.py @@ -27,12 +27,22 @@ class Module(core.module.Module): """Return a string with the number of pending tasks from TaskWarrior.""" try: taskrc = self.parameter("taskrc", "~/.taskrc") + show_active = self.parameter("show_active", False) w = TaskWarrior(config_filename=taskrc) - pending_tasks = w.filter_tasks({"status": "pending"}) - self.__pending_tasks = str(len(pending_tasks)) + active_tasks = ( + w.filter_tasks({"start.any": "", "status": "pending"}) or None + ) + if show_active and active_tasks: + reporting_tasks = ( + f"{active_tasks[0]['id']} - {active_tasks[0]['description']}" + ) + else: + reporting_tasks = len(w.filter_tasks({"status": "pending"})) + self.__pending_tasks = reporting_tasks except: self.__pending_tasks = "n/a" + @core.decorators.scrollable def output(self, _): """Format the task counter to output in bumblebee.""" return "{}".format(self.__pending_tasks)