TUI Challenge: Day 6

Day 6: Task Management

Another fairly easy day for me as I already mainly use TUI and CLI for task and calendar management.

Task management

                                Monthly Burndown
250 |
    |
    |           .
    |  .        .
    |  .  .  .  .           .  .
    |  .  .  .  .  .  .  .  .  .  .  .  .                              . Done
    |  .  .  .  .  .  .  .  .  .  .  .  .                              + Started
125 |  .  .  .  .  .  .  .  .  .  .  .  .                              X Pending
    |  .  .  .  .  .  .  .  .  .  .  X  .        .  .  .
    |  .  .  .  .  .  X  X  X  .  .  X  .  .  .  .  .  .  .  .
    |  X  X  X  X  X  X  X  X  X  X  X  .  X  X  X  X  X  .  .  .  .
    |  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  .  X  X  X
    |  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X
    |  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X
    |  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X
  0 +---------------------------------------------------------------
      10 11 12 01 02 03 04 05 06 07 08 09 10 11 12 01 02 03 04 05 06
      2023     2024                                2025

   Net Fix Rate:         1.8/d
   Estimated completion: 2025-08-03 (7w)

I have been using taskwarrior for years now. It is a simple command line tool for maintaining your task list. It stores its data in simple text files so backing it up is easy. I use a simple TUI called vit for viewing and interacting with my tasks.

I use taskwarrior for a mix of things I have to do for the family and work, and as a reminder system for websites, projects, and/or media I want to visit but I do not have time for. I even wrote a script to convert emails from neomutt or news articles from newsboat, a TUI RSS reader, to tasks:

#!/usr/bin/env bash
set -o nounset                              # Treat unset variables as an error

tmpfile=$(mktemp)
cat /dev/stdin > "${tmpfile}"

subj=$(grep -E ^'(Subject|Title)': "${tmpfile}" | sed  -e 's/^Subject: //' -e 's/^Title: //')

id=$(task add pri:H due:2d +email "${subj}" | grep ^Created | sed 's/^Created task \(.*\)./\1/')
cat "${tmpfile}" | onenote "${id}" -
echo "${id}"
rm -f "${tmpfile}"

I also have a daily report sent to me in email with my current top tasks, any due today or overdue, as well as my schedule over the next three days.

To keep all my tasks together, I use taskd which I run in a container..

Calendar

For managing my calendar, I use khal for my text based calendar. For the above mentioned reporting, I use khal to list my events. When I need a TUI, I use ikhal which is part of the khal package. This is a nice TUI with vim keys for navigation and gives me a great overview of my events.

I sync this using vdirsyncer to sync my calendars (and address book) with my NextCloud server. I use a custom vdirsyncer profile to sync NextCloud with Google for the shared family calendars.

Daily totals

After yesterday I have accrued 120 points. How does today help that score? Well, completion of task management and calendars nets 20 points, with 5 bonus points for syncing and 10 bonus points for scripting reports using these tools, for a total of 35 points today, and a running total of 155 points.