From 754707379a12058b4c66802c3f0545c0e634103d Mon Sep 17 00:00:00 2001 From: Alex Kelly Date: Mon, 12 Sep 2022 13:29:19 -0400 Subject: [PATCH 1/3] 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) From e76a6e0ba30a86ea20e827fd166d678e34209aa2 Mon Sep 17 00:00:00 2001 From: Alex Kelly Date: Mon, 12 Sep 2022 13:36:05 -0400 Subject: [PATCH 2/3] [doc] update document to reflec the show_active param for taskwarrior --- docs/modules.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules.rst b/docs/modules.rst index e3a055f..49d0256 100644 --- a/docs/modules.rst +++ b/docs/modules.rst @@ -1612,6 +1612,7 @@ Requires the following library: Parameters: * taskwarrior.taskrc : path to the taskrc file (defaults to ~/.taskrc) + * taskwarrior.show_active: true/false(default) to show the active task ID and description when one is active, otherwise show the total number pending. contributed by `chdorb `_ - many thanks! From 54d5e83909454972e63a4fedbec85d3d071fec45 Mon Sep 17 00:00:00 2001 From: Alex Kelly Date: Mon, 12 Sep 2022 13:43:10 -0400 Subject: [PATCH 3/3] [modules/taskwarrior] Update docstring with show.active stuff --- bumblebee_status/modules/contrib/taskwarrior.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bumblebee_status/modules/contrib/taskwarrior.py b/bumblebee_status/modules/contrib/taskwarrior.py index 7bc4c39..9aa6157 100644 --- a/bumblebee_status/modules/contrib/taskwarrior.py +++ b/bumblebee_status/modules/contrib/taskwarrior.py @@ -24,7 +24,12 @@ class Module(core.module.Module): self.__pending_tasks = "0" def update(self): - """Return a string with the number of pending tasks from TaskWarrior.""" + """Return a string with the number of pending tasks from TaskWarrior + or the descripton of an active task. + + if show.active is set in the config, show the description of the + current active task, otherwise the number of pending tasks will be displayed. + """ try: taskrc = self.parameter("taskrc", "~/.taskrc") show_active = self.parameter("show_active", False) @@ -33,6 +38,8 @@ class Module(core.module.Module): w.filter_tasks({"start.any": "", "status": "pending"}) or None ) if show_active and active_tasks: + # this is using the first element of the list, if there happen + # to be other active tasks, they won't be displayed. reporting_tasks = ( f"{active_tasks[0]['id']} - {active_tasks[0]['description']}" )