There are a multitude of applications to manage your todo list. One of these apps is Taskwarrior, it allows you to manage your task in the terminal without a GUI. This article will show you how to get started using it.
What is Taskwarrior?
Taskwarrior is CLI task manager and organizer. It is flexible, fast, and unobtrusive. It does its job then gets out of your way.
Taskwarrior uses $HOME/.taskrc and $HOME/.task to store your settings and tasks respectively.
Getting started with Taskwarrior
It’s easy to use the Taskwarrior to add your daily missions. These are some simple commands. To add tasks:
$ task add buy milk Created task 1. $ task add buy eggs Created task 2. $ task add bake cake Created task 3.
To list your tasks, you can use the task command on its own for the simplest listing:
$ task ID Age Description Urg 1 17s buy milk 0 2 14s buy eggs 0 3 11s bake cake 0 3 tasks.
To mark a task as complete, use the done keyword:
$ task 1 done Completed task 1 'buy milk'. Completed 1 task. $ task 2 done Completed task 2 'buy eggs'. Completed 1 task. $ task [task next] ID Age Description Urg 1 57s bake cake 0 1 task
Diving deeper into Taskwarrior
Priority management
Taskwarrior (task) is designed to help prioritize your tasks. To do this, task has multiple implicit and explicit variables it can use to determine an “Urgency” value.
Consider the following list.
$ task [task next] ID Age Description Urg 1 2min buy eggs 0 2 2min buy flour 0 3 2min bake cake 0 4 2min pay rent 0 5 3s install fedora 0 5 tasks
One could argue that paying your rent and installing Fedora have a higher priority than baking a cake. You can tell task about this by using the pri modifier.
$ task 4 mod pri:H Modifying task 4 'pay rent'. Modified 1 task. $ task 5 mod pri:M Modifying task 5 'install fedora'. Modified 1 task. $ task [task next] ID Age P Description Urg 4 4min H pay rent 6 5 2min M install fedora 3.9 1 4min buy eggs 0 2 4min buy flour 0 3 4min bake cake 0 5 tasks
Rent is very important, it has a due date that we need to pay it by, such as within 3 days from the 1st of the month. You can tell task this by using the due modifier.
$ task 4 mod due:3rd Modifying task 4 'pay rent'. Modified 1 task. $ task [task next] ID Age P Due Description Urg 4 12min H 2d pay rent 13.7 5 10min M install fedora 3.9 1 12min buy eggs 0 2 12min buy flour 0 3 12min bake cake 0 5 tasks $ date Sat Feb 29 11:59:29 STD 2020
Because the 3rd of next month is nearby, the urgency value of rent has skyrocketed, and will continue to do so once we have reached and passed the due date.
However, not all tasks need to be done right away. Say for example you don’t want to worry about paying your rent until it is posted on the first of the month. You can tell taskwarrior about this using the wait modifier. (Hint: in the following example, som is short for “start of month,” one of the shortcuts taskwarrior understands.)
$ task 4 mod wait:som Modifying task 4 'pay rent'. Modified 1 task. $ task [task next] ID Age P Description Urg 5 14min M install fedora 3.9 1 16min buy eggs 0 2 16min buy flour 0 3 16min bake cake 0 4 tasks
You will no longer be able to see the pay rent task until the start of the month. You can view waiting tasks by using task waiting:
$ task waiting ID Age P Wait Remaining Due Description 4 18min H 2020-03-01 11h 2020-03-03 pay rent 1 task
There are a few other modifiers you can define. Schedule and until will place a “start” date and remove a task after a date respectfully.
You may have tasks that require other tasks to be completed. To add a dependency for other tasks, use the dep modifier:
$ task [task next] ID Age P Description Urg 5 30min M install fedora 3.9 1 33min buy eggs 0 2 33min buy flour 0 3 33min bake cake 0 4 tasks $ task 3 mod dep:1,2 Modifying task 3 'bake cake'. Modified 1 task. $ task [task next] ID Age Deps P Description Urg 1 33min buy eggs 8 2 33min buy flour 8 5 31min M install fedora 3.9 3 33min 1 2 bake cake -5 4 tasks
This will modify the priorities of any tasks that is blocking a task. Now buying eggs and flour is more urgent because it is preventing you from performing a task.
Annotations
You can add notes to a task using task <number> annotate:
$ task 3 anno No blueberries Annotating task 3 'bake cake'. Annotated 1 task. $ task [task next] ID Age Deps P Description Urg 1 1h buy eggs 8 2 1h buy flour 8 5 1h M install fedora 3.9 3 1h 1 2 bake cake -4.2 2020-02-29 No blueberries 4 tasks
Organizing tasks
Tasks can be assigned to projects and tagged by using the project modifier and adding a tag using the + sign followed by the tag name, such as +problem.
Putting it all together
You can combine everything you learned to create a task in one line with all the required options.
$ task add Write Taskwarrior post \ pri:M due:1m wait:som until:due+2w sche:15th \ project:magazine +taskwarrior +community +linux Created task 6. The project 'magazine' has changed. Project 'magazine' is 0% complete (1 task remaining). $ task 6 No command specified - assuming 'information'. Name Value ID 6 Description Write Taskwarrior post Status Waiting Project magazine Entered 2020-02-29 13:50:27 (6s) Waiting until 2020-03-01 00:00:00 Scheduled 2020-03-15 00:00:00 Due 2020-03-30 14:50:27 Until 2020-04-13 14:50:27 Last modified 2020-02-29 13:50:27 (6s) Tags taskwarrior community linux Virtual tags SCHEDULED TAGGED UDA UNBLOCKED UNTIL WAITING YEAR LATEST PROJECT PRIORITY UUID 27768737-f6a2-4515-af9d-4f58773c76a5 Urgency 5.3 Priority M
Installing Taskwarrior on Fedora
Taskwarrior is available in the default Fedora repository. To install it use this command with sudo:
$ sudo dnf install task
For rpm-ostree based distributions like Fedora Silverblue:
$ sudo rpm-ostree install task
Tips and tricks
- Taskwarrior has a hook system, meaning that there are many tools you can plug in, such as bugwarrior!
- Taskwarrior can connect to a taskserver for server/client setups. (This is left as an exercise for the reader for now.)
Photo by Bogdan Kupriets on Unsplash.
Guus
Thanks! Good cli applications are not that easy to find, especially non-system-utility apps. Thank your for showing this one.
as
Over-engineered and missing the point – what if I have a task made of subtasks, or want to add a huge text as an anchor?
CLI doesn’t lend itself well for this imo.
Ryan Walter
I would recommend a project manager like for those type of situations. https://www.projectlibre.com/
Personally, I would create more tasks and apply dependencies on tasks for your subtasks example.
For the large text anchor, I am not sure what you mean. If you mean Annotations, I would add a reference to my notebook or journal if that text was overly large. but In my personal Task I have some tasks with 5 different annotations, each about 2 sentences long.
Leslie Satenstein
Task to me is a kiss application. I am a consultant, and I manage myself. It is perfect for my needs.
Does it handle re-occuring tasks? Currently I use Gnome Calendar for that purpose. I would like to just focus on having one application on my laptop for task management
Ryan Walter
Yes it does – https://taskwarrior.org/docs/recurrence.html
However I would still recommend using a calendar to mark special dates. Such as birthdays, Or “Certificate expirey” In consultant related tasks.
John Capslock
Hi Leslie,
looks like you already have grey hair – so no time to waste: If you are completely disorganized ‘task warrior’ would be a start. If you want to do it right from the beginning use emacs with org-mode (https://orgmode.org/)
fs
Nice to know about this command line tool, I will give it a try. Thanks.
I guess, in the annotation section, the given example is not well formatted. btw
Ryan Walter
Fixed. Thank you
shashikanth
how to make cli applications?
WD83
A great tool that works great to capture those random todos that don’t fit into a larger project gantt chart. As an engineer, I use taskwarrior to track my action items for specific projects, especially those that don’t have a public bug-tracking site (eg, PCB designs in KiCad), or to track issues I don’t want released publicly (needed phone calls, meeting actions, etc).
You can change taskwarrior’s working directory by setting the TASKDATA environmental variable. In my bashrc file, I’ve added the following line:
alias ptask=’TASKDATA=$(git rev-parse –show-toplevel)/task task’
Now when I run the command ptask (for project task), it creates and works in a folder “task” at the top level of whichever git repository I happen to be in. Add the task folder to my .gitignore folder, and voila!
baoboa
Work well on gnome desktop with taskwhisperer
https://extensions.gnome.org/extension/1039/taskwhisperer/
evgeniusx
Taskwarrior very good application.
P.S.
Homeland Mother! Nice)).
reyge
No localisation for my language
;(
not for me
John Wing
This is great, until my wife discovers it 😉 Thanks!
why?
Would you use nazis symbols in your article? If not, why are you using this soviet symbol?
I understand that other nations are not so loud in US as jews, but soviets occupied multiple countries, killed, imprisoned or deported everyone who were against being occupied and ruled by alcoholics from russia.
stan
“alcoholics from Russia”, nice racism there. I hope your comment gets deleted if the mods have any backbone here.
aten
“russian” is not a race, but nationality, therefore the term you’re looking for is probably “chauvinism”. Assuming previous coment is left by someone from one of the countries of xUSSR, where people have rather solid reasons to talk that way about soviets. 🤷🏻♂️
Stalin
Oh, please! They had their own alcoholics.
Maci
#Covid19 How download all packages source fedora and binary.
I need all packages localy offline if the internet dont work
David
Why is the emblem of the Soviet Union on that statute’s shield? I’m just curious.
aten
It’s a giant statue in Kyiv, Ukraine, dedicated to the soviet victory in WWII, so naturally it’s got a soviet coat of arms on its shield.
https://en.wikipedia.org/wiki/Motherland_Monument
Because the parliament of Ukraine outlawed Soviet and Communist symbols back in 2015, that soviet emblem should have been peeled off from that statue’s shield, but at the moment they just occasionally cover it with a giant flag of Ukraine.
I really don’t know why they decided to use it for this article for Taskwarrior. Kinda poor choice, if you ask me.
I have no opinion on the software tho.
Anarchean
It’s the motherland monument in Kyiv. As much as I’d like to think otherwise, the author probably didn’t even notice, just googled, or better yet, duckduckgoed “warrior” (with the right license restrictions, I think they have to use CC) and ended up with that image.
e3
You’re right. People don’t understand how criminal the communist system was
David
Honestly I don’t get it, this is the type of functionality that is best delivered via a graphical app. It is sort of like trying to use a command line text editor in a generation where graphical editors are dime a dozen.
Earl Ramirez
It’s a personal preference, I rather CLI for anything even though there are beautiful UI, I still use VIM for writing code and documentation with LaTeX.
aten
If you are unlucky to have only one hand, with only one finger on it, and even that one is permanently attached to a mouse, then any functionality for you “is best delivered via a graphical app”. Software “generation” has nothing to do with it
Matthew Bunt
One of the strengths of the Linux ecosystem is that there are many tools available that suite the needs of how people work. A graphical task manager may be best for you, but it doesn’t mean that its best for everyone. Best is subjective and context dependent. Many people like using the command line and vim or emacs may be the best text editor available for them. Just like many people prefer graphical applications and they may love VSCode. Neither is wrong and both are using the best tools for their work.
Artem
Fedora is a supporter of communism?
Paul W. Frields
No, this was a statue of a warrior that came up in a freely licensed image search, and the symbol didn’t register. Thanks for pointing it out politely, and we will be careful to examine the images more closely in the future.