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.
This commit is contained in:
Alex Kelly 2022-09-12 13:29:19 -04:00
parent 910b9a8963
commit 754707379a

View file

@ -27,12 +27,22 @@ class Module(core.module.Module):
"""Return a string with the number of pending tasks from TaskWarrior.""" """Return a string with the number of pending tasks from TaskWarrior."""
try: try:
taskrc = self.parameter("taskrc", "~/.taskrc") taskrc = self.parameter("taskrc", "~/.taskrc")
show_active = self.parameter("show_active", False)
w = TaskWarrior(config_filename=taskrc) w = TaskWarrior(config_filename=taskrc)
pending_tasks = w.filter_tasks({"status": "pending"}) active_tasks = (
self.__pending_tasks = str(len(pending_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: except:
self.__pending_tasks = "n/a" self.__pending_tasks = "n/a"
@core.decorators.scrollable
def output(self, _): def output(self, _):
"""Format the task counter to output in bumblebee.""" """Format the task counter to output in bumblebee."""
return "{}".format(self.__pending_tasks) return "{}".format(self.__pending_tasks)