9am: Setting Up Audible Reminders in the Terminal: Mastering Taskwarrior

Let's get organised. Using the terminal and Taskwarrior, we can set some reminders and have your Mac read them out loud.

What does this article replace?

As we enter the fourth hour of our terminal day, we are making sure that you never miss a task again. Replace your standard to-do list apps with a more sophisticated and interactive command-line alternative.

How long will it take to set up?

While it might seem like a complex task, setting up audible reminders with Taskwarrior and your Mac's "say" command is surprisingly straightforward. Even if you're not very familiar with using the terminal, you should be able to have everything up and running in less than 30 minutes. This includes installing necessary packages, setting up Taskwarrior, writing your reminder script, and scheduling it with cron. Remember, each minute spent setting this up will save you time and stress in the future, helping you stay on top of your tasks effortlessly. So, let's get started!

Mastering Taskwarrior

Get your audible task management system ready in just 15 minutes!

3 out of 5 stars

Difficulty Rating:

Enabling text-to-speech on your Mac to have it read your tasks aloud requires a moderate level of difficulty, rated 3 out of 5. It involves configuring system settings, utilizing command-line tools or scripting languages, and implementing the necessary commands to convert and play text as speech. While it may require some technical knowledge and familiarity with the command line, following the instructions provided will enable you to have your tasks read out loud by your Mac, adding a unique and interactive element to your workflow.

Step 1: Create a task with a due date

For this example, we'll create a task called "Attend meeting" that's due at 2 PM. You would create this task in Taskwarrior as follows:

task add "Attend meeting" due:2pm

Make sure you have set the due time correctly as per your system's time settings.

Step 2: Script to check for upcoming tasks

Next, we'll create a script that checks for tasks due within the next hour. If such tasks exist, the script will have your Mac read them out loud.

Create a new file named task_reminder.sh and open it in your preferred text editor. You could create this file in your home directory for simplicity.

Paste the following code into task_reminder.sh:

#!/bin/bash

# get the tasks due within the next hour
tasks=$(task +READY due.before:now+1h export | jq -r '.[].description')

if [ -n "$tasks" ]; then
  # if tasks exist, have Mac read them out
  say "You have the following tasks due within the next hour: $tasks"
fi

This script uses jq to parse the JSON output of the Taskwarrior command. If jq isn't installed on your system, you can install it using Homebrew with brew install jq.

Save the file and then make it executable with the following command:

chmod +x ~/task_reminder.sh

Step 3: Schedule the script

Now, we need to schedule this script to run periodically. One way to do this is using cron. Open your crontab file using the command crontab -e and add the following line:

*/15 * * * * /Users/yourusername/task_reminder.sh

Replace yourusername with your actual username. This cron job will run task_reminder.sh every 15 minutes.

And that's it! Your Mac will now read out your tasks that are due within the next hour, every 15 minutes. Of course, this is a simple example, and there's much more you can do when you integrate Taskwarrior with the say command, like customizing voices or creating more complex reminders. But this should get you started.


Taskwarrior integrated with the 'say' command, offers a unique task management experience. Keep your tasks in check and always stay on top of your game. Stay tuned for the next hour's challenge!