From fe03f9174425a1944be5b7d2dad42e70c2d1e306 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Thu, 10 Jul 2008 01:23:05 -0400 Subject: [PATCH] - Documentation reorganization - not yet complete --- html/30second.html | 127 +++++ html/advanced.html | 426 ++++++++++++++++ html/color.html | 124 +++++ html/config.html | 300 +++++++++++ html/images/color.png | Bin 0 -> 67009 bytes html/recur.html | 93 ++++ html/setup.html | 137 ++++++ html/shell.html | 127 +++++ html/simple.html | 352 +++++++++++++ html/task.html | 1095 ++--------------------------------------- html/usage.html | 139 ++++++ 11 files changed, 1859 insertions(+), 1061 deletions(-) create mode 100644 html/30second.html create mode 100644 html/advanced.html create mode 100644 html/color.html create mode 100644 html/config.html create mode 100644 html/images/color.png create mode 100644 html/recur.html create mode 100644 html/setup.html create mode 100644 html/shell.html create mode 100644 html/simple.html create mode 100644 html/usage.html diff --git a/html/30second.html b/html/30second.html new file mode 100644 index 000000000..fe67fc899 --- /dev/null +++ b/html/30second.html @@ -0,0 +1,127 @@ + + + + Task 1.4.0 + + + + + +
+ Home + Setup + Simple + Advanced + Shell + Configuration + Colors + Usage +
+ +
+ + + + + + + +
+ +
+
+
+
+

30-second Tutorial

+
+

+ For the excessively lazy. + Add two tasks: +

+ +
% task add Read task documents later
+% task add priority:H Pay bills
+ +

+ Easy. See that second one has a High priority? Now let's look at those tasks: +

+ +
% task ls
+
+ID Project Pri Description
+ 2         H   Pay bills
+ 1             Read task documents later
+ +

+ They are ordered by priority. Let's mark number 2 as done: +

+ +
% task 2 done
+% task ls
+
+ID Project Pri Description
+ 1             Read task documents later
+ +

+ Gone. Now let's delete that remaining task, because, well, + why bother now we are already using task: +

+ +
% task delete 1
+% task ls
+No matches
+ +

+ Easy. But now consider checking out what task can really do... +

+
+ +
+
+
+

+ Copyright 2006-2008, P. Beckingham. All rights reserved. +

+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ + + +
+ +
+ + + + + + + diff --git a/html/advanced.html b/html/advanced.html new file mode 100644 index 000000000..5cf5afc39 --- /dev/null +++ b/html/advanced.html @@ -0,0 +1,426 @@ + + + + Task 1.4.0 + + + + + +
+ Home + Setup + Simple + Advanced + Shell + Configuration + Colors + Usage +
+ +
+ + + + + + + +
+ +
+
+
+
+

Advanced Usage

+
+

+ Here are the other commands, in some detail. +

+ + % task +

+ With no arguments, this command will generate a help message that + lists all these commands. +

+ + % task projects +

+ This report generates a list of all the different projects that you + are using along with a count of the pending tasks for each project. + For example: +

+ +
% task projects
+
+Project   Tasks
+Errands       1
+Birthdays     3
+Car           2
+ + + % task summary +

+ This report lists all the projects and a summary of their task + status. +

+ +
% task summary
+
+Project  Remaining Avg age Complete 0%                        100%
+Errands          1  3 days      50% XXXXXXXXXXXXXXXX
+Birthdays        3  7 mths       0%
+Car              2   2 wks      25% XXXXXXXXX
+ +

+ This shows the project, the remaining tasks, the average age of each + task, the percentage completed (remaining vs total) and a bar + indicating that percentage. +

+ + % task delete <id> +

+ There are two ways of getting rid of tasks - mark them as done, or + delete them. +

+ + % task undelete <id> +

+ If a task was inadvertently deleted, it may be undeleted, provided that no + reports have been run since the deletion. Ideally, the undelete command is + run immediately after the erroneous delete command. +

+ +

+ If a report is run (such as "task list"), then task performs a garbage + collection that removes deleted tasks, and the task cannot be undeleted. +

+ + % task done <id> +

+ This is how a task is marked as done. +

+ + % task list ... +

+ The list report will show the active status, and age of the task in + addition to the columns that "task ls" shows. It is just a more + detailed list. +

+ + % task long ... +

+ The long report will show the entry date and start date of a task, + in addition to the columns that the "task list" shows. +

+ + % task start <id> +

+ This marks a task as started (and therefore active), which is shown + in the "list" report: +

+ +
% task list
+
+ID Project Pri Due Active Age     Description
+12 Errand  L                      Remember to deposit check
+...
+
+% task start 12
+% task list
+
+ID Project Pri Due Active Age     Description
+12 Errand  L       *      3 days  Remember to deposit check
+...
+ + % task active +

+ Shows all active tasks, that is, the tasks for which the + "task start ..." command was run, as shown above. +

+ + % task overdue +

+ Simply lists all the task that have a due date that is past, in + "list" format. +

+ + % task history +

+ This report shows you an overview of how many tasks were added, + completed and deleted, by month. It looks like this: +

+ +
% task history
+
+Year Month     Added Completed Deleted Net
+2008 March        21        16       0   5
+     April        13        11       1   1
+     May           8        14       3  -9
+ +

+ This shows that for the three months that task has been used, March + and April saw the total number of tasks increase, but in May the + number decreased as more task were completed than added. +

+ + % task calendar +

+ This report shows a calendar of the current month, with any task + due or overdue dates marked on it. Color is used to mark these + dates. +

+ +
% task calendar
+
+May 2008
+
+Su Mo Tu We Th Fr Sa
+             1  2  3
+ 4  5  6  7  8  9 10
+11 12 13 14 15 16 17
+18 19 20 21 22 23 24
+25 26 27 28 29 30 31
+ + % task next +

+ This report shows you the tasks you should probable work on next. + Task will scan all the tasks and will pick two task from each + project to report. Those two tasks will be chosen in order of + overdue, due soon, High, Medium or Low priority. Essentially task + chooses the two most important task for each project and displays + them ordered in the usual way. +

+ +

+ If you wish to show a different number of tasks per project, modify + the entry in .taskrc: +

+ +
next=2
+ +

+ To be your preferred number. +

+ + % task <id> ... +

+ When a task id is specified, everything applies to just that task. + Suppose we needed to correct a task: +

+ +
% task ls
+
+ID Project Pri Description
+12 Errand  L   Remember to deposit chekc
+...
+
+% task 12 Remember to deposit bonus check
+% task ls
+
+ID Project Pri Description
+12 Errand  L   Remember to deposit bonus check
+...
+ + % task oldest +

+ Lists the oldest tasks. Shows 10 tasks by default, but can be + set via the "oldest" configuration variable. +

+ + % task newest +

+ Lists the newest tasks. Shows 10 tasks by default, but can be + set via the "newest" configuration variable. +

+ + % task /from/to/ +

+ If a task has been entered with a typo, it can be easily corrected + by this command. For example: +

+ +
% task ls
+
+ID Project Pri Description
+12 Errand  L   Remember to deposit chekc
+...
+
+% task 12 /chekc/check/
+% task ls
+
+ID Project Pri Description
+12 Errand  L   Remember to deposit check
+...
+ +

+ This command makes single corrections to a task description. +

+ + % task tags +

+ This command will generate a list of all the tags that are currently + in use by task. +

+ + % task info <id> +

+ This command gives detailed information about a single task. It + will tell you when the task was entered, when started, its status, + tags, and more. +

+ + % task stats +

+ This command generates a list of statistics about your task usage, + such as the average time it takes to complete a task, how often new + tasks are added, and more. +

+ + % task completed +

+ This generates a list of all tasks that have been completed, sorted + by their completion date. +

+ + % task export <file name> +

+ This instructs task to write out a CSV format dump of all tasks, + both pending and completed, to the file specified. This is how you + might view tasks in a spreadsheet. +

+ + % task colors +

+ This command displays all the colors that task supports. +

+ + % task usage +

+ If logging has been enabled by the "command.logging=on" directive + in the .taskrc file, then task will record every command that is + run. When this command is run, task will display a count of how + many times each command was used. +

+ +

+ This command is for the purpose of seeing whether command are + actually used. +

+ + % task version +

+ This can be used to show the version number of task, and to display + all the current configuration settings, as read from the .taskrc + file. +

+ + % task rc:<file> ... +

+ By specifying rc:, it is possible to force task to use an alternate + .taskrc file. By default, task looks in your home directory, so these two + commands are essentially identical: +

+ +
% task list
+% task rc:~/.taskrc list
+ +

+ What this override allows, is the possibility of keeping your task lists + completely separate, say for work and home. This can be accomplished with + the following commands (valid for bash): +

+ +
% alias htask="task rc:/home/me/.taskrc_home"
+% alias wtask="task rc:/home/me/.taskrc_work"
+% htask list
+...
+% wtask list
+...
+ + % task <id> fg:... bg:... +

+ Not strictly a command, the setting of the fg and bg (foreground + and background) attributes determines the colors used to represent + the task. Valid foreground colors are: +

+ +
         bold          underline          bold_underline
+black    bold_black    underline_black    bold_underline_black
+red      bold_red      underline_red      bold_underline_red
+green    bold_green    underline_green    bold_underline_green
+yellow   bold_yellow   underline_yellow   bold_underline_yellow
+blue     bold_blue     underline_blue     bold_underline_blue
+magenta  bold_magenta  underline_magenta  bold_underline_magenta
+cyan     bold_cyan     underline_cyan     bold_underline_cyan
+white    bold_white    underline_white    bold_underline_white
+ +

+ Note that these are not just colors, but combinations of colors and + attributes. Valid background colors are: +

+ +
on_black    on_bright_black
+on_red      on_bright_red
+on_green    on_bright_green
+on_yellow   on_bright_yellow
+on_blue     on_bright_blue
+on_magenta  on_bright_magenta
+on_cyan     on_bright_cyan
+on_white    on_bright_white
+ +

+ Note also that this capability does depend on whether your terminal + program can display these colors. +

+
+ +
+
+
+

+ Copyright 2006-2008, P. Beckingham. All rights reserved. +

+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ + + +
+ +
+ + + + + + + diff --git a/html/color.html b/html/color.html new file mode 100644 index 000000000..6e2f63b47 --- /dev/null +++ b/html/color.html @@ -0,0 +1,124 @@ + + + + Task 1.4.0 + + + + + +
+ Home + Setup + Simple + Advanced + Shell + Configuration + Colors + Usage +
+ +
+ + + + + + + +
+ +
+
+
+
+

Colors

+
+

+ Task supports color in several places. In cases where you may + specify a color, a foreground, a background, or a combination + foreground and background color may be used. The following are + valid foreground colors: +

+ +
         bold          underline          bold_underline
+black    bold_black    underline_black    bold_underline_black
+red      bold_red      underline_red      bold_underline_red
+green    bold_green    underline_green    bold_underline_green
+yellow   bold_yellow   underline_yellow   bold_underline_yellow
+blue     bold_blue     underline_blue     bold_underline_blue
+magenta  bold_magenta  underline_magenta  bold_underline_magenta
+cyan     bold_cyan     underline_cyan     bold_underline_cyan
+white    bold_white    underline_white    bold_underline_white
+ +

+ and the following are valid background colors: +

+ +
on_black    on_bright_black
+on_red      on_bright_red
+on_green    on_bright_green
+on_yellow   on_bright_yellow
+on_blue     on_bright_blue
+on_magenta  on_bright_magenta
+on_cyan     on_bright_cyan
+on_white    on_bright_white
+ +

+ Depending on your terminal color choices, task can display all + the colors it supports with the command: +

+ + + +
+ +
+
+
+

+ Copyright 2006-2008, P. Beckingham. All rights reserved. +

+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ + + +
+ +
+ + + + + + + diff --git a/html/config.html b/html/config.html new file mode 100644 index 000000000..4bd2a11fb --- /dev/null +++ b/html/config.html @@ -0,0 +1,300 @@ + + + + Task 1.4.0 + + + + + +
+ Home + Setup + Simple + Advanced + Shell + Configuration + Colors + Usage +
+ +
+ + + + + + + +
+ +
+
+
+
+

Configuring Task

+
+

+ Task recognizes several entries in the .taskrc file for + configuration purposes. Valid entries are of the form: +

+ +
name=value
+ +

+ Valid examples are: +

+ +
data.location
+
+ This is a path to the directory containing all the task files. + By default, it is set up to be ~/.task, for example: + /Users/paul/.task +
+ +
command.logging
+
+ May be "on" or "off", defaulting to "off". This determines + whether task records commands. This is not generally useful, + except while developing task. +
+ +
confirmation
+
+ May be "yes" or "no", and determines whether task will ask for + confirmation before deleting a task. +
+ +
nag
+
+ This may be a string of text, or blank. It is used as a prompt + when a task is completed that is not considered high priority. + The "task next" command lists important tasks, and completing + one of those does not generate this nagging. Default value is: + + Note: try to stick to high priority tasks. See "task next". +
+ +
next
+
+ Is a number, defaulting to 2, which is the number of tasks for + each project that are shown in the "task next" command. +
+ +
curses
+
+ Determines whether task uses ncurses to establish the size of + the window you are using, for text wrapping. +
+ +
blanklines
+
+ May be "on" or "off". Prevents the display of unnecessary blank + lines so that task makes better use screen real estate on small- + screened devices. +
+ +
dateformat
+
+

+ This is a string of characters that define how task formats dates. + The default value is: +

+ +
m/d/Y
+ +

+ which means dates look like: +

+ +
6/7/2008
+ +

+ The string should contain the characters: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacterMeaningExample
mminimal-digit month1, 12
dminimal-digit day1, 30
ytwo-digit year08
Mtwo-digit month01, 12
Dtwo-digit day01, 30
Yfour-digit year2008
+

+ +

+ The string may also contain other characters to act as spacers, + or formatting. Other values could include (but are not limited to): +

+ +

+ + + + + + + + + + + + + + + + +
dateformat + How it looks
d/m/Y7/6/2008
YMD20080607
m-d-y6-7-08
+

+
+ +
showage
+
+ May be "yes" or "no". Determines whether the "Age" + column appears on the "list" and "next" reports. +
+ +
monthsperline
+
+ Determines how many months the "task calendar" command + renders across the screen. Defaults to 1. +
+ +
oldest
+
+ Determines how many tasks the "task oldest" command displays. + Defaults to 10. +
+ +
newest
+
+ Determines how many tasks the "task newest" command displays. + Defaults to 10. +
+ +
defaultwidth
+
+ The width of tables used when ncurses support is not available. + Defaults to 80. +
+ +
color
+
+ May be "on" or "off". Determines whether task uses color. +
+ +
+ color.overdue
+ color.due
+ color.pri.H
+ color.pri.M
+ color.pri.L
+ color.pri.none
+ color.active
+ color.tagged +
+
+ These are the coloration rules. They correspond to a particular + attribute of a task, such as it being due, or being active, and + specifies the automatic coloring of that task. The value may + be one optional foreground color (see below) and one optional + background color. For example, the value may be: +
+ bold_red on_bright_yellow +
+ +
color.tag.X
+
+ Colors any task that has the tag X. +
+ +
color.project.X
+
+ Colors any task assigned to project X. +
+ +
color.keyword.X
+
+ Colors any task where the description contains X. +
+
+ +
+
+
+

+ Copyright 2006-2008, P. Beckingham. All rights reserved. +

