Bilal's Blog

Home - Blog - Updates

How I Manage My Tasks

I've always wanted a simple task manager that needs the bare minimum to run and function. All I want it to do is add a task, mark a task as started, mark it as done, and perhaps re-edit a task if I made some mistake. Another very important functionality would be appending the date of completing a task; and perhaps adding to a seperate log file the dates of creating, editing, starting and completing the task. This log file would only be used for referencing, and need not be maintained.

For that, I wrote a quick and dirty bash script which appends to a markdown file my tasks. Although it can be used in the terminal, I have it use dmenu as that is much more convenient than opening up a terminal every time I want to use the script. Say I created an entry with 3 tasks, one which I completed, and another one which I have started, and one which I have not started yet, then my file would look something like this:

# Date of Week 1

- [X] Go grocery shopping Sun Sep 26 14:19:42 EDT 2021
- [O] Work on math homework STARTED
- [ ] Pay rent

Reading such a markdown file is actually pretty intuitive, and gets the point across right away. And every week or however often, a new entry can be made with a list of tasks. Funny enough, this is actually how I used to write my tasks, prior to automating the whole thing. But that was not very easy. I divided the script into different functions, for the sake of readability and easier management.

To be able to run the script, make sure you have dmenu installed, and have a Work directory in your home directory. I do have the script check to see if a tasks file exists before running. If it doesn't, it creates a new one and puts it in the Work directory I mentioned earlier. But that can be changed easily. I'm just too lazy to do it. Also, one more tip is when running the script, make sure to choose New Entry from the dmenu options before choosing the Create task option, as that will append a number 1 heading then the list of tasks.

You can find the script here (task_manager) or download it from my github.