From b869ea4a774b2ff27abf0263401c950358b6062a Mon Sep 17 00:00:00 2001 From: Thomas Lauf Date: Mon, 18 Apr 2022 14:51:09 +0200 Subject: [PATCH] Split FAQ into individual pages --- content/support/faq.md | 393 -------------------------- content/support/faq/_index.md | 11 + content/support/faq/faq.task.001.md | 12 + content/support/faq/faq.task.002.md | 15 + content/support/faq/faq.task.003.md | 27 ++ content/support/faq/faq.task.004.md | 37 +++ content/support/faq/faq.task.005.md | 15 + content/support/faq/faq.task.006.md | 21 ++ content/support/faq/faq.task.007.md | 20 ++ content/support/faq/faq.task.008.md | 20 ++ content/support/faq/faq.task.009.md | 22 ++ content/support/faq/faq.task.010.md | 19 ++ content/support/faq/faq.task.011.md | 26 ++ content/support/faq/faq.task.012.md | 44 +++ content/support/faq/faq.task.013.md | 14 + content/support/faq/faq.task.014.md | 14 + content/support/faq/faq.task.015.md | 19 ++ content/support/faq/faq.task.016.md | 27 ++ content/support/faq/faq.task.017.md | 14 + content/support/faq/faq.task.018.md | 21 ++ content/support/faq/faq.task.019.md | 15 + content/support/faq/faq.task.020.md | 26 ++ content/support/faq/faq.task.021.md | 16 ++ content/support/faq/faq.task.022.md | 18 ++ content/support/faq/faq.task.023.md | 18 ++ content/support/faq/faq.task.024.md | 21 ++ content/support/faq/faq.task.025.md | 32 +++ content/support/faq/faq.taskd.001.md | 44 +++ content/support/faq/faq.taskd.002.md | 9 + content/support/faq/faq.taskd.003.md | 26 ++ content/support/faq/faq.tasksh.001.md | 9 + content/support/faq/faq.tasksh.002.md | 15 + content/support/faq/faq.timew.001.md | 14 + 33 files changed, 661 insertions(+), 393 deletions(-) delete mode 100644 content/support/faq.md create mode 100644 content/support/faq/_index.md create mode 100644 content/support/faq/faq.task.001.md create mode 100644 content/support/faq/faq.task.002.md create mode 100644 content/support/faq/faq.task.003.md create mode 100644 content/support/faq/faq.task.004.md create mode 100644 content/support/faq/faq.task.005.md create mode 100644 content/support/faq/faq.task.006.md create mode 100644 content/support/faq/faq.task.007.md create mode 100644 content/support/faq/faq.task.008.md create mode 100644 content/support/faq/faq.task.009.md create mode 100644 content/support/faq/faq.task.010.md create mode 100644 content/support/faq/faq.task.011.md create mode 100644 content/support/faq/faq.task.012.md create mode 100644 content/support/faq/faq.task.013.md create mode 100644 content/support/faq/faq.task.014.md create mode 100644 content/support/faq/faq.task.015.md create mode 100644 content/support/faq/faq.task.016.md create mode 100644 content/support/faq/faq.task.017.md create mode 100644 content/support/faq/faq.task.018.md create mode 100644 content/support/faq/faq.task.019.md create mode 100644 content/support/faq/faq.task.020.md create mode 100644 content/support/faq/faq.task.021.md create mode 100644 content/support/faq/faq.task.022.md create mode 100644 content/support/faq/faq.task.023.md create mode 100644 content/support/faq/faq.task.024.md create mode 100644 content/support/faq/faq.task.025.md create mode 100644 content/support/faq/faq.taskd.001.md create mode 100644 content/support/faq/faq.taskd.002.md create mode 100644 content/support/faq/faq.taskd.003.md create mode 100644 content/support/faq/faq.tasksh.001.md create mode 100644 content/support/faq/faq.tasksh.002.md create mode 100644 content/support/faq/faq.timew.001.md diff --git a/content/support/faq.md b/content/support/faq.md deleted file mode 100644 index fbbcef4c..00000000 --- a/content/support/faq.md +++ /dev/null @@ -1,393 +0,0 @@ ---- -title: "Taskwarrior - FAQ" ---- - -# FAQ - highlights from years of Q&A. - -Have a question that\'s not here? [Ask us...](mailto:support@taskwarrior.org) - -## Taskwarrior - -### Q: How do I implement Pomodoro? - -Taskwarrior currently doesn\'t support the pomodoro technique, not because it doesn\'t have all the necessary features, but because it has no way to notify the user if a given point in time has arrived. -Remember: most of the time, Taskwarrior isn\'t running. - -You can however use the pomodoro timer or any other timer software (KTeaTimer, Gnome\'s Tea Timer, Gnome\'s pomodoro shell extension, pyStopWatch, or any of the many timers out there), together with taskwarrior to manage and prioritize your ToDo list. - -### Q: How do I remove an attribute? - -Modify the attribute and give it a blank value: - - $ task 16 modify due: - -Taskwarrior doesn\'t store blank values, so it deletes the attribute. - -### Q: How do I list tasks that have no project? - -There are a few ways: - - $ task project.none: list - $ task project: list - $ task project != '' list - $ task -PROJECT list - -The last example makes use of a virtual tag designed for this use case, and is the preferred mechanism. - -To list tasks that do have a project assigned, you can use these alternates: - - $ task project.any: list - $ task project.not: list - $ task project == '' list - $ task +PROJECT list - -### Q: How do I filter tasks containing words that are also commands? - -I have tasks with descriptions such as: - - ID Description - -- ----------------------------------------------- - 1 Print my report and give it to Bob. - 2 Collect more info on daily rates of food waste. - -When I try to filter them like this, it runs the command instead: - - $ task report - ... - $ tasĸ info - ... - -There is an operator `--` intended for this purpose: - - $ task -- report - ... - $ task -- info - ... - -The `--` operator is a directive that tells Taskwarrior to just treat all subsequent arguments as plain words. -It is also a good way to add a description that might contain things like `dep:`, `proj:`, tags or modifiers. - - -### Q: How do I hide the change history when using the `info` report? - -You need to turn off journaling, like this: - - $ task config journal.info off - -See `man taskrc` for more details. - - -### Q: How do I list tasks scheduled today? - -To filter tasks within a date range: - - $ task scheduled \> today and scheduled \< tomorrow list - -Note how filter operators need to be escaped, otherwise your shell will think it knows what to do. -Alternately, do this: - - $ task scheduled.after:today and scheduled.before:tomorrow list - - -### Q: How do I bring back a task that I completed or deleted by mistake? - -Simply changing the `status` of the task to `pending` is enough, Taskwarrior takes care of the rest: - - $ task modify status:pending - -You can obtain the `` in several ways. -Here is how to see the 10 most recently completed or deleted tasks, with the most recent shown first: - - $ task limit:10 \( status:completed or status:deleted \) rc.report.all.sort:end- all - - -### Q: How do I improve output readability? - -You can use line breaks which allow blank lines between sort keys. -See [Report](/docs/report/#custom-reports) for details. -You can also use alternating line colors setting, which helps visually separate the tasks. - - $ task show color.alternate - ... - $ task color legend - ... - -Most color themes already support this. - - -### Q: How do I set the wait date to be 2 days before the due date? - -Taskwarrior can do date math, so use this: - - $ task add ... -due:eom wait:due-2days - -That `due-2days` value is evaluated by Taskwarrior, using the value you specified for the due date and subtracting two days. -You can also verify that date using the `calc` command: - - $ task calc eom-2days - 2018-01-30T00:00:00 - -## Tasksh - -### Q: How do I use arrow keys in tasksh? - -Tasksh supports `readline`, so if you are building from source, install the dev readline library first. - -## Timewarrior - -### Q: How do I control Taskwarrior through Timewarrior? - -For example, if I start tracking in Timewarrior, how do I make the task active also? - -Taskwarrior uses Timewarrior to track time, via a Taskwarrior hook. -You just start/stop tasks using Taskwarrior, and Timewarrior will start/stop tracking. - -If you start/stop in Timewarrior, it does not control Taskwarrior. - -## Taskserver - -### Q: How do I set up Taskserver to use LetsEncrypt certs? - -On the Taskserver server: - -Generate a self-signed CA (use `taskd/pki/generate.ca`) - -Get a copy of your domain\'s TLS certificates from Lets Encrypt - -Configure Taskserver: - - ca.cert=ca.cert.pem - server.cert=example.com.crt - server.key=example.com.key - server=0.0.0.0:53589 - -On each client: - -Get a self-signed client keypair from the Taskserver - (`taskd/pki/generate.client`) - -Get a copy of the DST Root CA X3 - -Configure Taskwarrior: - - taskd.certificate=client.cert.pem - taskd.key=client.key.pem - taskd.ca=DST_ROOT_CA_X3.crt - taskd.server=example.com:53589 - taskd.credentials=Group/Name/UUID - -Client certificates and user credentials are created per the docs, as normal. -Client certificates can be revoked by generating a CRL file and pointing `server.crl` to it in the Taskserver config. -See the bottom of `taskd/pki/generate.crl` for invocations. -For personal installations, it is easier just to regenerate the self-signed CA and distribute new client certs. - - -### Q: How do I create a traditional GTD Next Actions list? - -I am looking to create a custom report that lists all pending tasks without a project and the single most urgent from each project. - -The report you describe is not possible as a single custom report because it combines multiple independent filters. -It could be done as a series of separate reports (one for the project-less, one for each project), but that\'s not convenient. - -What would be better is to instead write a script that automates all this, pulling together a list of task UUIDs and presenting one result report. -Like this: - - - -It\'s a bash script, and easily modifiable. - - -### Q: Why have attribute modifiers (`urgency.over:10`) rather than the more readable and algebraic form (`urgency>10`)? - -Taskwarrior already supports both forms. -The attribute modifier form is older and predates more complex filter support. -The algebraic form requires that you escape any characters that the shell will otherwise interpret. - -At some point the attribute modifier form will likely be deprecated. -The algebraic form is already much more capable. - - $ task help - ... - Attribute modifiers make filters more precise. - -Supported modifiers are: - - Modifiers Example Equivalent Meaning - ---------------- ----------------- ------------------- ------------------------- - due:today due = today Fuzzy match - not due.not:today due != today Fuzzy non-match - before, below due.before:today due < tomorrow Exact date comparison - after, above due.after:today due > tomorrow Exact date comparison - none project.none: project == '' Empty - any project.any: project !== '' Not empty - is, equals project.is:x project == x Exact match - isnt project.isnt:x project !== x Exact non-match - has, contains desc.has:Hello desc ~ Hello Pattern match - hasnt, desc.hasnt:Hello desc !~ Hello Pattern non-match - startswith, left desc.left:Hel desc ~ '^Hel' Beginning match - endswith, right desc.right:llo desc ~ 'llo$' End match - word desc.word:Hello desc ~ '\bHello\b' Boundaried word match - noword desc.noword:Hello desc !~ '\bHello\b' Boundaried word non-match - ... - -See \'man task\', for the `ATTRIBUTE MODIFIERS` and `EXPRESSIONS AND OPERATORS` sections. - - -### Q: How do I pipe a UUID into another task command? - -You can use Bash subprocess syntax to achieve this: - - $ task $(task _uuids +FOO) modify -FOO +BAR - - -### Q: How do I get the UUID of the last task added? - -There is a `LATEST` virtual tag for just this. -It corresponds to the most recently added task. - - $ task +LATEST uuids - - -### Q: How do I change many due dates using one command? - -Something come up yesterday and completely derailed my day. -As a result, I have many tasks that need to be rescheduled to today. -What command can I use to change the due date of tasks I missed yesterday to be due today? - -This will change all overdue tasks to be due today: - - $ task +OVERDUE mod due:today - -Depending on whether you want all overdue tasks or not, you\'ll need to adjust the filter. - - -### Q: How do I search for tasks? - -There are several ways to search the description and annotations of your tasks. -The first is to simply look for a search term: - - $ task ABC list - -The second uses the `/.../` syntax, which uses regular expressions. -This is equivalent to the above form: - - $ task /ABC/ list - -Regular expressions support sophisticated search terms: - - $ task /[A-Z]../ list - - -### Q: How do I create a task that recurs on more than one day of the week? - -This is not supported, but you can simulate this by creating multiple tasks due weekly on different days: - - $ task add Do the thing due:monday recur:weekly - $ task add Do the thing due:friday recur:weekly - - -### Q: Which version of GnuTLS should I use? - -As a security component, it is best for you to use the latest available version. - - -### Q: How can I include the time spent on a task in a custom report? - -Total active time is not a reportable field. -It\'s not even a field, it\'s simply aggregated from the `undo.data` file. -As such it is a faithful account of how long a task was in the active state, but that is not what is needed for time tracking. - -Proper time tracking allows for corrections, and mining the `undo.data` file does not permit corrections. -Many people confuse this for time tracking, which it is not. - -You can achieve limited time tracking with hook scripts, and here are two such examples: - - - - -The real answer, though, is to [Use Timewarrior!](https://timewarrior.net) - - -### Q: How do I hide tasks that have unfinished dependencies? - -Try - - $ task -BLOCKED - -The virtual tags that are relevant for the present situation are BLOCKED and/or UNBLOCKED. - - -### Q: How do I record a task that is already completed? - -There are several ways to do this. -The simplest is to use the `log` command, which creates a new task and immediately sets the status to `completed`: - - $ task log ... - -You can achieve the same thing using the `add` command: - - $ task add status:completed ... - -Furthermore, if you wish to record the date the task was completed: - - $ task log end:2018-01-22 ... - - -### Q: How do I include the recurrence frequency in a report? - -Try this command: - - $ task columns - -This will give you a list of all the columns and their formats that you can use in a report. -What you are looking for is the `recur` column. - - -### Q: How do I solve \"Taskwarrior was built without GnuTLS support. Sync is not available.\"? - -Install `libgnutls-dev` and rebuild: - - $ make clean - $ rm CMakeCache.txt - $ cmake . - $ make - $ sudo make install - - -### Q: How do I get color working? - -Try the command: - - $ task color - -Does it show colors? - -This can happen because there are no tasks in the output that matches any of the color rules. -You will need to provide metadata, such as due dates, to get any color rules to match. - - -### Q: How do I fix this libgnutls-deb0.so.28 error? - -Upon upgrading from Ubuntu 15.10 to 16.04 I am now seeing the following error message when I try to run Taskwarrior: - - error while loading shared libraries: libgnutls-deb0.so.28: cannot open shared object file: No such file or directory - -Gnutls was already installed and had been working on my 15.10 installation for some time now. -I attempted to fix it by uninstalling and reinstalling gnutls, but it still doesn\'t work. - -Your Taskwarrior was built using a version of GnuTLS that is no longer installed. -If you built Taskwarrior from source, then rebuild. - -If you installed Taskwarrior from a binary package, uninstall and reinstall Taskwarrior. - - -### Q: How do I repeat the last command? - -In tasksh like most linux shell, you can navigate the list of your last input commands by using the UP/DOWN arrows for history navigation and PageUp/PageDown for prefixed history navigation (other names may apply here). - -With prefixed history navigation you can start typing a command, say mod and by using PageUp/PageDown you will only browse history commands that start by mod, whereas full history ignores any input that already exists and simply navigates history in order. - -A: if ( e.g. after changing from 2.3.0 to 2.5.1) in tasksh the - -Tasksh supports `libreadline`, but make sure the development version is installed, and rebuild. diff --git a/content/support/faq/_index.md b/content/support/faq/_index.md new file mode 100644 index 00000000..26356bb9 --- /dev/null +++ b/content/support/faq/_index.md @@ -0,0 +1,11 @@ +--- +title: "Taskwarrior - FAQ" +layout: faq +toc: yes +--- + +# FAQ +{{< lead >}}Highlights from years of Q&A.{{< /lead >}} + +Have a question that\'s not here? +[Ask us...](mailto:support@taskwarrior.org) diff --git a/content/support/faq/faq.task.001.md b/content/support/faq/faq.task.001.md new file mode 100644 index 00000000..1653708b --- /dev/null +++ b/content/support/faq/faq.task.001.md @@ -0,0 +1,12 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I implement Pomodoro?" +--- + +### Q: How do I implement Pomodoro? + +Taskwarrior currently doesn\'t support the pomodoro technique, not because it doesn\'t have all the necessary features, but because it has no way to notify the user if a given point in time has arrived. +Remember: most of the time, Taskwarrior isn\'t running. + +You can however use the pomodoro timer or any other timer software (KTeaTimer, Gnome\'s Tea Timer, Gnome\'s pomodoro shell extension, pyStopWatch, or any of the many timers out there), together with taskwarrior to manage and prioritize your ToDo list. diff --git a/content/support/faq/faq.task.002.md b/content/support/faq/faq.task.002.md new file mode 100644 index 00000000..891a7528 --- /dev/null +++ b/content/support/faq/faq.task.002.md @@ -0,0 +1,15 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I remove an attribute?" +--- + +### Q: How do I remove an attribute? + +Modify the attribute and give it a blank value: + +``` +$ task 16 modify due: +``` + +Taskwarrior doesn\'t store blank values, so it deletes the attribute. diff --git a/content/support/faq/faq.task.003.md b/content/support/faq/faq.task.003.md new file mode 100644 index 00000000..64adc258 --- /dev/null +++ b/content/support/faq/faq.task.003.md @@ -0,0 +1,27 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I list tasks that have no project?" +--- + +### Q: How do I list tasks that have no project? + +There are a few ways: + +``` +$ task project.none: list +$ task project: list +$ task project == '' list +$ task -PROJECT list +``` + +The last example makes use of a virtual tag designed for this use case, and is the preferred mechanism. + +To list tasks that do have a project assigned, you can use these alternates: + +``` +$ task project.any: list +$ task project.not: list +$ task project != '' list +$ task +PROJECT list +``` diff --git a/content/support/faq/faq.task.004.md b/content/support/faq/faq.task.004.md new file mode 100644 index 00000000..1857b82a --- /dev/null +++ b/content/support/faq/faq.task.004.md @@ -0,0 +1,37 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I filter tasks containing words that are also commands?" +--- + +### Q: How do I filter tasks containing words that are also commands? + +I have tasks with descriptions such as: + +``` +ID Description +-- ----------------------------------------------- +1 Print my report and give it to Bob. +2 Collect more info on daily rates of food waste. +``` + +When I try to filter them like this, it runs the command instead: + +``` +$ task report +... +$ tasĸ info +... +``` + +There is an operator `--` intended for this purpose: + +``` +$ task -- report +... +$ task -- info +... +``` + +The `--` operator is a directive that tells Taskwarrior to just treat all subsequent arguments as plain words. +It is also a good way to add a description that might contain things like `dep:`, `proj:`, tags or modifiers. diff --git a/content/support/faq/faq.task.005.md b/content/support/faq/faq.task.005.md new file mode 100644 index 00000000..877f180c --- /dev/null +++ b/content/support/faq/faq.task.005.md @@ -0,0 +1,15 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I hide the change history when using the info report?" +--- + +### Q: How do I hide the change history when using the `info` report? + +You need to turn off journaling, like this: + +``` +$ task config journal.info off +``` + +See `man taskrc` for more details. diff --git a/content/support/faq/faq.task.006.md b/content/support/faq/faq.task.006.md new file mode 100644 index 00000000..2bb3db0b --- /dev/null +++ b/content/support/faq/faq.task.006.md @@ -0,0 +1,21 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I list tasks scheduled today?" +--- + +### Q: How do I list tasks scheduled today? + +To filter tasks within a date range: + +``` +$ task scheduled \> today and scheduled \< tomorrow list +``` + +Note how filter operators need to be escaped, otherwise your shell will think it knows what to do. +Alternately, do this: + +``` +$ task scheduled.after:today and scheduled.before:tomorrow list +``` + diff --git a/content/support/faq/faq.task.007.md b/content/support/faq/faq.task.007.md new file mode 100644 index 00000000..659dc04c --- /dev/null +++ b/content/support/faq/faq.task.007.md @@ -0,0 +1,20 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I bring back a task that I completed or deleted by mistake?" +--- + +### Q: How do I bring back a task that I completed or deleted by mistake? + +Simply changing the `status` of the task to `pending` is enough, Taskwarrior takes care of the rest: + +``` +$ task modify status:pending +``` + +You can obtain the `` in several ways. +Here is how to see the 10 most recently completed or deleted tasks, with the most recent shown first: + +``` +$ task limit:10 \( status:completed or status:deleted \) rc.report.all.sort:end- all +``` diff --git a/content/support/faq/faq.task.008.md b/content/support/faq/faq.task.008.md new file mode 100644 index 00000000..78838ae4 --- /dev/null +++ b/content/support/faq/faq.task.008.md @@ -0,0 +1,20 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I improve output readability?" +--- + +### Q: How do I improve output readability? + +You can use line breaks which allow blank lines between sort keys. +See [Report](/docs/report/#custom-reports) for details. +You can also use alternating line colors setting, which helps visually separate the tasks. + +``` +$ task show color.alternate +... +$ task color legend +... +``` + +Most color themes already support this. diff --git a/content/support/faq/faq.task.009.md b/content/support/faq/faq.task.009.md new file mode 100644 index 00000000..e2829600 --- /dev/null +++ b/content/support/faq/faq.task.009.md @@ -0,0 +1,22 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I set the wait date to be 2 days before the due date?" +--- + +### Q: How do I set the wait date to be 2 days before the due date? + +Taskwarrior can do date math, so use this: + +``` +$ task add ... +due:eom wait:due-2days +``` + +That `due-2days` value is evaluated by Taskwarrior, using the value you specified for the due date and subtracting two days. +You can also verify that date using the `calc` command: + +``` +$ task calc eom-2days +2018-01-30T00:00:00 +``` diff --git a/content/support/faq/faq.task.010.md b/content/support/faq/faq.task.010.md new file mode 100644 index 00000000..be254a3b --- /dev/null +++ b/content/support/faq/faq.task.010.md @@ -0,0 +1,19 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I create a traditional GTD Next Actions list?" +--- + +### Q: How do I create a traditional GTD Next Actions list? + +I am looking to create a custom report that lists all pending tasks without a project and the single most urgent from each project. + +The report you describe is not possible as a single custom report because it combines multiple independent filters. +It could be done as a series of separate reports (one for the project-less, one for each project), but that\'s not convenient. + +What would be better is to instead write a script that automates all this, pulling together a list of task UUIDs and presenting one result report. +Like this: + + + +It\'s a bash script, and easily modifiable. diff --git a/content/support/faq/faq.task.011.md b/content/support/faq/faq.task.011.md new file mode 100644 index 00000000..4f76e145 --- /dev/null +++ b/content/support/faq/faq.task.011.md @@ -0,0 +1,26 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do you run a report listing recurring task templates?" +--- + +Q: List recurring task templates + +How do you run a report listing recurring task templates? + +A: Using the built in reports: + +task status:recurring all +Note that you have to use `all` because the rest of the built in reports impose a status filter like `status:pending` or similar. + +You could also use a custom report, such as the following + +report.templates.description=Recurring task templates +report.templates.columns=id,priority,due,urgency,project,description +report.templates.labels=id,Pri,Due,Urg,Proj,Desc +report.templates.sort=id+ +report.templates.filter=status:recurring + +A: As a hack, you can also use `task status:recurring or status:recurring list`, which would translate to the filter `status:pending and status:recurring or status:recurring`. + +A: 'info' and 'export' also have no filter. diff --git a/content/support/faq/faq.task.012.md b/content/support/faq/faq.task.012.md new file mode 100644 index 00000000..7239d17a --- /dev/null +++ b/content/support/faq/faq.task.012.md @@ -0,0 +1,44 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "Why have attribute modifiers rather than the more readable and algebraic form?" +--- + +### Q: Why have attribute modifiers (`urgency.over:10`) rather than the more readable and algebraic form (`urgency>10`)? + +Taskwarrior already supports both forms. +The attribute modifier form is older and predates more complex filter support. +The algebraic form requires that you escape any characters that the shell will otherwise interpret. + +At some point the attribute modifier form will likely be deprecated. +The algebraic form is already much more capable. + +``` +$ task help +... +Attribute modifiers make filters more precise. +``` + +Supported modifiers are: + +``` +Modifiers Example Equivalent Meaning +---------------- ----------------- ------------------- ------------------------- + due:today due = today Fuzzy match +not due.not:today due != today Fuzzy non-match +before, below due.before:today due < tomorrow Exact date comparison +after, above due.after:today due > tomorrow Exact date comparison +none project.none: project == '' Empty +any project.any: project !== '' Not empty +is, equals project.is:x project == x Exact match +isnt project.isnt:x project !== x Exact non-match +has, contains desc.has:Hello desc ~ Hello Pattern match +hasnt, desc.hasnt:Hello desc !~ Hello Pattern non-match +startswith, left desc.left:Hel desc ~ '^Hel' Beginning match +endswith, right desc.right:llo desc ~ 'llo$' End match +word desc.word:Hello desc ~ '\bHello\b' Boundaried word match +noword desc.noword:Hello desc !~ '\bHello\b' Boundaried word non-match +... +``` + +See \'man task\', for the `ATTRIBUTE MODIFIERS` and `EXPRESSIONS AND OPERATORS` sections. diff --git a/content/support/faq/faq.task.013.md b/content/support/faq/faq.task.013.md new file mode 100644 index 00000000..d95c73bf --- /dev/null +++ b/content/support/faq/faq.task.013.md @@ -0,0 +1,14 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I pipe a UUID into another task command?" +--- + +### Q: How do I pipe a UUID into another task command? + +You can use Bash subprocess syntax to achieve this: + +``` +$ task $(task _uuids +FOO) modify -FOO +BAR +``` + diff --git a/content/support/faq/faq.task.014.md b/content/support/faq/faq.task.014.md new file mode 100644 index 00000000..3fc0d626 --- /dev/null +++ b/content/support/faq/faq.task.014.md @@ -0,0 +1,14 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I get the UUID of the last task added?" +--- + +### Q: How do I get the UUID of the last task added? + +There is a `LATEST` virtual tag for just this. +It corresponds to the most recently added task. + +``` +$ task +LATEST uuids +``` diff --git a/content/support/faq/faq.task.015.md b/content/support/faq/faq.task.015.md new file mode 100644 index 00000000..0125ed1a --- /dev/null +++ b/content/support/faq/faq.task.015.md @@ -0,0 +1,19 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I change many due dates using one command?" +--- + +### Q: How do I change many due dates using one command? + +Something come up yesterday and completely derailed my day. +As a result, I have many tasks that need to be rescheduled to today. +What command can I use to change the due date of tasks I missed yesterday to be due today? + +This will change all overdue tasks to be due today: + +``` +$ task +OVERDUE mod due:today +``` + +Depending on whether you want all overdue tasks or not, you\'ll need to adjust the filter. diff --git a/content/support/faq/faq.task.016.md b/content/support/faq/faq.task.016.md new file mode 100644 index 00000000..cc6605b0 --- /dev/null +++ b/content/support/faq/faq.task.016.md @@ -0,0 +1,27 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I search for tasks?" +--- + +### Q: How do I search for tasks? + +There are several ways to search the description and annotations of your tasks. +The first is to simply look for a search term: + +``` +$ task ABC list +``` + +The second uses the `/.../` syntax, which uses regular expressions. +This is equivalent to the above form: + +``` +$ task /ABC/ list +``` + +Regular expressions support sophisticated search terms: + +``` +$ task /[A-Z]../ list +``` diff --git a/content/support/faq/faq.task.017.md b/content/support/faq/faq.task.017.md new file mode 100644 index 00000000..b771168a --- /dev/null +++ b/content/support/faq/faq.task.017.md @@ -0,0 +1,14 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I create a task that recurs on more than one day of the week?" +--- + +### Q: How do I create a task that recurs on more than one day of the week? + +This is not supported, but you can simulate this by creating multiple tasks due weekly on different days: + +``` +$ task add Do the thing due:monday recur:weekly +$ task add Do the thing due:friday recur:weekly +``` diff --git a/content/support/faq/faq.task.018.md b/content/support/faq/faq.task.018.md new file mode 100644 index 00000000..7ffece24 --- /dev/null +++ b/content/support/faq/faq.task.018.md @@ -0,0 +1,21 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How can I include the time spent on a task in a custom report?" +--- + +### Q: How can I include the time spent on a task in a custom report? + +Total active time is not a reportable field. +It\'s not even a field, it\'s simply aggregated from the `undo.data` file. +As such it is a faithful account of how long a task was in the active state, but that is not what is needed for time tracking. + +Proper time tracking allows for corrections, and mining the `undo.data` file does not permit corrections. +Many people confuse this for time tracking, which it is not. + +You can achieve limited time tracking with hook scripts, and here are two such examples: + + + + +The real answer, though, is to [Use Timewarrior!](https://timewarrior.net) diff --git a/content/support/faq/faq.task.019.md b/content/support/faq/faq.task.019.md new file mode 100644 index 00000000..8952191e --- /dev/null +++ b/content/support/faq/faq.task.019.md @@ -0,0 +1,15 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I hide tasks that have unfinished dependencies?" +--- + +### Q: How do I hide tasks that have unfinished dependencies? + +Try + +``` +$ task -BLOCKED +``` + +The virtual tags that are relevant for the present situation are `BLOCKED` and/or `UNBLOCKED`. diff --git a/content/support/faq/faq.task.020.md b/content/support/faq/faq.task.020.md new file mode 100644 index 00000000..5508d23b --- /dev/null +++ b/content/support/faq/faq.task.020.md @@ -0,0 +1,26 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I record a task that is already completed?" +--- + +### Q: How do I record a task that is already completed? + +There are several ways to do this. +The simplest is to use the `log` command, which creates a new task and immediately sets the status to `completed`: + +``` +$ task log ... +``` + +You can achieve the same thing using the `add` command: + +``` +$ task add status:completed ... +``` + +Furthermore, if you wish to record the date the task was completed: + +``` +$ task log end:2018-01-22 ... +``` diff --git a/content/support/faq/faq.task.021.md b/content/support/faq/faq.task.021.md new file mode 100644 index 00000000..1c355453 --- /dev/null +++ b/content/support/faq/faq.task.021.md @@ -0,0 +1,16 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I include the recurrence frequency in a report?" +--- + +### Q: How do I include the recurrence frequency in a report? + +Try this command: + +``` +$ task columns +``` + +This will give you a list of all the columns and their formats that you can use in a report. +What you are looking for is the `recur` column. diff --git a/content/support/faq/faq.task.022.md b/content/support/faq/faq.task.022.md new file mode 100644 index 00000000..553a76f8 --- /dev/null +++ b/content/support/faq/faq.task.022.md @@ -0,0 +1,18 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I solve \"Taskwarrior was built without GnuTLS support. Sync is not available.\"?" +--- + +### Q: How do I solve \"Taskwarrior was built without GnuTLS support. Sync is not available.\"? + +Install `libgnutls-dev` and rebuild: + +``` +$ make clean +$ rm CMakeCache.txt +$ cmake . +$ make +$ sudo make install +``` + diff --git a/content/support/faq/faq.task.023.md b/content/support/faq/faq.task.023.md new file mode 100644 index 00000000..d2a00509 --- /dev/null +++ b/content/support/faq/faq.task.023.md @@ -0,0 +1,18 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I get color working?" +--- + +### Q: How do I get color working? + +Try the command: + +``` +$ task color +``` + +Does it show colors? + +This can happen because there are no tasks in the output that matches any of the color rules. +You will need to provide metadata, such as due dates, to get any color rules to match. diff --git a/content/support/faq/faq.task.024.md b/content/support/faq/faq.task.024.md new file mode 100644 index 00000000..fb1be7cd --- /dev/null +++ b/content/support/faq/faq.task.024.md @@ -0,0 +1,21 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do I fix this 'libgnutls-deb0.so.28' error?" +--- + +### Q: How do I fix this `libgnutls-deb0.so.28` error? + +Upon upgrading from Ubuntu 15.10 to 16.04 I am now seeing the following error message when I try to run Taskwarrior: + +``` +error while loading shared libraries: libgnutls-deb0.so.28: cannot open shared object file: No such file or directory +``` + +Gnutls was already installed and had been working on my 15.10 installation for some time now. +I attempted to fix it by uninstalling and reinstalling gnutls, but it still doesn\'t work. + +Your Taskwarrior was built using a version of GnuTLS that is no longer installed. +If you built Taskwarrior from source, then rebuild. + +If you installed Taskwarrior from a binary package, uninstall and reinstall Taskwarrior. diff --git a/content/support/faq/faq.task.025.md b/content/support/faq/faq.task.025.md new file mode 100644 index 00000000..9ed9d8c4 --- /dev/null +++ b/content/support/faq/faq.task.025.md @@ -0,0 +1,32 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskwarrior" +question: "How do you delete a recurring task?" +--- + +Q: Delete a recurring task template + +How do you delete a recurring task? + +task ID delete +says task is not deletable. + +A: The easiest way would be + +task ID modify until:-1d +It will be deleted the next time you run a report. + +A: I've noticed that the recurring task templates do not in fact expire, though the individual task instances do. That means that periodically you should do `task status:recurring until.before:today ids` to list the IDs of expired templates, then either delete them manually from .task/pending.data or write a script to do so (using an editor like Vim makes the manual deletion easy). + +A: You can clear the "Recur:" field when editing the specific parent task with + +task ID edit +from + +Recur: annual +to + +Recur: +and save. + +After that you can easily delete the task, because its no longer a recurring one. diff --git a/content/support/faq/faq.taskd.001.md b/content/support/faq/faq.taskd.001.md new file mode 100644 index 00000000..2287b621 --- /dev/null +++ b/content/support/faq/faq.taskd.001.md @@ -0,0 +1,44 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskserver" +question: "How do I set up Taskserver to use LetsEncrypt certs?" +--- + +### Q: How do I set up Taskserver to use LetsEncrypt certs? + +On the Taskserver server: + +Generate a self-signed CA (use `taskd/pki/generate.ca`) + +Get a copy of your domain\'s TLS certificates from Lets Encrypt + +Configure Taskserver: + +``` +ca.cert=ca.cert.pem +server.cert=example.com.crt +server.key=example.com.key +server=0.0.0.0:53589 +``` + +On each client: + +Get a self-signed client keypair from the Taskserver (`taskd/pki/generate.client`) + +Get a copy of the DST Root CA X3 + +Configure Taskwarrior: + +``` +taskd.certificate=client.cert.pem +taskd.key=client.key.pem +taskd.ca=DST_ROOT_CA_X3.crt +taskd.server=example.com:53589 +taskd.credentials=Group/Name/UUID +``` + +Client certificates and user credentials are created per the docs, as normal. +Client certificates can be revoked by generating a CRL file and pointing `server.crl` to it in the Taskserver config. +See the bottom of `taskd/pki/generate.crl` for invocations. +For personal installations, it is easier just to regenerate the self-signed CA and distribute new client certs. + diff --git a/content/support/faq/faq.taskd.002.md b/content/support/faq/faq.taskd.002.md new file mode 100644 index 00000000..68871ba5 --- /dev/null +++ b/content/support/faq/faq.taskd.002.md @@ -0,0 +1,9 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskserver" +question: "Which version of GnuTLS should I use?" +--- + +### Q: Which version of GnuTLS should I use? + +As a security component, it is best for you to use the latest available version. diff --git a/content/support/faq/faq.taskd.003.md b/content/support/faq/faq.taskd.003.md new file mode 100644 index 00000000..d2844959 --- /dev/null +++ b/content/support/faq/faq.taskd.003.md @@ -0,0 +1,26 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskserver" +question: "Building taskd, cmake cannot find gnutls" +--- + +Q: Building taskd, cmake cannot find gnutls + +Cmake (v2.8.4) is not finding GnuTLS, despite both being installed. + +$ cmake . +- - Looking for SHA1 references +- - Looking for GnuTLS +CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:91 (MESSAGE): + Could NOT find GnuTLS (missing: GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR) +Call Stack (most recent call first): + /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:252 (_FPHSA_FAILURE_MESSAGE) + /usr/share/cmake-2.8/Modules/FindGnuTLS.cmake:60 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) + CMakeLists.txt:70 (find_package) + +A: BTW: You do not need sudo to run cmake. cmake . make sudo make install only the last command needs sudo-privileges. + +A: The + +libgnutls-dev +dev library must be installed, in order to build Taskserver from source. diff --git a/content/support/faq/faq.tasksh.001.md b/content/support/faq/faq.tasksh.001.md new file mode 100644 index 00000000..c64d52db --- /dev/null +++ b/content/support/faq/faq.tasksh.001.md @@ -0,0 +1,9 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskshell" +question: "How do I use arrow keys in tasksh?" +--- + +### Q: How do I use arrow keys in tasksh? + +Tasksh supports `readline`, so if you are building from source, install the dev readline library first. diff --git a/content/support/faq/faq.tasksh.002.md b/content/support/faq/faq.tasksh.002.md new file mode 100644 index 00000000..4c8c9194 --- /dev/null +++ b/content/support/faq/faq.tasksh.002.md @@ -0,0 +1,15 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Taskshell" +question: "How do I repeat the last command?" +--- + +### Q: How do I repeat the last command? + +In tasksh like most linux shell, you can navigate the list of your last input commands by using the UP/DOWN arrows for history navigation and PageUp/PageDown for prefixed history navigation (other names may apply here). + +With prefixed history navigation you can start typing a command, say mod and by using PageUp/PageDown you will only browse history commands that start by mod, whereas full history ignores any input that already exists and simply navigates history in order. + +A: if ( e.g. after changing from 2.3.0 to 2.5.1) in tasksh the + +Tasksh supports `libreadline`, but make sure the development version is installed, and rebuild. diff --git a/content/support/faq/faq.timew.001.md b/content/support/faq/faq.timew.001.md new file mode 100644 index 00000000..0c9bc73d --- /dev/null +++ b/content/support/faq/faq.timew.001.md @@ -0,0 +1,14 @@ +--- +title: "Taskwarrior - FAQ" +topic: "Timewarrior" +question: "How do I control Taskwarrior through Timewarrior?" +--- + +### Q: How do I control Taskwarrior through Timewarrior? + +For example, if I start tracking in Timewarrior, how do I make the task active also? + +Taskwarrior uses Timewarrior to track time, via a Taskwarrior hook. +You just start/stop tasks using Taskwarrior, and Timewarrior will start/stop tracking. + +If you start/stop in Timewarrior, it does not control Taskwarrior.