+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ + + +
+ +
+ + + + + + + diff --git a/html/images/color.png b/html/images/color.png new file mode 100644 index 0000000000000000000000000000000000000000..fff43d59b2d0bb638035a7a228d1921eae7c7d2f GIT binary patch literal 67009 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
  • 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 + + + Task 1.4.0 + + + + + + + +
    + + + + + + + +
    + +
    +
    +
    +
    +

    Recurring Tasks

    +
    +

    +

    + +

    +

    +
    + + +
    +
    +
    +

    + Copyright 2006-2008, P. Beckingham. All rights reserved. +

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + +
    + + + + + + + diff --git a/html/setup.html b/html/setup.html new file mode 100644 index 000000000..da15729b5 --- /dev/null +++ b/html/setup.html @@ -0,0 +1,137 @@ + + + + Task 1.4.0 + + + + + + + +
    + + + + + + + +
    + +
    +
    +
    +
    +

    Quick Setup

    +
    +

    + Build the task program according to the directions in the INSTALL + file. This transcript illustrates a typical installation: +

    + +
    % ls
    +task-1.3.0.tar.gz
    +% gunzip task-1.3.0.tar.gz
    +% tar xf task-1.3.0.tar
    +% cd task-1.3.0
    +% ./configure
    +...
    +% make
    +...
    +% make install     # (may require sudo, depending on --prefix)
    + +

    + (For those of you using Cygwin, + you need to make sure you have the "gcc" and "make" packages + available, which are found in the "devel" category. For more + task features, also make sure you have "libncurses-devel" and + "lincurse8".) +

    + +

    + You need to make sure that the installed task program is in your + PATH environment variable. +

    + +

    + Task reads a configuration file - called .taskrc in your home + directory - and stores pending and completed tasks in in a directory + specified in the configuration file. +

    + +

    + The simplest way to get a configuration file and task directory is + to run task. On startup, task will check to see if it can find the + configuration file and task directory, and if not found, will ask + you whether it may create both. +

    + +
    % task version
    +
    +A configuration file could not be found in /Users/paul/.taskrc
    +
    +Would you like a sample .taskrc created, so task can proceed? (y/n) y
    +Done.
    +
    +[then task will show version information]
    +
    + +
    +
    +
    +

    + Copyright 2006-2008, P. Beckingham. All rights reserved. +

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + +
    + + + + + + + diff --git a/html/shell.html b/html/shell.html new file mode 100644 index 000000000..a380d00f6 --- /dev/null +++ b/html/shell.html @@ -0,0 +1,127 @@ + + + + Task 1.4.0 + + + + + + + +
    + + + + + + + +
    + +
    +
    +
    +
    +

    Interacting with the Shell

    +
    +

    + Certain characters are interpreted by the shell. For example, the + "&". If you wish to include the & in a task description, + you need to escape it, so the shell doesn't interpret it. For + example: +

    + +
    % task add Buy bread & milk
    + +

    + This command is an error because of the &. The shell will + consider this to be two commands: +

    + +
    % task add Buy bread &
    +% milk
    + +

    + The shell treats the & character as an indicator that the + command is complete and should be run in the background. Then the + shell considers "milk" to be a command all by itself. Which it is + not. One way to get around this is to individually escape the & + character: +

    + +
    % task add Buy bread \& milk
    + +

    + Another is to quote the entire description, with either ' or " + characters: +

    + +
    % task add "Buy bread & milk"
    + +

    + Task itself interprets the commands, and it too can make mistakes. + For example, any colon : character will be interpreted by task as a + delimiter between an attribute name and its value. Currently there + is no workaround for this. +

    +
    + +
    +
    +
    +

    + Copyright 2006-2008, P. Beckingham. All rights reserved. +

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + +
    + + + + + + + diff --git a/html/simple.html b/html/simple.html new file mode 100644 index 000000000..b9e6e1765 --- /dev/null +++ b/html/simple.html @@ -0,0 +1,352 @@ + + + + Task 1.4.0 + + + + + + + +
    + + + + + + + +
    + +
    +
    +
    +
    +

    Simple Usage

    +
    +

    + Let us begin by adding some tasks: +

    + +
    % task add Book plane ticket
    +% task add Rent a tux
    +% task add Reserve a rental car
    +% task add Reserve a hotel room
    + +

    + That's it. You'll notice immediately that task has a very + minimalist interface. Let us take a look at those tasks: +

    + +
    % task ls
    +
    +ID Project Pri Description
    + 1             Book plane ticket
    + 2             Rent a tux
    + 3             Reserve a rental car
    + 4             Send John a birthday card
    + +

    + The 'ls' command provides the most minimal list of tasks. Each + task has been given an id number, and you can see that there are no + projects or priorities assigned. Wait a minute - I own a tux, I + don't need to rent one. Let us delete task 2: +

    + +
    % task 2 delete
    +Permanently delete task? (y/n) y
    + +

    + Task wants you to confirm deletions. To remove the confirmation, + edit your .taskrc file and change the line: +

    + +
    confirmation=yes
    + +

    + to have a value of "no". +

    + +

    + While the use of projects and priorities are not essential to + benefitting from task, they can be very useful when the list of + tasks grows large. Let's assign a project to these tasks: +

    + +
    % task 1 project:Wedding
    +% task 3 project:Wedding
    +% task 4 project:Family
    +% task ls
    +
    +  ID Project Pri Description
    +   3 Family      Send John a birthday card
    +   2 Wedding     Reserve a rental car
    +   1 Wedding     Book plane ticket
    + +

    + Notice that the id numbers have changed. When tasks get deleted, + or have their attributes changed (project, for example), the ids are + prone to change. But the id numbers will remain valid until the + next 'ls' command is run. You should only use the ids from the most + recent 'ls' command. The ids change, because task is always trying + to use small numbers so that it is easy for you to enter them + correctly. Now that projects are assigned, we can look at just the + Wedding project tasks: +

    + +

    + Subprojects are supported. If you have a project "Wedding", you can + specify that a task is a subproject "Transport" of "Wedding" by + assigning the project "Wedding.Transport". Let's do this: +

    + +
    % task 2 project:Wedding.Transport
    +% task ls
    +
    +ID Project           Pri Description
    + 3 Family                Send John a birthday card
    + 2 Wedding.Transport     Reserve a rental car
    + 1 Wedding               Book plane ticket
    + +

    + Task matches the leftmost part of the project when searching, so + projects may be abbreviated: +

    + +
    % task ls project:Wedding.Tra
    +
    +ID Project           Pri Description
    + 2 Wedding.Transport     Reserve a rental car
    + +

    + This way of matching projects can be used to see all tasks under + the "Wedding" project and all subprojects: +

    + +
    % task ls project:Wedding
    +
    +ID Project           Pri Description
    + 2 Wedding.Transport     Reserve a rental car
    + 1 Wedding               Book plane ticket
    + +

    + Let's reassign 2 back to the "Wedding" project: +

    + +
    % task 2 project:Wedding
    + +

    + Now that projects are assigned, we can look at just the + Wedding project tasks: +

    + +
    % task ls project:Wedding
    +
    +ID Project Pri Description
    + 1 Wedding     Book plane ticket
    + 2 Wedding     Reserve a rental car
    + +

    + Any command arguments after the 'ls' are used for filtering the + output. We could also have requested: +

    + +
    % task ls ticket plane
    +
    +ID Project Pri Description
    + 1 Wedding     Book plane ticket
    + +

    + Now let's prioritize. Priorities can be H, M or L (High, Medium, + Low). +

    + +
    % task ls
    +
    +ID Project Pri Description
    + 3 Family      Send John a birthday card
    + 2 Wedding     Reserve a rental car
    + 1 Wedding     Book plane ticket
    +
    +% task 1 priority:H
    +% task 2 prior:M
    +% task 3 pr:H
    +Ambiguous attribute 'pr' - could be either of project, priority
    +% task 3 pri:H
    +% task ls
    +
    +ID Project Pri Description
    + 3 Family  H   Send John a birthday card
    + 1 Wedding H   Book plane ticket
    + 2 Wedding M   Reserve a rental car
    + +

    + Notice that task supports the abbreviation of words such as + priority, project. Priority can be abbreviated to pri, but not pr, + because it is ambiguous. Now that tasks have been prioritized, you + can see that the tasks are being sorted by priority, with the + highest priority tasks at the top. +

    + +

    + These attributes can all be provided when the task is added, instead + of applying them afterwards, as shown. The following command shows + how to set all the attributes at once: +

    + +
    % task add project:Wedding priority:H Book plane ticket
    + +

    + The 'ls' command provides the least information for each task. The + 'list' command provides more: +

    + +
    % task list
    +
    +ID Project Pri Due Active Age    Description
    + 3 Family  H              4 mins Send John a birthday card
    + 1 Wedding H              5 mins Book plane ticket
    + 2 Wedding M              5 mins Reserve a rental car
    + +

    + Notice that a task can have a due date, and can be active. The + task lists are sorted by due date, then priority. Let's add due + dates: +

    + +
    % task 3 due:6/25/2008
    +% task 1 due:7/31/2008
    +% task list
    +
    +ID Project Pri Due       Active Age    Description
    + 3 Family  H   6/25/2008        6 mins Send John a birthday card
    + 1 Wedding H   7/31/2008        7 mins Book plane ticket
    + 2 Wedding M                    7 mins Reserve a rental car
    + +

    + If today's date is 6/23/2008, then task 3 is due in 2 days. It will + be colored yellow if your terminal supports color. To change this + color, edit your .taskrc file, and change the line to one of these + alternatives: +

    + +
    color.due=red
    +color.due=on_blue
    +color.due=red on_blue
    +color.due=bold_red on_blue
    + +

    + Where color is one of the following: +

    + +
    black
    +blue
    +red
    +green
    +cyan
    +magenta
    +yellow
    +white
    + +

    + All colors are specified in this way. Take a look in .taskrc for + all the other color rules that you control. +

    + +

    + Tagging tasks is a good way to group them, aside from specifying a + project. To add a tag to a task: +

    + +
    % task <id> +tag
    + +

    + The plus sign indicates that this is a tag. Any number of tags may + be applied to a task, and then used for searching. Tags are just + single words that are labels. +

    + +
    % task list
    +
    +ID Project Pri Due       Active Age    Description
    + 3 Family  H   6/25/2008        8 mins Send John a birthday card
    + 1 Wedding H   7/31/2008        9 mins Book plane ticket
    + 2 Wedding M                    9 mins Reserve a rental car
    +
    +% task 1 +phone
    +% task 2 +phone
    +% task 3 +shopping
    +% task 3 +john
    +
    +% task list +phone
    +
    +ID Project Pri Due       Active Age    Description
    + 1 Wedding H   7/31/2008        9 mins Book plane ticket
    + 2 Wedding M                    9 mins Reserve a rental car
    + +

    + To remove a tag from a task, use the minus sign: +

    + +
    % task 3 -john
    +
    + +
    +
    +
    +

    + Copyright 2006-2008, P. Beckingham. All rights reserved. +

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + +
    + + + + + + + diff --git a/html/task.html b/html/task.html index e80ed9655..f07e8ab41 100644 --- a/html/task.html +++ b/html/task.html @@ -8,13 +8,14 @@
    @@ -29,24 +30,35 @@

    Task Home Page

    - Here you will find information on how to acquire, build, configure - and use the task program. + Here you will find information on how to acquire, build, configure, + use and become proficient with the task program.

    +

    + Alternatively, watch the + task movie + which illustrates many of task's features. +

    + + +
    -

    Get the Source Code

    +

    Get the Latest Source Release + task-1.4.0.tar.gz +

    +
    -

    - Download the - latest version - of the task source code (1.4.0, ????????????????????). -

    - -

    -

    New in version 1.4.0

    - Source: task-1.4.0.tar.gz -

    - +

    New in version 1.4.0 (7/10/2008)

    • Added new recurring tasks feature
    • Added "task undelete" feature to restore a (very) recently deleted @@ -71,10 +83,7 @@ (Find out what was new in prior versions)

      -

      -

      Troubleshooting

      -

      - +

      Troubleshooting

      Task has been built and tested in the following environments:

      @@ -102,1042 +111,6 @@
    -
    -

    Task Program Tutorial

    -
    -

    - This guide shows how to quickly set up the task program, and become - proficient with it. -

    - -

    - Alternatively, watch the - task movie - which illustrates many of task's features. -

    -
    - -
    -

    Quick Setup

    -
    -

    - Build the task program according to the directions in the INSTALL - file. This transcript illustrates a typical installation: -

    - -
    % ls
    -task-1.3.0.tar.gz
    -% gunzip task-1.3.0.tar.gz
    -% tar xf task-1.3.0.tar
    -% cd task-1.3.0
    -% ./configure
    -...
    -% make
    -...
    -% make install     # (may require sudo, depending on --prefix)
    - -

    - (For those of you using Cygwin, - you need to make sure you have the "g++" and "make" packages - available, which are found in the "devel" category.) -

    - -

    - You need to make sure that the installed task program is in your - PATH environment variable. -

    - -

    - Task reads a configuration file - called .taskrc in your home - directory - and stores pending and completed tasks in in a directory - specified in the configuration file. -

    - -

    - The simplest way to get a configuration file and task directory is - to run task. On startup, task will check to see if it can find the - configuration file and task directory, and if not found, will ask - you whether it may create both. -

    - -
    % task version
    -
    -A configuration file could not be found in /Users/paul/.taskrc
    -
    -Would you like a sample .taskrc created, so task can proceed? (y/n) y
    -Done.
    -
    -[then task will show version information]
    -
    - -
    -

    Simple Usage

    -
    -

    - Let us begin by adding some tasks: -

    - -
    % task add Book plane ticket
    -% task add Rent a tux
    -% task add Reserve a rental car
    -% task add Reserve a hotel room
    - -

    - That's it. You'll notice immediately that task has a very - minimalist interface. Let us take a look at those tasks: -

    - -
    % task ls
    -
    -ID Project Pri Description
    - 1             Book plane ticket
    - 2             Rent a tux
    - 3             Reserve a rental car
    - 4             Send John a birthday card
    - -

    - The 'ls' command provides the most minimal list of tasks. Each - task has been given an id number, and you can see that there are no - projects or priorities assigned. Wait a minute - I own a tux, I - don't need to rent one. Let us delete task 2: -

    - -
    % task 2 delete
    -Permanently delete task? (y/n) y
    - -

    - Task wants you to confirm deletions. To remove the confirmation, - edit your .taskrc file and change the line: -

    - -
    confirmation=yes
    - -

    - to have a value of "no". -

    - -

    - While the use of projects and priorities are not essential to - benefitting from task, they can be very useful when the list of - tasks grows large. Let's assign a project to these tasks: -

    - -
    % task 1 project:Wedding
    -% task 3 project:Wedding
    -% task 4 project:Family
    -% task ls
    -
    -  ID Project Pri Description
    -   3 Family      Send John a birthday card
    -   2 Wedding     Reserve a rental car
    -   1 Wedding     Book plane ticket
    - -

    - Notice that the id numbers have changed. When tasks get deleted, - or have their attributes changed (project, for example), the ids are - prone to change. But the id numbers will remain valid until the - next 'ls' command is run. You should only use the ids from the most - recent 'ls' command. The ids change, because task is always trying - to use small numbers so that it is easy for you to enter them - correctly. Now that projects are assigned, we can look at just the - Wedding project tasks: -

    - -

    - Subprojects are supported. If you have a project "Wedding", you can - specify that a task is a subproject "Transport" of "Wedding" by - assigning the project "Wedding.Transport". Let's do this: -

    - -
    % task 2 project:Wedding.Transport
    -% task ls
    -
    -ID Project           Pri Description
    - 3 Family                Send John a birthday card
    - 2 Wedding.Transport     Reserve a rental car
    - 1 Wedding               Book plane ticket
    - -

    - Task matches the leftmost part of the project when searching, so - projects may be abbreviated: -

    - -
    % task ls project:Wedding.Tra
    -
    -ID Project           Pri Description
    - 2 Wedding.Transport     Reserve a rental car
    - -

    - This way of matching projects can be used to see all tasks under - the "Wedding" project and all subprojects: -

    - -
    % task ls project:Wedding
    -
    -ID Project           Pri Description
    - 2 Wedding.Transport     Reserve a rental car
    - 1 Wedding               Book plane ticket
    - -

    - Let's reassign 2 back to the "Wedding" project: -

    - -
    % task 2 project:Wedding
    - -

    - Now that projects are assigned, we can look at just the - Wedding project tasks: -

    - -
    % task ls project:Wedding
    -
    -ID Project Pri Description
    - 1 Wedding     Book plane ticket
    - 2 Wedding     Reserve a rental car
    - -

    - Any command arguments after the 'ls' are used for filtering the - output. We could also have requested: -

    - -
    % task ls ticket plane
    -
    -ID Project Pri Description
    - 1 Wedding     Book plane ticket
    - -

    - Now let's prioritize. Priorities can be H, M or L (High, Medium, - Low). -

    - -
    % task ls
    -
    -ID Project Pri Description
    - 3 Family      Send John a birthday card
    - 2 Wedding     Reserve a rental car
    - 1 Wedding     Book plane ticket
    -
    -% task 1 priority:H
    -% task 2 prior:M
    -% task 3 pr:H
    -Ambiguous attribute 'pr' - could be either of project, priority
    -% task 3 pri:H
    -% task ls
    -
    -ID Project Pri Description
    - 3 Family  H   Send John a birthday card
    - 1 Wedding H   Book plane ticket
    - 2 Wedding M   Reserve a rental car
    - -

    - Notice that task supports the abbreviation of words such as - priority, project. Priority can be abbreviated to pri, but not pr, - because it is ambiguous. Now that tasks have been prioritized, you - can see that the tasks are being sorted by priority, with the - highest priority tasks at the top. -

    - -

    - These attributes can all be provided when the task is added, instead - of applying them afterwards, as shown. The following command shows - how to set all the attributes at once: -

    - -
    % task add project:Wedding priority:H Book plane ticket
    - -

    - The 'ls' command provides the least information for each task. The - 'list' command provides more: -

    - -
    % task list
    -
    -ID Project Pri Due Active Age    Description
    - 3 Family  H              4 mins Send John a birthday card
    - 1 Wedding H              5 mins Book plane ticket
    - 2 Wedding M              5 mins Reserve a rental car
    - -

    - Notice that a task can have a due date, and can be active. The - task lists are sorted by due date, then priority. Let's add due - dates: -

    - -
    % task 3 due:6/25/2008
    -% task 1 due:7/31/2008
    -% task list
    -
    -ID Project Pri Due       Active Age    Description
    - 3 Family  H   6/25/2008        6 mins Send John a birthday card
    - 1 Wedding H   7/31/2008        7 mins Book plane ticket
    - 2 Wedding M                    7 mins Reserve a rental car
    - -

    - If today's date is 6/23/2008, then task 3 is due in 2 days. It will - be colored yellow if your terminal supports color. To change this - color, edit your .taskrc file, and change the line to one of these - alternatives: -

    - -
    color.due=red
    -color.due=on_blue
    -color.due=red on_blue
    -color.due=bold_red on_blue
    - -

    - Where color is one of the following: -

    - -
    black
    -blue
    -red
    -green
    -cyan
    -magenta
    -yellow
    -white
    - -

    - All colors are specified in this way. Take a look in .taskrc for - all the other color rules that you control. -

    - -

    - Tagging tasks is a good way to group them, aside from specifying a - project. To add a tag to a task: -

    - -
    % task <id> +tag
    - -

    - The plus sign indicates that this is a tag. Any number of tags may - be applied to a task, and then used for searching. Tags are just - single words that are labels. -

    - -
    % task list
    -
    -ID Project Pri Due       Active Age    Description
    - 3 Family  H   6/25/2008        8 mins Send John a birthday card
    - 1 Wedding H   7/31/2008        9 mins Book plane ticket
    - 2 Wedding M                    9 mins Reserve a rental car
    -
    -% task 1 +phone
    -% task 2 +phone
    -% task 3 +shopping
    -% task 3 +john
    -
    -% task list +phone
    -
    -ID Project Pri Due       Active Age    Description
    - 1 Wedding H   7/31/2008        9 mins Book plane ticket
    - 2 Wedding M                    9 mins Reserve a rental car
    - -

    - To remove a tag from a task, use the minus sign: -

    - -
    % task 3 -john
    -
    - -
    -

    Advanced Usage

    -
    -

    - Here are the other commands, in some detail. -

    - - % task -

    - With no arguments, this command will generate a help message that - lists all these commands. -

    - - % task projects -

    - This report generates a list of all the different projects that you - are using along with a count of the pending tasks for each project. - For example: -

    - -
    % task projects
    -
    -Project   Tasks
    -Errands       1
    -Birthdays     3
    -Car           2
    - - - % task summary -

    - This report lists all the projects and a summary of their task - status. -

    - -
    % task summary
    -
    -Project  Remaining Avg age Complete 0%                        100%
    -Errands          1  3 days      50% XXXXXXXXXXXXXXXX
    -Birthdays        3  7 mths       0%
    -Car              2   2 wks      25% XXXXXXXXX
    - -

    - This shows the project, the remaining tasks, the average age of each - task, the percentage completed (remaining vs total) and a bar - indicating that percentage. -

    - - % task delete <id> -

    - There are two ways of getting rid of tasks - mark them as done, or - delete them. -

    - - % task undelete <id> -

    - If a task was inadvertently deleted, it may be undeleted, provided that no - reports have been run since the deletion. Ideally, the undelete command is - run immediately after the erroneous delete command. -

    - -

    - If a report is run (such as "task list"), then task performs a garbage - collection that removes deleted tasks, and the task cannot be undeleted. -

    - - % task done <id> -

    - This is how a task is marked as done. -

    - - % task list ... -

    - The list report will show the active status, and age of the task in - addition to the columns that "task ls" shows. It is just a more - detailed list. -

    - - % task long ... -

    - The long report will show the entry date and start date of a task, - in addition to the columns that the "task list" shows. -

    - - % task start <id> -

    - This marks a task as started (and therefore active), which is shown - in the "list" report: -

    - -
    % task list
    -
    -ID Project Pri Due Active Age     Description
    -12 Errand  L                      Remember to deposit check
    -...
    -
    -% task start 12
    -% task list
    -
    -ID Project Pri Due Active Age     Description
    -12 Errand  L       *      3 days  Remember to deposit check
    -...
    - - % task active -

    - Shows all active tasks, that is, the tasks for which the - "task start ..." command was run, as shown above. -

    - - % task overdue -

    - Simply lists all the task that have a due date that is past, in - "list" format. -

    - - % task history -

    - This report shows you an overview of how many tasks were added, - completed and deleted, by month. It looks like this: -

    - -
    % task history
    -
    -Year Month     Added Completed Deleted Net
    -2008 March        21        16       0   5
    -     April        13        11       1   1
    -     May           8        14       3  -9
    - -

    - This shows that for the three months that task has been used, March - and April saw the total number of tasks increase, but in May the - number decreased as more task were completed than added. -

    - - % task calendar -

    - This report shows a calendar of the current month, with any task - due or overdue dates marked on it. Color is used to mark these - dates. -

    - -
    % task calendar
    -
    -May 2008
    -
    -Su Mo Tu We Th Fr Sa
    -             1  2  3
    - 4  5  6  7  8  9 10
    -11 12 13 14 15 16 17
    -18 19 20 21 22 23 24
    -25 26 27 28 29 30 31
    - - % task next -

    - This report shows you the tasks you should probable work on next. - Task will scan all the tasks and will pick two task from each - project to report. Those two tasks will be chosen in order of - overdue, due soon, High, Medium or Low priority. Essentially task - chooses the two most important task for each project and displays - them ordered in the usual way. -

    - -

    - If you wish to show a different number of tasks per project, modify - the entry in .taskrc: -

    - -
    next=2
    - -

    - To be your preferred number. -

    - - % task <id> ... -

    - When a task id is specified, everything applies to just that task. - Suppose we needed to correct a task: -

    - -
    % task ls
    -
    -ID Project Pri Description
    -12 Errand  L   Remember to deposit chekc
    -...
    -
    -% task 12 Remember to deposit bonus check
    -% task ls
    -
    -ID Project Pri Description
    -12 Errand  L   Remember to deposit bonus check
    -...
    - - % task oldest -

    - Lists the oldest tasks. Shows 10 tasks by default, but can be - set via the "oldest" configuration variable. -

    - - % task newest -

    - Lists the newest tasks. Shows 10 tasks by default, but can be - set via the "newest" configuration variable. -

    - - % task /from/to/ -

    - If a task has been entered with a typo, it can be easily corrected - by this command. For example: -

    - -
    % task ls
    -
    -ID Project Pri Description
    -12 Errand  L   Remember to deposit chekc
    -...
    -
    -% task 12 /chekc/check/
    -% task ls
    -
    -ID Project Pri Description
    -12 Errand  L   Remember to deposit check
    -...
    - -

    - This command makes single corrections to a task description. -

    - - % task tags -

    - This command will generate a list of all the tags that are currently - in use by task. -

    - - % task info <id> -

    - This command gives detailed information about a single task. It - will tell you when the task was entered, when started, its status, - tags, and more. -

    - - % task stats -

    - This command generates a list of statistics about your task usage, - such as the average time it takes to complete a task, how often new - tasks are added, and more. -

    - - % task completed -

    - This generates a list of all tasks that have been completed, sorted - by their completion date. -

    - - % task export <file name> -

    - This instructs task to write out a CSV format dump of all tasks, - both pending and completed, to the file specified. This is how you - might view tasks in a spreadsheet. -

    - - % task colors -

    - This command displays all the colors that task supports. -

    - - % task usage -

    - If logging has been enabled by the "command.logging=on" directive - in the .taskrc file, then task will record every command that is - run. When this command is run, task will display a count of how - many times each command was used. -

    - -

    - This command is for the purpose of seeing whether command are - actually used. -

    - - % task version -

    - This can be used to show the version number of task, and to display - all the current configuration settings, as read from the .taskrc - file. -

    - - % task rc:<file> ... -

    - By specifying rc:, it is possible to force task to use an alternate - .taskrc file. By default, task looks in your home directory, so these two - commands are essentially identical: -

    - -
    % task list
    -% task rc:~/.taskrc list
    - -

    - What this override allows, is the possibility of keeping your task lists - completely separate, say for work and home. This can be accomplished with - the following commands (valid for bash): -

    - -
    % alias htask="task rc:/home/me/.taskrc_home"
    -% alias wtask="task rc:/home/me/.taskrc_work"
    -% htask list
    -...
    -% wtask list
    -...
    - - % task <id> fg:... bg:... -

    - Not strictly a command, the setting of the fg and bg (foreground - and background) attributes determines the colors used to represent - the task. Valid foreground colors are: -

    - -
             bold          underline          bold_underline
    -black    bold_black    underline_black    bold_underline_black
    -red      bold_red      underline_red      bold_underline_red
    -green    bold_green    underline_green    bold_underline_green
    -yellow   bold_yellow   underline_yellow   bold_underline_yellow
    -blue     bold_blue     underline_blue     bold_underline_blue
    -magenta  bold_magenta  underline_magenta  bold_underline_magenta
    -cyan     bold_cyan     underline_cyan     bold_underline_cyan
    -white    bold_white    underline_white    bold_underline_white
    - -

    - Note that these are not just colors, but combinations of colors and - attributes. Valid background colors are: -

    - -
    on_black    on_bright_black
    -on_red      on_bright_red
    -on_green    on_bright_green
    -on_yellow   on_bright_yellow
    -on_blue     on_bright_blue
    -on_magenta  on_bright_magenta
    -on_cyan     on_bright_cyan
    -on_white    on_bright_white
    - -

    - Note also that this capability does depend on whether your terminal - program can display these colors. -

    -
    - -
    -

    Interacting with the Shell

    -
    -

    - Certain characters are interpreted by the shell. For example, the - "&". If you wish to include the & in a task description, - you need to escape it, so the shell doesn't interpret it. For - example: -

    - -
    % task add Buy bread & milk
    - -

    - This command is an error because of the &. The shell will - consider this to be two commands: -

    - -
    % task add Buy bread &
    -% milk
    - -

    - The shell treats the & character as an indicator that the - command is complete and should be run in the background. Then the - shell considers "milk" to be a command all by itself. Which it is - not. One way to get around this is to individually escape the & - character: -

    - -
    % task add Buy bread \& milk
    - -

    - Another is to quote the entire description, with either ' or " - characters: -

    - -
    % task add "Buy bread & milk"
    - -

    - Task itself interprets the commands, and it too can make mistakes. - For example, any colon : character will be interpreted by task as a - delimiter between an attribute name and its value. Currently there - is no workaround for this. -

    -
    - -
    -

    Configuring Task

    -
    -

    - Task recognizes several entries in the .taskrc file for - configuration purposes. Valid entries are of the form: -

    - -
    name=value
    - -

    - Valid examples are: -

    - -
    data.location
    -
    - This is a path to the directory containing all the task files. - By default, it is set up to be ~/.task, for example: - /Users/paul/.task -
    - -
    command.logging
    -
    - May be "on" or "off", defaulting to "off". This determines - whether task records commands. This is not generally useful, - except while developing task. -
    - -
    confirmation
    -
    - May be "yes" or "no", and determines whether task will ask for - confirmation before deleting a task. -
    - -
    nag
    -
    - This may be a string of text, or blank. It is used as a prompt - when a task is completed that is not considered high priority. - The "task next" command lists important tasks, and completing - one of those does not generate this nagging. Default value is: - - Note: try to stick to high priority tasks. See "task next". -
    - -
    next
    -
    - Is a number, defaulting to 2, which is the number of tasks for - each project that are shown in the "task next" command. -
    - -
    curses
    -
    - Determines whether task uses ncurses to establish the size of - the window you are using, for text wrapping. -
    - -
    blanklines
    -
    - May be "on" or "off". Prevents the display of unnecessary blank - lines so that task makes better use screen real estate on small- - screened devices. -
    - -
    dateformat
    -
    -

    - This is a string of characters that define how task formats dates. - The default value is: -

    - -
    m/d/Y
    - -

    - which means dates look like: -

    - -
    6/7/2008
    - -

    - The string should contain the characters: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CharacterMeaningExample
    mminimal-digit month1, 12
    dminimal-digit day1, 30
    ytwo-digit year08
    Mtwo-digit month01, 12
    Dtwo-digit day01, 30
    Yfour-digit year2008
    -

    - -

    - The string may also contain other characters to act as spacers, - or formatting. Other values could include (but are not limited to): -

    - -

    - - - - - - - - - - - - - - - - -
    dateformat - How it looks
    d/m/Y7/6/2008
    YMD20080607
    m-d-y6-7-08
    -

    -
    - -
    showage
    -
    - May be "yes" or "no". Determines whether the "Age" - column appears on the "list" and "next" reports. -
    - -
    monthsperline
    -
    - Determines how many months the "task calendar" command - renders across the screen. Defaults to 1. -
    - -
    oldest
    -
    - Determines how many tasks the "task oldest" command displays. - Defaults to 10. -
    - -
    newest
    -
    - Determines how many tasks the "task newest" command displays. - Defaults to 10. -
    - -
    defaultwidth
    -
    - The width of tables used when ncurses support is not available. - Defaults to 80. -
    - -
    color
    -
    - May be "on" or "off". Determines whether task uses color. -
    - -
    - color.overdue
    - color.due
    - color.pri.H
    - color.pri.M
    - color.pri.L
    - color.pri.none
    - color.active
    - color.tagged -
    -
    - These are the coloration rules. They correspond to a particular - attribute of a task, such as it being due, or being active, and - specifies the automatic coloring of that task. The value may - be one optional foreground color (see below) and one optional - background color. For example, the value may be: -
    - bold_red on_bright_yellow -
    - -
    color.tag.X
    -
    - Colors any task that has the tag X. -
    - -
    color.project.X
    -
    - Colors any task assigned to project X. -
    - -
    color.keyword.X
    -
    - Colors any task where the description contains X. -
    -
    - -
    -

    Colors

    -
    -

    - Task supports color in several places. In cases where you may - specify a color, a foreground, a background, or a combination - foreground and background color may be used. The following are - valid foreground colors: -

    - -
             bold          underline          bold_underline
    -black    bold_black    underline_black    bold_underline_black
    -red      bold_red      underline_red      bold_underline_red
    -green    bold_green    underline_green    bold_underline_green
    -yellow   bold_yellow   underline_yellow   bold_underline_yellow
    -blue     bold_blue     underline_blue     bold_underline_blue
    -magenta  bold_magenta  underline_magenta  bold_underline_magenta
    -cyan     bold_cyan     underline_cyan     bold_underline_cyan
    -white    bold_white    underline_white    bold_underline_white
    - -

    - and the following are valid background colors: -

    - -
    on_black    on_bright_black
    -on_red      on_bright_red
    -on_green    on_bright_green
    -on_yellow   on_bright_yellow
    -on_blue     on_bright_blue
    -on_magenta  on_bright_magenta
    -on_cyan     on_bright_cyan
    -on_white    on_bright_white
    -
    - -
    -

    Command Usage

    -
    -
    task add [tags] [attrs] desc...
    -       task list [tags] [attrs] desc...
    -       task long [tags] [attrs] desc...
    -       task ls [tags] [attrs] desc...
    -       task completed [tags] [attrs] desc...
    -       task ID [tags] [attrs] [desc...]
    -       task ID /from/to/
    -       task delete ID
    -       task undelete ID
    -       task info ID
    -       task start ID
    -       task done ID
    -       task projects
    -       task tags
    -       task summary
    -       task history
    -       task ghistory
    -       task next
    -       task calendar
    -       task active
    -       task overdue
    -       task oldest
    -       task newest
    -       task stats
    -       task usage
    -       task export
    -       task color
    -       task version
    -
    -ID is the numeric identifier displayed by the 'task list' command
    -
    -Tags are arbitrary words, any quantity:
    -  +tag               The + means add the tag
    -  -tag               The - means remove the tag
    -
    -Attributes are:
    -  project:           Project name
    -  priority:          Priority
    -  due:               Due date
    -  fg:                Foreground color
    -  bg:                Background color
    -
    -Any command or attribute name may be abbreviated if still unique:
    -  task list project:Home
    -  task li       pro:Home
    -
    -Some task descriptions need to be escaped because of the shell:
    -  task add "quoted ' quote"
    -  task add escaped \' quote
    -
    -Many characters have special meaning to the shell, including:
    -  $ ! ' " ( ) ; \ ` * ? { } [ ] < > | & % # ~
    -
    -

    diff --git a/html/usage.html b/html/usage.html new file mode 100644 index 000000000..1fa4f816e --- /dev/null +++ b/html/usage.html @@ -0,0 +1,139 @@ + + + + Task 1.4.0 + + + + + + + +
    + + + + + + + +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + +
    + + + + + + +