A command-line task manager

In Context

Tasks have a tendency to accumulate over time resulting in unwieldy to-do lists. To filter out unwanted tasks, you can use the context command to specify the filtering criteria (Listing 7).

Listing 7


$ dstask context +private -basement project:spring cleaning

The command in Listing 7 tells dstask to only pay attention to tasks tagged as private that do not contain the basement keyword, but that do belong to the spring cleaning project. For now, the tool ignores all other tasks. If you create a new task at this point, it will automatically be tagged private and will belong to the spring cleaning project.

To reset the filter, type:

dstask context none

This tells dstask to get back to work on all existing tasks again. A call to dstask reveals the active context. If you are missing a task, check the context first (Figure 5).

Figure 5: The clean up basement task does not match the rules of the defined context, so it no longer appears in the list of pending tasks.


You probably need to clean up your desk far more often than your basement. For recurring tasks, templates can save you some typing (Figure 6). Templates are initially conventional tasks, but you create them using the template keyword (Listing 8, line 1). To show all existing templates, enter

dstask show-templates

which ignores any remaining actions.

Listing 8


01 $ dstask template clean up desk +Private P3 project:administration
02 $ dstask add template:4 sort pencils
Figure 6: First a new template is created and then a new task is created based on the template. Since dstask treats the templates like tasks internally, the template is assigned an ID of 4.

To create a new task based on a template, you run add again, but reference the template. The command from line 2 of Listing 8 tells dstask to create a new task that takes all the settings from the template ID 4, but uses the Sort pencils string as the summary.

Git Games

The dstask git log command (Figure 7) returns the latest completed actions. Actions can be undone by typing dstask undo 3, where the number (3) indicates the number of actions to be revoked, starting with the last action performed.

Figure 7: The git action lets you directly invoke other Git commands including log.

If you want to synchronize your task collection with other devices, dstask needs to be installed on those devices as well. In addition, you need a Git repository that all devices can access, such as one on GitHub. Make sure that only you have access to the repository; do not make it public to the entire Internet.

First, create the ~/.dstask/ directory on all devices and clone the contents of the external Git repository to it using git clone. You can now create and manage your tasks in the usual way. To tell dstask to push all the changes to the external Git repository, call dstask sync.

On another PC, call dstask sync again. This tells dstask to sync with the Git repository and fetch the current state. Under the hood, dstask calls the git pull and git push commands. If you are familiar with Git, you can run other Git commands via the dstask git action.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More