taskrc(5)
π NAME π
Okay bestie, welcome to taskrc(5), the user manual page for configuration details for the task(1) command. This is the whole .taskrc situation, and itβs lowkey iconic. β¨
π SYNOPSIS π
Hereβs where the config file can live / how you point Taskwarrior at it, no cap:
$HOME/.taskrc
task rc:<directory-path>/.taskrc ...
TASKRC=<directory-path>/.taskrc task ...
XDG_CONFIG_HOME=<directory-path>/task/taskrc task ...
π DESCRIPTION π
Taskwarrior gets its configuration data from a file called .taskrc. Normally it lives in your home directory, like this:
$HOME/.taskrc
You can override that default location with the rc: attribute when you run task:
$ task rc:<directory-path>/.taskrc ...
Or you can use the TASKRC environment variable:
$ TASKRC=/tmp/.taskrc task ...
Also, if no ~/.taskrc exists, Taskwarrior checks whether the XDG_CONFIG_HOME environment variable is defined:
$ XDG_CONFIG_HOME=~/.config task ...
Individual options can be overridden too, using the rc.<name>: attribute when running task:
$ task rc.<name>:<value> ...
or:
$ task rc.<name>=<value> ...
If Taskwarrior runs and thereβs no existing configuration file, it will ask if it should create a default, sample .taskrc file in your home directory. π«Ά
The .taskrc file follows a very simple syntax for name/value pairs:
<name> = <value>
There may be whitespace around <name>, '=' and <value>, and it is ignored. Whitespace inside <value> is left intact. Whitespace is not permitted in comma-separated lists. The entry must be on a single line β no continuations. Values support UTF8 as well as JSON encoding, such as \uNNNN.
Taskwarrior is flexible about Boolean values, btw. You can use "1" to enable; anything else is interpreted as disabled. The values "on", "yes", "y" and "true" are also supported. π
include <file>
There may be whitespace around 'include' and <file>. The file may be an absolute or relative path, and the special character '~' is expanded to mean $HOME. If a relative path is specified, it will be evaluated as relative with respect to these directories, listed in order of precedence:
- the current working directory
- the directory containing the taskrc file
- the directories set by the package manager (which usually contain pre-defined themes)
Note that environment variables are also expanded in paths β and in any other taskrc variables, too. π
# <comment>
A comment consists of the character '#', and extends from the '#' to the end of the line. There is no way to comment a multi-line block. There may be blank lines.
Almost every value has a default setting, and an empty .taskrc file is one that makes use of every default. So the contents of your .taskrc represent overrides of the default values. To remove a default value completely, you need an entry like this:
<name> =
That entry overrides the default value with a blank value. Slay. π
π¦ EDITING π¦
You can edit your .taskrc file by hand if you want, or you can use the config command. To permanently set a value in your .taskrc, use this command:
$ task config nag "You have more urgent tasks."
To delete an entry, use this command:
$ task config nag
Taskwarrior will then use the default value. To explicitly set a value to blank β and therefore avoid using the default value β use this command:
$ task config nag ""
Taskwarrior will also display all your settings with this command:
$ task show
and in addition, it will perform a check of all the values in the file, warning you of anything it finds amiss. π«Ά
π§ NESTING CONFIGURATION FILES π§
Your .taskrc can include other files containing configuration settings by using the include statement:
include <path/to/the/configuration/file/to/be/included>
By using include files, you can divide your main configuration file into several ones containing just the relevant configuration data β like colors, etc. Itβs giving organized main character energy. β¨
There are three excellent uses of includes in your .taskrc, shown here:
include default.theme
include holidays.en-US.rc
include dark-16.theme
This includes two standard files that are distributed with Taskwarrior, which define a set of US holidays, and set up a 16-color theme to use, to color the reports and calendar. π
πΈ ENVIRONMENT VARIABLES πΈ
These environment variables override defaults, but not command-line arguments.
TASKDATA=~/.taskβ This overrides the default path for the Taskwarrior data.TASKRC=~/.taskrcβ This overrides the default RC file.
This environment variable will be checked if ~/.taskrc doesnβt exist:
XDG_CONFIG_HOME=~/.configβ If set, Taskwarrior will look for a$XDG_CONFIG_HOME/task/taskrcfile.
π CONFIGURATION VARIABLES π
Valid variable names and their default values are:
π FILES π
data.location=$HOME/.taskβ This is a path to the directory containing all the Taskwarrior data. By default, it is set up to be~/.task, for example:/home/paul/.task.
Note that you can use the ~ shell meta character, which will be properly expanded. β¨
Note that the TASKDATA environment variable overrides this setting.
hooks.location=$HOME/.task/hooksβ This is a path to the hook scripts directory. By default it is~/.task/hooks.gc=1β Can be used to temporarily suspend rebuilding, so that task IDs donβt change. Rebuilding requires read/write access to the database, so disablinggcmay result in better performance.
Note that this should be used in the form of a command line override (task rc.gc=0 ...), and not permanently used in the.taskrcfile, as this significantly affects performance in the long term. π
purge.on-sync=0β If set, old tasks will be purged automatically after each synchronization. Tasks are identified as βoldβ when they have status βDeletedβ and have not been modified for 180 days.hooks=1β This master control switch enables hook script processing. The default value is'1', but certain extensions and environments may need to disable hooks.exit.on.missing.db=0β When set to'1', causes the program to exit if the database (~/.taskorrc.data.locationorTASKDATAoverride) is missing. Default value is'0'.
β TERMINAL β
detection=1β Determines whether to use ioctl to establish the size of the window you are using, for text wrapping.limit:25β Specifies the desired number of tasks a report should show, if a positive integer is given. The value'page'may also be used, and will limit the report output to as many lines of text as will fit on screen. Default value is'25'. π¦defaultwidth=80β The width of output used when auto-detection support is not available. Defaults to80. If set to0, it is interpreted as infinite width, therefore with no word-wrapping; this is useful when redirecting report output to a file for subsequent handling.defaultheight=24β The height of output used when auto-detection support is not available. Defaults to24. If set to0, it is interpreted as infinite height. This is useful when redirecting charts to a file for subsequent handling.avoidlastcolumn=0β Causes the width of the terminal minus one to be used as the full width. This avoids placing color codes in the last column, which can cause problems for Cygwin users. Default value is'0'.hyphenate=1β Hyphenates lines when wrapping breaks occur mid-word. Default value is'1'.editor=viβ Specifies which text editor you wish to use for when thetask edit <ID>command is used. Taskwarrior will first look for this configuration variable. If found, it is used. Otherwise it will look for the$VISUALor$EDITORenvironment variables, before it defaults to using"vi".reserved.lines=1β This is the number of lines reserved at the bottom of the screen for the shell prompt. This is only referenced when'limit:page'is used.
π MISCELLANEOUS π
verbose=1|0|nothing|list...β When set to"1"(the default), helpful explanatory comments are added to all output from Taskwarrior. Setting this to"0"means that you would see regular output.
The special value "nothing" can be used to eliminate all optional output, which results in only the formatted data being shown, with nothing else. This output is most readily parsed and used by shell scripts. π
Alternatively, you can specify a comma-separated list of verbosity tokens that control specific occasions when output is generated. This list may contain:
blankβ Inserts extra blank lines in output, for clarityheaderβ Messages that appear before report output (this includes.taskrc/.taskoverrides and the"[task next]"message)footnoteβ Messages that appear after report output (mostly status messages and change descriptions)labelβ Column labels on tabular reportsnew-idβ Provides feedback on any new task with IDs (and UUIDs for new tasks with ID 0, such as new completed tasks).new-uuidβ Provides feedback on any new task with UUIDs. Overridesnew-id. Useful for automation.newsβ Reminds to read new release highlights until the user runs"task news".affectedβ Reports'N tasks affected'and similareditβ Used the verbose template for the'edit'commandspecialβ Feedback when applying special tagsprojectβ Feedback about project status changessyncβ Feedback about syncfilterβ Shows the filter used in the commandcontextβ Show the current context. Displayed in footnote.overrideβ Notification when configuration options are overriddenrecurβ Notification when a new recurring task instance is createddefaultβ Notifications about Taskwarrior choosing to perform a default action.
The tokens "affected", "new-id", "new-uuid", "project", "override" and "recur" imply "footnote".
The token "default" implies "header".
Note that the "1" setting is equivalent to all the tokens being specified, and the "nothing" setting is equivalent to none of the tokens being specified.
Here are the shortcut equivalents:
verbose=on
verbose=blank,header,footnote,label,new-id,news,affected,edit,special,project,sync,filter,override,recur
verbose=0
verbose=blank,label,new-id,edit
and the final two verbose values are:
verbose=nothing
verbose=
Those additional comments are sent to standard error for header, footnote and project. The others are sent to standard output.
confirmation=1β may be"1"or"0", and decides whether Taskwarrior asks for confirmation before deleting a task or performing theundocommand. The default value is"1". Consider leaving this enabled, for safety.allow.empty.filter=1β an empty filter combined with a write command is potentially a way to modify all tasks by mistake, and when this is detected, confirmation is required. Setting this to'0'means that it is an error to use a write command with no filter.annotation.info=1β determines whether annotations are displayed below the description field by theindent.annotation=2β controls the number of spaces to indent annotations when shown beneath the description field. The default value is"2".indent.report=0β controls the indentation of the entire report output. Default is"0".row.padding=0β controls left and right padding around each row of the report output. Default is"0".column.padding=0β controls padding between columns of the report output. Default is"1".bulk=3β is a number, defaulting to3. When this number or greater of tasks are modified in a single command, confirmation will be required, regardless of the value of theconfirmationvariable. The special valuebulk=0is treated as an infinity. This is useful for preventing large-scale unintended changes. slay for safety rails β¨nag=You have more urgent tasks.β this may be a string of text, or blank. It is used as a prompt when a task is started or completed, when there are other tasks with a higher urgency. Default value is:'You have more urgent tasks'. It is a gentle reminder that you are contradicting your own urgency settings. the callout is real πlist.all.projects=0β may be"1"or"0", and determines whether theprojectscommand lists all the project names you have used, or just the ones used in active tasks. The default value is"0".summary.all.projects=0β if set to"1", shows all projects in the summary report, even if there are no pending tasks. The default value is"0".complete.all.tags=1β may be"1"or"0", and determines whether the tab completion scripts consider all the tag names you have used, or just the ones used in active tasks. The default value is"0". (yes, the name says1and the text says default0β that's the page, bestie)list.all.tags=1β may be"1"or"0", and determines whether thetagscommand lists all the tag names you have used, or just the ones used in active tasks. The default value is"0".print.empty.columns=1β may be"1"or"0", and determines whether columns with no data for any task are printed. Defaults to"0".search.case.sensitive=1β may be"1"or"0", and determines whether keyword lookup and substitutions on the description and annotations are done in a case sensitive way. Defaults to"1"on most platforms. Defaults to"0"on Cygwin due to older regex library problems with case-insensitivity.regex=1β controls whether regular expression support is enabled. The default value is"1".xterm.title=1β sets the xterm window title when reports are run. Defaults to"0".expressions=infix|postfixβ sets a preference for infix expressions (1 + 2) or postfix expressions (1 2 +). Defaults to infix.json.array=1β determines whether theexportcommand encloses the JSON output in'[...]'and adds','after each exported task object to create a properly-formed JSON array. Withjson.array=0,exportwrites raw JSON objects to STDOUT, one per line. Defaults to"1"._forcecolor=1β Taskwarrior shuts off color automatically when the output is not sent directly to a TTY. For example, this command:
$ task list > file
will not use any color. To override this, use:
$ task rc._forcecolor=yes list > file
Defaults to "0".
active.indicator=*β the character or string to show in thestart.activecolumn. Defaults to*.tag.indicator=+β the character or string to show in thetag.indicatorcolumn. Defaults to+.dependency.indicator=Dβ the character or string to show in thedepends.indicatorcolumn. Defaults toD.uda.<name>.indicator=Uβ the character or string to show in the<uda>.indicatorcolumn. Defaults toU.recurrence=1β controls whether recurrence is enabled, and whether recurring tasks continue to generate new task instances. Defaults to"1". If you are syncing multiple clients, then it is advised that you set'recurrence=1'on your primary client, and'recurrence=0'on ALL other clients. This is a workaround for a duplication bug. write that down, bestie π«Άrecurrence.confirmation=promptβ controls whether changes to recurring tasks propagates to other child tasks with or without confirmation. A value of'yes'means propagate changes without confirmation. A value of'no'means do not propagate changes and don't ask for confirmation. A value of'prompt'prompts you every time. Defaults to'prompt'.recurrence.indicator=Rβ the character or string to show in therecurrence_indicatorcolumn. Defaults toR.recurrence.limit=1β the number of future recurring tasks to show. Defaults to1. For example, if a weekly recurring task is added with a due date of tomorrow, andrecurrence.limitis set to2, then a report will list 2 pending recurring tasks, one for tomorrow, and one for a week from tomorrow.abbreviation.minimum=2β minimum length of any abbreviated command/value. This means that"ve","ver","vers","versi","versio"will all equate to"version", but"v"will not. Default is2.debug=0β Taskwarrior has a debug mode that causes diagnostic output to be displayed. Typically this is not something anyone would want, but when reporting a bug, debug output can be useful. It can also help explain how the command line is being parsed, but the information is displayed in a developer-friendly, not a user-friendly way. Turning debug on automatically setsdebug.hooks=1anddebug.parser=1if they do not already have assigned values. Defaults to"0".debug.hooks=0β controls the hook system diagnostic level. Level 0 means no diagnostics. Level 1 shows hook calls. Level 2 also shows exit status and I/O.debug.parser=0β controls the parser diagnostic level. Level 0 shows no diagnostics. Level 1 shows the final parse tree. Level 2 shows the parse tree from all phases of the parse. Level 3 shows expression evaluation details.obfuscate=0β when set to'1', will replace all report text with'xxx'. This is useful for sharing report output in bug reports. Default value is'0'. privacy era πalias.rm=deleteβ Taskwarrior supports command aliases. This alias provides an alternate name (rm) for thedeletecommand. You can use aliases to provide alternate names for any of the commands. Several commands you may use are actually aliases β thehistoryreport, for example, orexport.burndown.cumulative=1β may be"1"or"0", and controls the behaviour of theburndowncommand. When set to1, it sums up all completed tasks, otherwise they only get plotted in the interval where the task was completed. Defaults to1.
ποΈ DATES ποΈ
dateformat=Y-M-Dβ date format valueY-M-D.dateformat.report=β report date format value, shown blank here.dateformat.holiday=YMDβ holiday date format valueYMD.dateformat.edit=Y-M-D H:N:Sβ edit date format valueY-M-D H:N:S.dateformat.info=Y-M-D H:N:Sβ info date format valueY-M-D H:N:S.dateformat.annotation=β annotation date format value, shown blank here.report.X.dateformat=Y-M-Dβ this is a string of characters that defines how Taskwarrior formats date values. The precedence order for the configuration variable isreport.X.dateformatthendateformat.reportthendateformatfor formatting the due dates in reports. If bothreport.X.dateformatanddateformat.reportare not set thendateformatwill be applied to the date. Entered dates as well as all other displayed dates in reports are formatted according todateformat.
The default value is the ISO-8601 standard: Y-M-D. The string can contain the characters:
mβ minimal-digit month, for example1or12dβ minimal-digit day, for example1or30yβ two-digit year, for example09or12Dβ two-digit day, for example01or30Mβ two-digit month, for example01or12Yβ four-digit year, for example2009or2015aβ short name of weekday, for exampleMonorWedAβ long name of weekday, for exampleMondayorWednesdaybβ short name of month, for exampleJanorAugBβ long name of month, for exampleJanuaryorAugustvβ minimal-digit week, for example3or37Vβ two-digit week, for example03or37hβ minimal-digit hour, for example3or21nβ minimal-digit minutes, for example5or42sβ minimal-digit seconds, for example7or47Hβ two-digit hour, for example03or21Nβ two-digit minutes, for example05or42Sβ two-digit seconds, for example07or47Jβ three-digit Julian day, for example023or365jβ Julian day, for example23or365wβ Week day, for example0for Monday,5for Friday
The characters 'v', 'V', 'a' and 'A' can only be used for formatting printed dates (not to parse them).
The string may also contain other characters to act as spacers, or formatting. Examples for other values of dateformat:
d/m/Y would use for input and output 24/7/2009
yMD would use for input and output 090724
M-D-Y would use for input and output 07-24-2009
Examples for other values of dateformat.report:
These are the exact outputs, no cap:
a D b Y (V) would emit "Fri 24 Jul 2009 (30)"
A, B D, Y would emit "Friday, July 24, 2009"
wV a Y-M-D would emit "w30 Fri 2009-07-24"
yMD.HN would emit "110124.2342"
m/d/Y H:N would emit "1/24/2011 10:42"
a D b Y H:N:S would emit "Mon 24 Jan 2011 11:19:42"
Undefined fields get their minimal valid values (1 for month and day, and 0 for hour, minutes and seconds) when there is at least one more global date field that is set. Otherwise, they get the corresponding values of now. For example:
8/1/2013 with m/d/Y implies August 1, 2013 at midnight (inferred)
8/1 20:40 with m/d H:N implies August 1, 2013 (inferred) at 20:40
date.iso=1β enables ISO-8601 date support. The default value is1. slay, standardized dates π
π CALENDAR π
weekstart=Sundayβ decides the day a week starts. Valid values areSundayorMondayonly. The default value isSunday.displayweeknumber=1β decides if week numbers are displayed when using thetask calendarcommand. The week number depends on the day a week starts. The default value is1.due=7β the number of days into the future that define when a task is considered due, and is colored accordingly. The default value is7.calendar.details=sparseβ if set tofull, runningtask calendarwill display the details of tasks with due dates that fall into the calendar period. The corresponding days will be color-coded in the calendar. If set tosparse, only the corresponding days will be color-coded and no details will be displayed. Displaying due dates with details is turned off by setting the variable tonone. The default value issparse.calendar.details.report=listβ the report to run when displaying the details of tasks with due dates when running thetask calendarcommand. The default value islist.calendar.offset=0β if1, the first month in the calendar report is effectively changed by the offset value specified incalendar.offset.value. It defaults to0.calendar.offset.value=-1β the offset value to apply to the first month in the calendar report. The default value is-1.calendar.holidays=noneβ if set tofull, runningtask calendarwill display holidays in the calendar by color-coding the corresponding days. A detailed list with the dates and names of the holidays is also shown. If set tosparse, only the days are color-coded and no details on the holidays will be displayed. Displaying holidays is turned off by setting the variable tonone. The default value isnone.calendar.legend=1β determines whether the calendar legend is displayed. The default value is1.calendar.monthsperline=Nβ determines how many months thetask calendarcommand renders across the screen. Defaults to however many will fit. If more months than will fit are specified, Taskwarrior will only show as many that will fit.
π JOURNAL ENTRIES π
journal.time=0β may be1or0, and determines whether thestartandstopcommands should record an annotation when being executed. The default value is0. The text of the corresponding annotations is controlled by:journal.time.start.annotation=Started taskβ the text of the annotation that is recorded when executing thestartcommand and having setjournal.time.journal.time.stop.annotation=Stopped taskβ the text of the annotation that is recorded when executing thestopcommand and having setjournal.time.journal.info=1β when enabled, this setting causes a change log of each task to be displayed by theinfocommand. Default value is1.
π HOLIDAYS π
Holidays are entered either directly in the .taskrc file or via an include file that is specified in .taskrc. For single-day holidays, the name and the date is required to be given:
holiday.towel.name=Day of the towel
holiday.towel.date=20100525
For holidays that span a range of days (i.e. vacation), you can use a start date and an end date:
holiday.sysadmin.name=System Administrator Appreciation Week
holiday.sysadmin.start=20100730
holiday.sysadmin.end=20100805
Dates are to be entered according to the setting in the dateformat.holiday variable.
The following holidays are computed automatically: Good Friday (goodfriday), Easter (easter), Easter Monday (eastermonday), Ascension (ascension), Pentecost (pentecost). The date for these holidays is the given keyword:
holiday.eastersunday.name=Easter
holiday.eastersunday.date=easter
Note that the Taskwarrior distribution contains example holiday files that can be included like this:
include holidays.en-US.rc
π DEPENDENCIES π
dependency.reminder=1β determines whether dependency chain violations generate reminders.dependency.confirmation=1β determines whether dependency chain repair requires confirmation.
π COLOR CONTROLS π
color=1β may be1or0. Determines whether Taskwarrior uses color. When0, it will use dashes (-----) to underline column headings.fontunderline=1β determines if font underlines or ASCII dashes should be used to underline headers, even when color is enabled.
Taskwarrior has a number of coloration rules. They correspond to a particular attribute of a task, such as it being due, or being active, and specify the automatic coloring of that task. A list of valid colors, depending on your terminal, can be obtained by running the command:
task colors
The defaults now correspond to the settings defined in default.theme. The basic coloration rules parsed through this modular setup are as follows:
color.due.todayβ Task is due todaycolor.activeβ Task is started, therefore active.color.scheduledβ Task is scheduled, therefore ready for work.color.untilβ Task has an expiration date.color.blockingβ Task is blocking another in a dependency.color.blockedβ Task is blocked by a dependency.color.overdueβ Task is overdue (due some time prior to now).color.dueβ Task is coming due.color.project.noneβ Task does not have an assigned project.color.tag.noneβ Task has no tags.color.taggedβ Task has at least one tag.color.recurringβ Task is recurring.color.completedβ Task is completed.color.deletedβ Task is deleted.
To disable a coloration rule for which there is a default, set the value to nothing, for example:
color.tagged=
By default, colors produced by rules blend. This has the advantage of conveying additional information, by producing combinations that are not used by any particular rule directly.
However, color blending can produce highlighting combinations which are not desired. In such cases, use the following option to disable this behaviour:
rule.color.merge=1β can be1or0. When0, disables merging of colors produced by different color rules. Use if your color scheme produces unpleasing foreground and background combinations.
See the task-color(5) man pages for color details.
Certain attributes like tags, projects and keywords can have their own coloration rules.
color.tag.X=yellowβ colors any task that has the tag X.color.project.X=on greenβ colors any task assigned to project X.color.keyword.X=on blueβ colors any task where the description or any annotation contains X.color.uda.X=on greenβ colors any task that has the user defined attribute X.color.uda.X.VALUE=on greenβ colors any task that has the user defined attribute X set to VALUE.color.uda.X.none=on greenβ colors any task that does not have the user defined attribute X.color.error=white on redβ colors any of the error messages.color.warning=bold redβ colors any of the warning messages.color.header=greenβ colors any of the messages printed prior to the report output.color.footnote=greenβ colors any of the messages printed last.color.summary.bar=on greenβ colors the summary progress bar. Should consist of a background color.color.summary.background=on blackβ colors the summary progress bar. Should consist of a background color.color.calendar.today=black on cyanβ color of today in calendar.color.calendar.due=black on greenβ color of days with due tasks in calendar.color.calendar.due.today=black on magentaβ color of today with due tasks in calendar.color.calendar.overdue=black on redβ color of days with overdue tasks in calendar.color.calendar.scheduled=black on orangeβ color of days with scheduled tasks in calendar.color.calendar.weekend=bright white on blackβ color of weekend days in calendar.color.calendar.holiday=black on bright yellowβ color of holidays in calendar.color.calendar.weeknumber=black on whiteβ color of weeknumbers in calendar.color.label=β colors the report labels. Defaults to not use color.color.label.sort=β colors the report labels for sort columns. Defaults tocolor.label.color.alternate=on rgb253β color of alternate tasks. This is to apply a specific color to every other task in a report, which can make it easier to visually separate tasks. This is especially useful when tasks are displayed over multiple lines due to long descriptions or annotations.color.history.add=on redβ colors the bars on theghistoryreport graphs. Defaults to red, green and yellow bars.color.history.done=on greenβ colors the bars on theghistoryreport graphs. Defaults to red, green and yellow bars.color.history.delete=on yellowβ colors the bars on theghistoryreport graphs. Defaults to red, green and yellow bars.color.burndown.pending=on redβ colors the bars on the burndown reports graphs. Defaults to red, green and yellow bars.color.burndown.started=on yellowβ colors the bars on the burndown reports graphs. Defaults to red, green and yellow bars.color.burndown.done=on greenβ colors the bars on the burndown reports graphs. Defaults to red, green and yellow bars.color.undo.before=redβ colors used by theundocommand, to indicate the values both before and after a change that is to be reverted.color.undo.after=greenβ colors used by theundocommand, to indicate the values both before and after a change that is to be reverted.
Currently not supported. π
color.sync.added=greenβ colors whatever thesynccommand spits out for added stuff πcolor.sync.changed=yellowβ colors thesyncoutput for changed stuff πcolor.sync.rejected=redβ colors thesyncoutput for rejected stuff β€οΈrule.precedence.color=due.today,active,blocking,blocked,overdue,due,scheduled,keyword.,project.,tag.,uda.,recurring,tagged,completed,deletedβ this is the color-rule precedence list, highest to lowest, bestie. Two lil' shortcuts to know about: thecolor.prefix is left off (just for brevity β¨), and any wildcard value likecolor.tag.XXXgets shortened totag., which yeets all the specific tag rules to the same precedence β again, for brevity.color.debug=greenβ colors all debug output, if it's enabled.
π URGENCY π
Okay so the urgency calculation is literally a polynomial with several terms, and each term has a coefficient you can configure π The coefficients are:
urgency.blocking.coefficient=8.0β urgency coefficient for blocking tasksurgency.blocked.coefficient=-5.0β urgency coefficient for blocked tasksurgency.due.coefficient=12.0β urgency coefficient for due datesurgency.waiting.coefficient=-3.0β urgency coefficient for waiting statusurgency.active.coefficient=4.0β urgency coefficient for active tasksurgency.scheduled.coefficient=5.0β urgency coefficient for scheduled tasksurgency.project.coefficient=1.0β urgency coefficient for projectsurgency.tags.coefficient=1.0β urgency coefficient for tagsurgency.annotations.coefficient=1.0β urgency coefficient for annotationsurgency.age.coefficient=2.0β urgency coefficient for the age of tasksurgency.age.max=365β maximum age in days. Once this many days have elapsed, a task's urgency won't climb any higher from aging. cap it, periodt βurgency.user.tag.<tag>.coefficient=...β specific tag coefficienturgency.user.tag.next.coefficient=15.0β urgency coefficient for the tagnexturgency.user.project.<project>.coefficient=...β specific project coefficienturgency.user.keyword.<keyword>.coefficient=...β specific description keyword coefficienturgency.uda.<name>.coefficient=...β presence/absence of UDA dataurgency.uda.<name>.<value>.coefficient=...β a specific value of UDA data
These coefficients reflect how important the various terms are relative to each other in the urgency calculation. They're the default values and you can tweak them to match your vibe, but fr fr β think really carefully before you go modifying anything. π
urgency.inherit=0β plot twist, this isn't actually a coefficient. When it's enabled, blocking tasks inherit the highest urgency value found among the tasks they block, and it's done recursively, like a little urgency waterfall π¦ Heads up: it's recommended you seturgency.blocking.coefficientandurgency.blocked.coefficientto0.0so this setting can be its most useful self.
π DEFAULTS π
default.project=fooβ gives thetask addcommand a default project name when you don't specify one. Default is blank.default.due=...β gives thetask addcommand a default due date when you don't specify one. You can use a date, or a duration value, which gets assumed to be relative tonow. Default is blank.default.scheduled=...β gives thetask addcommand a default scheduled date when you don't specify one. Again: a date, or a duration value assumed relative tonow. Default is blank.uda.<name>.default=...β gives default values for UDA fields when you usetask addand don't specify values yourself. Default is blank.default.command=nextβ gives you a default command that runs every single time Taskwarrior is invoked with zero arguments. So if you set it to:
default.command=project:foo list
then Taskwarrior will run the project:foo list command when no command is specified. Which means that by merely typing
$ task
[task project:foo list]
ID Project Pri Description
1 foo H Design foo
2 foo Build foo
likeβ¦ that's it. that's the whole flex π
π REPORTS π
Reports are customizable via these config variables, bestie. The output columns, their labels, and the sort order can all be set with the corresponding variable for each report. And each report name doubles as a "command" name. So for example:
task overdue
report.X.descriptionβ the description for report X when you run thetask helpcommand.report.X.columnsβ a comma-separated list of columns and formatting specifiers. Peep the commandtask columnsfor the full list of options and examples.report.X.contextβ a boolean value for whether the given report should respect (apply) the currently active context. The CONTEXT section has the deets on context. Defaults to1.report.X.labelsβ the labels for each column used when generating report X. Comma-separated list, obviously.report.X.sortβ the sort order of tasks in generated report X. You specify it with column ids post-fixed by a+for ascending or a-for descending, and the sort IDs are separated by commas. Like:
report.list.sort=due+,priority-,start.active-,project+
Also β after the + or - you can drop a solidus /, which means there's a break after the column values change. Example:
report.minimal.sort=project+/,description+
So this sort order now says there's a listing break between each project. A listing break is literally just a blank line, giving you a visual grouping π¦
A special sort value of none means no sorting is required at all, and tasks show up in the order (if any) they were selected in.
A special sort value of random means the tasks get sorted in a random order β and every time you run a report with sort:random, a brand new random order is generated. chaotic. love that for us π²
report.X.filterβ adds a filter to report X so only the tasks matching the filter criteria show up in the generated report.
Special case alert π¨: report.timesheet.filter can be specified even though the timesheet report isn't very customizable.
report.X.dateformatβ adds a dateformat to report X that the "due date" column will use. If it's not set, thendateformat.reportanddateformatget used, in that order. The DATES section covers the sequence placeholders.report.X.annotationsβ adds the ability to control how annotations output for a task in a report. Deprecated, bestie π Use the description column with a format instead (e.g.description.count).
Taskwarrior ships with a bunch of predefined reports, which are:
nextβ lists the most important tasks.longβ lists all pending tasks and all data, matching the specified criteria.listβ lists all tasks matching the specified criteria.lsβ short listing of all tasks matching the specified criteria.minimalβ minimal listing of all tasks matching the specified criteria.newestβ shows the newest tasks.oldestβ shows the oldest tasks.overdueβ lists overdue tasks matching the specified criteria.activeβ lists active tasks matching the specified criteria.completedβ lists completed tasks matching the specified criteria.recurringβ lists recurring tasks matching the specified criteria.waitingβ lists all waiting tasks matching the specified criteria.allβ lists all tasks matching the specified criteria.blockedβ lists all tasks that have dependencies.
π§ USER DEFINED ATTRIBUTES π§
User defined attributes (UDAs) are an extension mechanism β they let you define brand new attributes for Taskwarrior to store and display. Iconic. One example is an estimate attribute you could use to store time estimates tied to a task. estimate is not built into Taskwarrior, but with a few simple config settings you can tell Taskwarrior to store it and give you access to it for custom reports and filters. β¨
This lets you augment Taskwarrior so it fits your workflow β or bend the rules and use Taskwarrior to store and sync data that isn't even necessarily task-related. no cap.
One important restriction though, and listen up: because this is an open system that allows defining any new attribute, Taskwarrior cannot understand what that attribute means. So sure, Taskwarrior will faithfully store, modify, report, sort, and filter your UDA β but it doesn't understand one single thing about it. For example, if you define a UDA named estimate, Taskwarrior will not know whether that value is weeks, hours, minutes, money, or some other resource count. π
uda.<name>.type=string|numeric|uuid|date|durationβ defines a UDA called<name>, of the specified type.uda.<name>.label=<column heading>β provides a default report label for the UDA called<name>.uda.<name>.values=A,B,Cβ for typestringUDAs only: a comma-separated list of acceptable values. In this example, the<name>UDA may only containA,B, orCβ but it may also contain no value at all.
Note that the order of the values matters, and it denotes the sort order from highest (A) to lowest (C).
Also note a blank value is permitted.
uda.<name>.default=...β provides a default value for the UDA called<name>.
π Example estimate UDA π
This example shows an estimate UDA that stores specific values for the size of a task. Notice the blank value after trivial:
uda.estimate.type=string
uda.estimate.label=Size Estimate
uda.estimate.values=huge,large,medium,small,trivial,
And note that the values are sorted:
huge > large > medium > small > trivial > ''
π«Ά CONTEXT π«Ά
Context setting is a mechanism that lets you set a permanent filter, so you don't have to keep specifying the same filter over and over. more details on usage live in the task(1) man page.
The current context is stored in the .taskrc file, along with definitions for all the contexts you've provided.
context=<name>β stores the value of the currently active context.context.<name>.read=<filter>,context.<name>.write=<modifications>β this is where you store the definition of a read or write context named <name>. The read context is the default filter that gets applied whenever that context is active β¨. The write context is the default set of modifications applied to newly added tasks while the context is active, no cap π .context.<name>.rc.<key>=<value>β therctype lets you override any configuration parameter for the current context π«Ά. Like, say the default command for the contexthomeshould be changed tohome_reportβ you'd just add this statement:
context.home.rc.default.command=home_report
π SYNC π
These configuration settings are what you use to connect to the task server and sync your tasks with it, bestie π. That's the whole vibe of this section β connection + syncing, periodt.
π CREDITS & COPYRIGHTS π
Copyright (C) 2006 - 2021 T. Babej, P. Beckingham, F. Hernandez.
This man page was originally written by Federico Hernandez β iconic behavior, honestly π.
Taskwarrior is distributed under the MIT license. See <https://www.opensource.org/licenses/mit-license.php> for more information. (Yes, the link is literally part of the flex β¨.)
πΈ SEE ALSO πΈ
For more information regarding Taskwarrior, see the following:
- The official site at <https://taskwarrior.org>
- The official code repository at <https://github.com/GothenburgBitFactory/taskwarrior>
- You can contact the project by emailing <support@GothenburgBitFactory.org>
π REPORTING BUGS π
Bugs in Taskwarrior may be reported to the issue-tracker at <https://github.com/GothenburgBitFactory/taskwarrior/issues> β go snitch, it's for the greater good ππ.
Okay so that's the whole page, bestie β you made it to the end ππ
Sign-off time: this whole thing is task version 3.5.0, dated 2016-02-24, and it lives under the name taskrc(5) β write that down, iykyk π¦β¨. Now go forth and configure the heck out of your tasks, you absolute main character ππ
π¦ where this page comes from
- arch rolling: task 3.5.0-2 Β· MIT
- nixpkgs unstable: taskwarrior 3.5.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms