{"id":109886,"date":"2020-03-05T08:00:00","date_gmt":"2020-03-05T08:00:00","guid":{"rendered":"https:\/\/fedoramagazine.org\/?p=30458"},"modified":"2020-03-05T08:00:00","modified_gmt":"2020-03-05T08:00:00","slug":"manage-tasks-and-projects-on-fedora-with-taskwarrior","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2020\/03\/05\/manage-tasks-and-projects-on-fedora-with-taskwarrior\/","title":{"rendered":"Manage tasks and projects on Fedora with Taskwarrior"},"content":{"rendered":"<p>There are a multitude of applications to manage your todo list. One of these apps is <a href=\"https:\/\/taskwarrior.org\/\">Taskwarrior<\/a>, it allows you to manage your task in the terminal without a GUI. This article will show you how to get started using it.<\/p>\n<p> <span id=\"more-30458\"><\/span> <\/p>\n<h2>What is Taskwarrior?<\/h2>\n<p><a href=\"https:\/\/taskwarrior.org\/\">Taskwarrior<\/a>&nbsp;is CLI task manager and organizer. It is flexible, fast, and unobtrusive. It does its job then gets out of your way.<\/p>\n<p>Taskwarrior uses <em>$HOME\/.taskrc<\/em> and <em>$HOME\/.task<\/em> to store your settings and tasks respectively.<\/p>\n<h2>Getting started with Taskwarrior<\/h2>\n<p>It&#8217;s easy to use the Taskwarrior to add your daily missions. These are some simple commands. To add tasks:<\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task add buy milk<\/strong> Created task 1. $ <strong>task add buy eggs<\/strong> Created task 2. $ <strong>task add bake cake<\/strong> Created task 3.<\/pre>\n<p>To list your tasks, you can use the <em>task<\/em> command on its own for the simplest listing:<\/p>\n<pre class=\"wp-block-preformatted\">$ task ID Age Description Urg 1 17s buy milk 0 2 14s buy eggs 0 3 11s bake cake 0 3 tasks.<\/pre>\n<p>To mark a task as complete, use the <em>done<\/em> keyword:<\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task 1 done<\/strong> Completed task 1 'buy milk'. Completed 1 task.\n$ <strong>task 2 done<\/strong> Completed task 2 'buy eggs'. Completed 1 task.\n$ <strong>task<\/strong> [task next] ID Age Description Urg 1 57s bake cake 0 1 task<\/pre>\n<h2>Diving deeper into Taskwarrior<\/h2>\n<h3>Priority management<\/h3>\n<p>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 &#8220;Urgency&#8221; value. <\/p>\n<p>Consider the following list.<\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task<\/strong> [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<\/pre>\n<p>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 <em>pri <\/em>modifier. <\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task 4 mod pri:H<\/strong> Modifying task 4 'pay rent'. Modified 1 task.\n$ <strong>task 5 mod pri:M<\/strong> Modifying task 5 'install fedora'. Modified 1 task.\n$ <strong>task<\/strong> [task next] ID Age P Description Urg <strong> 4 4min H pay rent 6<\/strong>\n<strong> 5 2min M install fedora 3.9<\/strong> 1 4min buy eggs 0 2 4min buy flour 0 3 4min bake cake 0 5 tasks<\/pre>\n<p>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 <em>due<\/em> modifier. <\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task 4 mod due:3rd<\/strong> Modifying task 4 'pay rent'. Modified 1 task.\n$ <strong>task<\/strong> [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\n$ <strong>date<\/strong> Sat Feb 29 11:59:29 STD 2020<\/pre>\n<p>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. <\/p>\n<p>However, not all tasks need to be done right away. Say for example you don&#8217;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 <em>wait<\/em> modifier. (Hint: in the following example, <em>som<\/em> is short for &#8220;start of month,&#8221; one of the shortcuts taskwarrior understands.)<\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task 4 mod wait:som<\/strong> Modifying task 4 'pay rent'. Modified 1 task.\n$ <strong>task<\/strong> [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<\/pre>\n<p>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 <em>task waiting<\/em>:<\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task waiting<\/strong> ID Age P Wait Remaining Due Description 4 18min H 2020-03-01 11h 2020-03-03 pay rent 1 task<\/pre>\n<p>There are a few other modifiers you can define. <em>Schedule<\/em> and <em>until<\/em> will place a &#8220;start&#8221; date and remove a task after a date respectfully.<\/p>\n<p>You may have tasks that require other tasks to be completed. To add a dependency for other tasks, use the <em>dep<\/em> modifier:<\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task<\/strong> [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\n$ <strong>task 3 mod dep:1,2<\/strong> Modifying task 3 'bake cake'. Modified 1 task. $ <strong>task<\/strong> [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<\/pre>\n<p>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. <\/p>\n<h3>Annotations<\/h3>\n<p>You can add notes to a task using <em>task &lt;number&gt; annotate:<\/em> <\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task 3 anno No blueberries<\/strong> Annotating task 3 'bake cake'. Annotated 1 task. $ <strong>task<\/strong> [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<\/pre>\n<h3>Organizing tasks<\/h3>\n<p>Tasks can being assigned to projects and tags by using the <em>project<\/em> modifier and adding a tag using the + sign followed by the tag name, such as <em>+problem<\/em>.<\/p>\n<h2>Putting it all together<\/h2>\n<p>You can combine everything you learned to create a task in one line with all the required options. <\/p>\n<pre class=\"wp-block-preformatted\">$ <strong>task add Write Taskwarrior post \\\npri:M due:1m wait:som until:due+2w sche:15th \\\nproject:magazine +taskwarrior +community +linux<\/strong> Created task 6. The project 'magazine' has changed. Project 'magazine' is 0% complete (1 task remaining).\n$ <strong>task 6<\/strong> 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<\/pre>\n<h2>Installing Taskwarrior on Fedora<\/h2>\n<div class=\"wp-block-group\">\n<div class=\"wp-block-group__inner-container\">\n<p>Taskwarrior&nbsp;is available in the default Fedora repository. To install it use this command <a href=\"https:\/\/fedoramagazine.org\/howto-use-sudo\/\">with sudo<\/a>:<\/p>\n<pre class=\"wp-block-preformatted\">$ sudo dnf install task<\/pre>\n<\/div>\n<\/div>\n<div class=\"wp-block-group\">\n<div class=\"wp-block-group__inner-container\">\n<p>For rpm-ostree based distributions like Fedora Silverblue:<\/p>\n<\/div>\n<\/div>\n<div class=\"wp-block-group\">\n<div class=\"wp-block-group__inner-container\">\n<pre class=\"wp-block-preformatted\">$ sudo rpm-ostree install task <\/pre>\n<\/div>\n<\/div>\n<h2>Tips and tricks<\/h2>\n<ul>\n<li>Taskwarrior has a hook system, meaning that there are many tools you can plug in, such as <a href=\"http:\/\/pypi.python.org\/pypi\/bugwarrior\">bugwarrior<\/a>!<\/li>\n<li>Taskwarrior can connect to a <a href=\"https:\/\/gitpitch.com\/GothenburgBitFactory\/taskserver-setup#\/\">taskserver<\/a> for server\/client setups. (This is left as an exercise for the reader for now.)<\/li>\n<\/ul>\n<hr class=\"wp-block-separator\" \/>\n<p><em>Photo by\u00a0<a href=\"https:\/\/unsplash.com\/@kupriets?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Bogdan Kupriets<\/a>\u00a0on\u00a0<a href=\"https:\/\/unsplash.com\/s\/photos\/warrior?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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&nbsp;is CLI task manager and organizer. It is flexible, fast, and [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[88,250,606,45,46,47,933,934,218,935,936,937,44],"class_list":["post-109886","post","type-post","status-publish","format-standard","hentry","category-fedora-os","tag-cli","tag-command-line-tool","tag-faqs-and-guides","tag-fedora","tag-magazine","tag-news","tag-organization","tag-personal-organization","tag-productivity","tag-tasks","tag-todo","tag-tracking","tag-using-software"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/109886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=109886"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/109886\/revisions"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=109886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=109886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=109886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}