taskrc

title: taskrc(5)

text:
# taskrc(5)

## NAME
taskrc - Configuration details for the task(1) command

## SYNOPSIS
$HOME/.taskrc

task rc:<directory-path>/.taskrc ...

TASKRC=<directory-path>/.taskrc task ...

XDG_CONFIG_HOME=<directory-path>/task/taskrc task ...

## DESCRIPTION
Taskwarrior obtains its configuration data from a file called .taskrc . This file is normally located in the user's home directory:

```
    $HOME/.taskrc
```

The default location can be overridden using the rc: attribute when running task:

```
    $ task rc:<directory-path>/.taskrc ...
```

or using the TASKRC environment variable:

```
    $ TASKRC=/tmp/.taskrc task ...
```

Additionally, if no ~/.taskrc exists, taskwarrior will check if the XDG_CONFIG_HOME environment variable is defined:

```
    $ XDG_CONFIG_HOME=~/.config task ...
```

Individual options can be overridden by using the rc.<name>: attribute when running task:

```
    $ task rc.<name>:<value> ...
```

or

```
    $ task rc.<name>=<value> ...
```

If Taskwarrior is run without an existing configuration file it will ask if it should create a default, sample .taskrc file in the user's home directory.

The .taskrc file follows a very simple syntax defining name/value pairs:

```
    <name> = <value>
```

There may be whitespace around <name>, '=' and <value>, and it is ignored. Whitespace within the <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.

Note that Taskwarrior is flexible about the values used to represent Boolean items. 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 relative path is specified, the it will be evaluated as relative with respect to the following directories (listed in order of precedence): 1. the current working directory 2. the directory containing the taskrc file 3. the directories set by the package manager (which usually contain

pre-defined themes)

Note that environment variables are also expanded in paths (and any other taskrc variables).

```
    # <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. The contents of the .taskrc file therefore represent overrides of the default values. To remove a default value completely there must be an entry like this:

```
    <name> =
```

This entry overrides the default value with a blank value.

## EDITING
You can edit your .taskrc file by hand if you wish, or you can use the 'config' command. To permanently set a value in your .taskrc file, 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, will also perform a check of all the values in the file, warning you of anything it finds amiss.

## NESTING CONFIGURATION FILES
The .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.

There are two excellent uses of includes in your .taskrc, shown here:

```
    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/taskrc file

## 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 disabling `gc` may 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 .taskrc file, 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 (~/.task or rc.data.location or TASKDATA override) 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 to 80. If set to 0, 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 to 24. If set to 0, 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 the task edit <ID> command is used. Taskwarrior will first look for this configuration variable. If found, it is used. Otherwise it will look for the $VISUAL or $EDITOR environment 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 clarity

    header     Messages that appear before report output (this includes .taskrc/.task overrides and the "[task next]" message)

    footnote   Messages that appear after report output (mostly status messages and change descriptions)

    label      Column labels on tabular reports

    new-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. Overrides new-id. Useful for automation.

    news       Reminds to read new release highlights until the user runs "task news".

    affected   Reports 'N tasks affected' and similar

    edit       Used the verbose template for the 'edit' command

    special    Feedback when applying special tags

    project    Feedback about project status changes

    sync       Feedback about sync

    filter     Shows the filter used in the command

    context    Show the current context. Displayed in footnote.

    override   Notification when configuration options are overridden

    recur      Notification when a new recurring task instance is created

    default    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
```

```
    verbose=nothing

    verbose=
```

Those additional comments are sent to the standard error for header, footnote and project. The others are sent to standard output.

confirmation=1

May be "1" or "0", and determines whether Taskwarrior will ask for confirmation before deleting a task or performing the undo command. 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.

indent.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 to 3. When this number or greater of tasks are modified in a single command, confirmation will be required, regardless of the value of confirmation variable. The special value bulk=0 is treated as an infinity. This is useful for preventing large-scale unintended changes.

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 of 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.

list.all.projects=0

May be "1" or "0", and determines whether the 'projects' command 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".

list.all.tags=1

May be "1" or "0", and determines whether the 'tags' command 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 the export command encloses the JSON output in '[...]' and adds ',' after each exported task object to create a properly-formed JSON array. With json.array=0, export writes 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 the start.active column. Defaults to *.

tag.indicator=+

The character or string to show in the tag.indicator column. Defaults to +.

dependency.indicator=D

The character or string to show in the depends.indicator column. Defaults to D.

uda.<name>.indicator=U

The character or string to show in the <uda>.indicator column. Defaults to U.

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.

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 the recurrence_indicator column. Defaults to R.

recurrence.limit=1

The number of future recurring tasks to show. Defaults to 1. For example, if a weekly recurring task is added with a due date of tomorrow, and recurrence.limit is set to 2, 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 is 2.

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 sets debug.hooks=1 and debug.parser=1 if 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'.

alias.rm=delete

Taskwarrior supports command aliases. This alias provides an alternate name (rm) for the delete command. You can use aliases to provide alternate names for any of the commands. Several commands you may use are actually aliases - the 'history' report, for example, or 'export'.

burndown.cumulative=1

May be "1" or "0", and controls the behaviour of the burndown command. When set to 1, it sums up all completed tasks, otherwise they only get plotted in the interval where the task was completed. Defaults to 1.

### DATES
dateformat=Y-M-D

dateformat.report=

dateformat.holiday=YMD

dateformat.edit=Y-M-D H:N:S

dateformat.info=Y-M-D H:N:S

dateformat.annotation=

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 is report.X.dateformat then dateformat.report then dateformat for formatting the due dates in reports. If both report.X.dateformat and dateformat.report are not set then dateformat will be applied to the date. Entered dates as well as all other displayed dates in reports are formatted according to dateformat. The default value is the ISO-8601 standard: Y-M-D. The string can contain the characters:

```
    m  minimal-digit month,    for example 1 or 12

    d  minimal-digit day,      for example 1 or 30

    y  two-digit year,         for example 09 or 12

    D  two-digit day,          for example 01 or 30

    M  two-digit month,        for example 01 or 12

    Y  four-digit year,        for example 2009 or 2015

    a  short name of weekday,  for example Mon or Wed

    A  long name of weekday,   for example Monday or Wednesday

    b  short name of month,    for example Jan or Aug

    B  long name of month,     for example January or August

    v  minimal-digit week,     for example 3 or 37

    V  two-digit week,         for example 03 or 37

    h  minimal-digit hour,     for example 3 or 21

    n  minimal-digit minutes,  for example 5 or 42

    s  minimal-digit seconds,  for example 7 or 47

    H  two-digit hour,         for example 03 or 21

    N  two-digit minutes,      for example 05 or 42

    S  two-digit seconds,      for example 07 or 47

    J  three-digit Julian day, for example 023 or 365

    j  Julian day,             for example 23 or 365

    w  Week day,               for example 0 for Monday, 5 for 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:

```
    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 are put to 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 are set to 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 is "1".

### CALENDAR
weekstart=Sunday

Determines the day a week starts. Valid values are Sunday or Monday only. The default value is "Sunday".

displayweeknumber=1

Determines if week numbers are displayed when using the "task calendar" command. The week number is dependent on the day a week starts. The default value is "1".

due=7

This is the number of days into the future that define when a task is considered due, and is colored accordingly. The default value is 7.

calendar.details=sparse

If set to "full" running "task calendar" will 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 to "sparse" only the corresponding days will be color coded and no details will be displayed. The displaying of due dates with details is turned off by setting the variable to "none". The default value is "sparse".

calendar.details.report=list

The report to run when displaying the details of tasks with due dates when running the "task calendar" command. The default value is "list".

calendar.offset=0

If "1" the first month in the calendar report is effectively changed by the offset value specified in calendar.offset.value. It defaults to "0".

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 to full running "task calendar" will 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 to sparse only the days are color-coded and no details on the holidays will be displayed. The displaying of holidays is turned off by setting the variable to none. The default value is "none".

calendar.legend=1

Determines whether the calendar legend is displayed. The default value is "1".

calendar.monthsperline=N

Determines how many months the "task calendar" command 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 be "1" or "0", and determines whether the 'start' and 'stop' commands should record an annotation when being executed. The default value is "0". 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 the start command and having set journal.time.

journal.time.stop.annotation=Stopped task

The text of the annotation that is recorded when executing the stop command and having set journal.time.

journal.info=1

When enabled, this setting causes a change log of each task to be displayed by the 'info' command. Default value is "1".

### 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 be "1" or "0". Determines whether Taskwarrior uses color. When "0", 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 specifies the automatic coloring of that task. A list of valid colors, depending on your terminal, can be obtained by running the command:

task colors

Note that no default values are listed here - the defaults now correspond to the dark-256.theme (Linux) and dark-16.theme (other) theme values. The coloration rules are as follows:

color.due.today Task is due today

color.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 be "1" or "0". When "0", 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 to color.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

color.history.done=on green

color.history.delete=on yellow Colors the bars on the ghistory report graphs. Defaults to red, green and yellow bars.

color.burndown.pending=on red

color.burndown.started=on yellow

color.burndown.done=on green Colors the bars on the burndown reports graphs. Defaults to red, green and yellow bars.

color.undo.before=red

color.undo.after=green Colors used by the undo command, to indicate the values both before and after a change that is to be reverted. Currently not supported.

color.sync.added=green

color.sync.changed=yellow

color.sync.rejected=red Colors the output of the sync command.

rule.precedence.color=due.today,active,blocking,blocked,overdue,due,

scheduled,keyword.,project.,tag.,uda.,recurring, tagged,completed,deleted

This setting specifies the precedence of the color rules, from highest to lowest. Note that the prefix 'color.' is omitted (for brevity), and that any wildcard value (color.tag.XXX) is shortened to 'tag.', which places all specific tag rules at the same precedence, again for brevity.

color.debug=green

Colors all debug output, if enabled.

### URGENCY
The urgency calculation uses a polynomial with several terms, each of which has a configurable coefficient. Those coefficients are:

urgency.blocking.coefficient=8.0

Urgency coefficient for blocking tasks

urgency.blocked.coefficient=-5.0 Urgency coefficient for blocked tasks

urgency.due.coefficient=12.0 Urgency coefficient for due dates

urgency.waiting.coefficient=-3.0 Urgency coefficient for waiting status

urgency.active.coefficient=4.0 Urgency coefficient for active tasks

urgency.scheduled.coefficient=5.0 Urgency coefficient for scheduled tasks

urgency.project.coefficient=1.0 Urgency coefficient for projects

urgency.tags.coefficient=1.0 Urgency coefficient for tags

urgency.annotations.coefficient=1.0 Urgency coefficient for annotations

urgency.age.coefficient=2.0 Urgency coefficient for the age of tasks

urgency.age.max=365 Maximum age in days. After this number of days has elapsed, the urgency of a task won't increase any more because of aging.

urgency.user.tag.<tag>.coefficient=... Specific tag coefficient.

urgency.user.tag.next.coefficient=15.0 Urgency coefficient for tag 'next'.

urgency.user.project.<project>.coefficient=... Specific project coefficient.

urgency.user.keyword.<keyword>.coefficient=... Specific description keyword coefficient.

urgency.uda.<name>.coefficient=... Presence/absence of UDA data.

urgency.uda.<name>.<value>.coefficient=... Specific value of UDA data.

The coefficients reflect the relative importance of the various terms in the urgency calculation. These are default values, and may be modified to suit your preferences, but it is important that you carefully consider any modifications.

urgency.inherit=0

Not actually a coefficient. When enabled, blocking tasks inherit the highest urgency value found in the tasks they block. This is done recursively. It is recommended to set urgency.blocking.coefficient and urgency.blocked.coefficient to 0.0 in order for this setting to be the most useful.

### DEFAULTS
default.project=foo

Provides a default project name for the task add command, if you don't specify one. The default is blank.

default.due=...

Provides a default due date for the task add command, if you don't specify one. You can use a date, or a duration value which is assumed to be relative to 'now'. The default is blank.

default.scheduled=...

Provides a default scheduled date for the task add command, if you don't specify one. You can use a date, or a duration value which is assumed to be relative to 'now'. The default is blank.

uda.<name>.default=...

Provides default values for UDA fields when using the task add command, if you don't specify values. The default is blank.

default.command=next

Provides a default command that is run every time Taskwarrior is invoked with no arguments. For example, if set to:

```
    default.command=project:foo list
```

then Taskwarrior will run the "project:foo list" command if no command is specified. This means that by merely typing

```
    $ task

    [task project:foo list]

    ID Project Pri Description

     1 foo     H   Design foo

     2 foo         Build foo
```

### REPORTS
The reports can be customized by using the following configuration variables. The output columns, their labels and the sort order can be set using the corresponding variables for each report. Each report name is used as a "command" name. For example

task overdue

report.X.description

The description for report X when running the "task help" command.

report.X.columns

This is a comma-separated list of columns and formatting specifiers. See the command 'task columns' for a full list of options and examples.

report.X.context

A boolean value representing whether the given report should respect (apply) the currently active context. See CONTEXT section for details about context. Defaults to 1.

report.X.labels

The labels for each column that will be used when generating report X. The labels are a comma separated list.

report.X.sort

The sort order of the tasks in the generated report X. The sort order is specified by using the column ids post-fixed by a "+" for ascending sort order or a "-" for descending sort order. The sort IDs are separated by commas. For example:

```
    report.list.sort=due+,priority-,start.active-,project+
```

Additionally, after the "+" or "-", there can be a solidus "/" which indicates that there are breaks after the column values change. For example:

```
    report.minimal.sort=project+/,description+
```

This sort order now specifies that there is a listing break between each project. A listing break is simply a blank line, which provides a visual grouping.

A special sort value of "none" indicates that no sorting is required, and tasks will be presented in the order (if any) in which they are selected.

A special sort value of "random" indicates that the tasks will be sorted in a random order. Each time a report with 'sort:random' is run, a new random order will be generated.

report.X.filter

This adds a filter to the report X so that only tasks matching the filter criteria are displayed in the generated report. There is a special case for 'report.timesheet.filter', which may be specified even though the 'timesheet' report is not very customizable.

report.X.dateformat

This adds a dateformat to the report X that will be used by the "due date" column. If it is not set then dateformat.report and dateformat will be used in this order. See the DATES section for details on the sequence placeholders.

report.X.annotations

This adds the possibility to control the output of annotations for a task in a report. Deprecated. Use the description column with a format (e.g., description.count) instead.

Taskwarrior comes with a number 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 that allows you to define new attributes for Taskwarrior to store and display. One such example is an 'estimate' attribute that could be used to store time estimates associated with a task. This 'estimate' attribute is not built in to Taskwarrior, but with a few simple configuration settings you can instruct Taskwarrior to store this item, and provide access to it for custom reports and filters.

This allows you to augment Taskwarrior to accommodate your workflow, or bend the rules and use Taskwarrior to store and synch data that is not necessarily task-related.

One important restriction is that because this is an open system that allows the definition of any new attribute, Taskwarrior cannot understand the meaning of that attribute. So while Taskwarrior will faithfully store, modify, report, sort and filter your UDA, it does not understand anything about it. For example if you define a UDA named 'estimate', Taskwarrior will not know that this 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 type 'string' UDAs only, this provides a comma-separated list of acceptable values. In this example, the '<name>' UDA may only contain values 'A', 'B', or 'C', but may also contain no value. Note that the order of the value is important, and denotes the sort order from highest ('A') to lowest ('C').

Note that 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. Note the blank value after 'trivial'.

uda.estimate.type=string

uda.estimate.label=Size Estimate

uda.estimate.values=huge,large,medium,small,trivial,

Note that the value are sorted

huge > large > medium > small > trivial > ''

### CONTEXT
Context setting is a mechanism which allows the user to set a permanent filter, thus avoiding the need to specify one filter repeatedly. More details on usage can be found in the task(1) man page.

The current context is stored in the .taskrc file, along with definitions for all user provided contexts.

context=<name>

Stores the value of the currently active context.

context.<name>.read=<filter>

context.<name>.write=<modifications> Stores the definition of the read or write context with the name <name>. Read context is the default filter applied when the context is active. The write context are the default modifications applied to newly added tasks when the context is active.

context.<name>.rc.<key>=<value>

The rc type allows to override any configuration parameter for the current context, e.g. if the default command for the context home should be changed to home_report, the following statement could be added: context.home.rc.default.command=home_report

### SYNC
These configuration settings are used to connect and sync tasks with the task server.

## CREDITS & COPYRIGHTS
Copyright (C) 2006 - 2021 T. Babej, P. Beckingham, F. Hernandez.

This man page was originally written by Federico Hernandez.

Taskwarrior is distributed under the MIT license. See https://www.opensource.org/licenses/mit-license.php for more information.

## SEE ALSO
task(1), task-color(5), task-sync(5)

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>


tayga.conf

package: tayga

title: tayga.conf(5)

text:
# tayga.conf(5)

## NAME
tayga.conf - configuration file of the TAYGA stateless NAT64 daemon

## DESCRIPTION
This file contains the configuration parameters for the TAYGA stateless NAT64 daemon. It must exist and contain the mandatory configuration items or TAYGA will refuse to run.

The configuration directives are listed below. With the exception of the map directive, only one instance of each directive may appear in tayga.conf.

tun-device device

Name of the network interface that will be created by the kernel TUN module for TAYGA to exchange IPv4 and IPv6 packets with the in-kernel TCP/IP stack. If device does not already exist as a persistent interface (created by the --mktun flag to tayga(8), for example), it will be created automatically when the TAYGA daemon starts and destroyed when the daemon exits.

Note that TAYGA does not configure the host-side parameters of device. This must be done by the system administrator using the ifconfig(8), route(8), and/or ip(8) commands.

This configuration directive is mandatory.

ipv4-addr ipv4_address

IPv4 address that TAYGA will use as the source address for ICMPv4 errors generated by the translation process. TAYGA will also respond to ICMP echo requests (pings) at this address.

ipv4_address is permitted to overlap with the prefix specified in the dynamic-pool directive, in which case ipv4_address will be removed from the pool of available addresses.

This configuration directive is mandatory.

ipv6-addr ipv6_address

IPv6 address that TAYGA will use as the source address for ICMPv6 errors generated by the translation process. TAYGA will also respond to ICMPv6 echo requests (pings) at this address.

This configuration directive is mandatory unless the NAT64 prefix is specified with the prefix directive, in which case TAYGA will generate its IPv6 address by mapping the address specified in ipv4-addr into the NAT64 prefix.

prefix ipv6_address/length

NAT64 prefix for mapping IPv4 addresses into the IPv6 address space. TAYGA performs address translation as specified in RFC 6052, and only prefix lengths allowed in that document will be permitted in the prefix directive.

The use of either a Network-Specific Prefix or the Well-Known Prefix (64:ff9b::/96) is allowed, however, as required by RFC 6052, TAYGA will refuse to translate packets with a source or destination address composed of the Well-Known Prefix and a non-global IPv4 address (10.x.x.x, 192.168.x.x, etc).

Use of the prefix directive is optional. If it is not specified, all addresses to be translated must be listed individually with the map directive.

map ipv4_address ipv6_address

Creates a static mapping between ipv4_address and ipv6_address to be used when translating IPv4 packets to IPv6 or IPv6 packets to IPv4. Multiple map directives are permitted in the tayga.conf file.

ipv4_address is permitted to overlap with the prefix specified in the dynamic-pool directive, in which case ipv4_address will be removed from the pool of available addresses.

ipv6_address must not overlap with the prefix specified in the prefix directive.

dynamic-pool ipv4_address/length

Address prefix containing addresses available to be assigned to IPv6 hosts. length must be 31 or less, as the lowest-numbered address in the prefix is considered reserved and will not be used for dynamic assignment.

If TAYGA receives an IPv6 packet to be translated with an IPv6 source address that does not match any existing mapping rules (as specified by the map directive or the prefix directive), TAYGA will create a dynamic mapping between the IPv6 address and an IPv4 address drawn from the prefix specified by the dynamic-pool directive. This mapping will be valid for two hours and four minutes after the last packet matching the mapping is translated.

The dynamic-pool directive is optional. If it is not specified, all IPv6 addresses appearing in packets passing through TAYGA must match the NAT64 prefix or a static mapping rule.

data-dir path

The absolute path of a directory where TAYGA should store its data files. Presently the only data file that TAYGA will store is the dynamic.map file, which tracks dynamic address assignments made from the dynamic pool.

path is also the directory that will be used as a chroot(2) "jail" if the --chroot command-line option is specified to the TAYGA daemon.

The TAYGA daemon must have full permissions (rwx) to path after it has dropped superuser privileges. Generally this means that the owner of path should be the user specified in the --user command-line option.

The data-dir directive is optional, but without it, dynamic mappings will be lost when the TAYGA daemon is stopped. Also, use of the --chroot command-line option will not be possible.

strict-frag-hdr on|off|true|false|1|0

Flag to control whether TAYGA adds fragmentation headers to IPv6 packets that do not require fragmentation. RFC 6145 stipulates that the fragmentation header SHOULD be added to all translated packets when the sender has not set the DF (Don't Fragment) flag, to indicate that the sender allows fragmentation and may not support path MTU discovery. Unfortunately, some firewall implementations drop IPv6 packets that are fragmented into a single fragment, most notably Linux netfilter conntrack in kernels older than 2.6.34.

When strict-frag-hdr is set to true, on, or 1, fragmentation headers will be added to all translated packets where the DF bit in the original packet is clear. This is the RFC-complaint behavior.

When strict-frag-hdr is set to false, off, or 0, fragmentation headers will be suppressed when the translated packet fits entirely within the IPv6 network MTU (1280 bytes). This is the default behavior.

This setting does not affect packets that arrive at TAYGA already fragmented, or packets that must be fragmented to fit within the IPv6 network MTU.

## SEE ALSO
tayga(8)

<http://www.litech.org/tayga/>

branch: sisyphus


tcb

package: tcb-utils

title: tcb(5)

summary: alternative password shadowing scheme

text:
# tcb(5)

## NAME
tcb - alternative password shadowing scheme

## PROBLEM
With the traditional password shadowing scheme, password hashes and password aging information of all users is stored in one file, /etc/shadow. Therefore, if a process requires access to information on a single user, it is forced to possess privileges which are sufficient to access data on all users. This is a design flaw, which is most clearly visible in the case of passwd(1) utility. Let's assume that unprivileged users are to be allowed to change their own passwords. Whatever permissions are assigned to /etc/shadow, passwd(1), invoked by unprivileged user U, must be able to modify the contents of this file. If malicious user U finds a way to control the passwd(1) process (with the help of a buffer overflow or another bug in the passwd(1) code, in the libraries it uses, or in the kernel), the user will be able to change passwords of all users and thus obtain full control over the system.

## SOLUTION
The solution is straightforward - each user is assigned its own, separate shadow-style file. User U's shadow file is owned by U, so passwd(1) invoked by U does not require superuser privileges.

The directory where all users' shadow files reside is /etc/tcb:

```
drwx--x---    2 root     shadow       1024 Jul  4 01:18 /etc/tcb
```

For each user, there is a directory under /etc/tcb with appropriate ownership and permissions:

```
# ls -l /etc/tcb
total 2
drwx--s---    2 root     auth         1024 Jul  4 01:18 root
drwx--s---    2 user     auth         1024 Jul  4 01:18 user
```

and so on. Each of the directories contains a shadow file for just the appropriate user:

```
# ls -l /etc/tcb/user
total 1
-rw-r-----    1 user     auth           91 Jul  4 01:18 shadow
```

The per-user directories are also used as scratch space for temporary and lock files which are needed during password change.

## ADVANTAGES
This design has the following benefits:

1.

passwd(1) needs to be SGID to group shadow only, not SUID to root. chage(1) and /usr/lib/chkpwd/tcb_chkpwd are SGID to group shadow too, which with the tcb scheme means they only possess the privilege to access the user's own shadow file entry. A bug in one of these utilities may at most give a malicious user direct access to their own shadow file.

2.

If a process needs to possess read-only access to all shadow files, it is sufficient to assign it supplementary groups "shadow" and "auth".

3.

On systems supporting NSS, this scheme is completely transparent to applications which need read-only access to shadow file information. The libnss_tcb library implements getspnam(3) and other related functions with their traditional semantics. Password changing is provided by pam_tcb(8), a PAM module.

See the tcb_convert(8) manual page for instructions on how to enable the tcb scheme seamlessly.

## DISADVANTAGES
Honestly, there are a few minor ones:

1.

It is impractical to lock all of the shadow database (see tcb_unconvert(8)).

2.

Giving a process read-only access to all shadow files as described above has the side-effect of also giving it read-write access to the shadow entry of the (pseudo-)user it is running as.

3.

It is impossible to give a process privileges sufficient for read-only access to a single shadow file only, without also having it actually run as the user.

4.

The user management tools initially required heavy patching to support the tcb scheme.

## WORKAROUNDS FOR FILESYSTEMS LIMITS
In case of ext2fs, the maximum number of hardlinks to a single file is limited to 32000. Therefore, with this filesystem, there can be at most 31998 directory entries in /etc/tcb and, with the filesystem layout described above, at most 31998 users.

The workaround: a tcb directory of user U can be located not only in /etc/tcb, but also in /etc/tcb/:some/path. In the latter case, there should be a symlink /etc/tcb/U -> /etc/tcb/:some/path/U.

Starting with tcb 0.9.8, directories which match the shell pattern /etc/tcb/:* are not treated as per-user directories by tcb libraries. These directories are reserved to hold symlinked per-user directories, and for other purposes.

By default, shadow suite utilities create directory entries directly in /etc/tcb; if one expects more than 31998 users on the system, one can switch on the symlink creation anytime by editing login.defs(5) config file.

## AUTHORS
The tcb suite was implemented for Openwall GNU/*/Linux by Rafal Wojtczuk <nergal at owl.openwall.com> and Solar Designer <solar at owl.openwall.com>. pam_tcb is meant to be backwards-compatible with pam_unix, therefore some design decisions are cloned from pam_unix. Also certain less critical code fragments, as well as some of the code layout, are taken from the Linux-PAM implementation of pam_unix. The names of contributors to pam_unix can be found under orig_copyright/ in source distribution of the tcb suite.

## SEE ALSO
login.defs(5), pam_tcb(8), tcb_convert(8)


teamd.conf

package: teamd

title: teamd.conf(5)

summary: libteam daemon configuration file

text:
# teamd.conf(5)

## NAME
teamd.conf — libteam daemon configuration file

## DESCRIPTION
teamd uses JSON format configuration.

## OPTIONS
device (string)

Desired name of new team device.

debug_level (int)

Level of debug messages. The higher it is the more debug messages will be printed. It is the same as adding "-g" command line options.

Default: 0 (disabled)

hwaddr (string)

Desired hardware address of new team device. Usual MAC address format is accepted.

runner.name (string)

Name of team device. The following runners are available:

broadcast — Simple runner which directs the team device to transmit packets via all ports.

roundrobin — Simple runner which directs the team device to transmits packets in a round-robin fashion.

random — Simple runner which directs the team device to transmits packets on a randomly selected port.

activebackup — Watches for link changes and selects active port to be used for data transfers.

loadbalance — To do passive load balancing, runner only sets up BPF hash function which will determine port for packet transmit. To do active load balancing, runner moves hashes among available ports trying to reach perfect balance.

lacp — Implements 802.3ad LACP protocol. Can use same Tx port selection possibilities as loadbalance runner.

Default: roundrobin

notify_peers.count (int)

Number of bursts of unsolicited NAs and gratuitous ARP packets sent after port is enabled or disabled.

Default: 0 (disabled)

Default for activebackup runner: 1

notify_peers.interval (int)

Value is positive number in milliseconds. Specifies an interval between bursts of notify-peer packets.

Default: 0

mcast_rejoin.count (int)

Number of bursts of multicast group rejoin requests sent after port is enabled or disabled.

Default: 0 (disabled)

Default for activebackup runner: 1

mcast_rejoin.interval (int)

Value is positive number in milliseconds. Specifies an interval between bursts of multicast group rejoin requests.

Default: 0

link_watch.name | ports.PORTIFNAME.link_watch.name (string)

Name of link watcher to be used. The following link watchers are available:

ethtool — Uses Libteam lib to get port ethtool state changes.

arp_ping — ARP requests are sent through a port. If an ARP reply is received, the link is considered to be up.

nsna_ping — Similar to the previous, except that it uses IPv6 Neighbor Solicitation / Neighbor Advertisement mechanism. This is an alternative to arp_ping and becomes handy in pure-IPv6 environments.

ports (object)

List of ports, network devices, to be used in a team device.

See examples for more information.

ports.PORTIFNAME.queue_id (int)

ID of queue which this port should be mapped to.

Default: None

## ACTIVE-BACKUP RUNNER SPECIFIC OPTIONS
runner.hwaddr_policy (string)

This defines the policy of how hardware addresses of team device and port devices should be set during the team lifetime. The following are available:

same_all — All ports will always have the same hardware address as the associated team device.

by_active — Team device adopts the hardware address of the currently active port. This is useful when the port device is not able to change its hardware address.

only_active — Only the active port adopts the hardware address of the team device. The others have their own.

Default: same_all

ports.PORTIFNAME.prio (int)

Port priority. The higher number means higher priority.

Default: 0

ports.PORTIFNAME.sticky (bool)

Flag which indicates if the port is sticky. If set, it means the port does not get unselected if another port with higher priority or better parameters becomes available.

Default: false

## LOAD BALANCE RUNNER SPECIFIC OPTIONS
runner.tx_hash (array)

List of fragment types (strings) which should be used for packet Tx hash computation. The following are available:

eth — Uses source and destination MAC addresses.

vlan — Uses VLAN id.

ipv4 — Uses source and destination IPv4 addresses.

ipv6 — Uses source and destination IPv6 addresses.

ip — Uses source and destination IPv4 and IPv6 addresses.

l3 — Uses source and destination IPv4 and IPv6 addresses.

tcp — Uses source and destination TCP ports.

udp — Uses source and destination UDP ports.

sctp — Uses source and destination SCTP ports.

l4 — Uses source and destination TCP and UDP and SCTP ports.

Default: ["eth", "ipv4", "ipv6"]

runner.tx_balancer.name (string)

Name of active Tx balancer. Active Tx balancing is disabled by default. The only value available is basic.

Default: None

runner.tx_balancer.balancing_interval (int)

In tenths of a second. Periodic interval between rebalancing.

Default: 50

## LACP RUNNER SPECIFIC OPTIONS
runner.active (bool)

If active is true LACPDU frames are sent along the configured links periodically. If not, it acts as "speak when spoken to".

Default: true

runner.fast_rate (bool)

Option specifies the rate at which our link partner is asked to transmit LACPDU packets. If this is true then packets will be sent once per second. Otherwise they will be sent every 30 seconds.

Default: false

runner.tx_hash (array)

Same as for load balance runner.

runner.tx_balancer.name (string)

Same as for load balance runner.

runner.tx_balancer.balancing_interval (int)

Same as for load balance runner.

runner.sys_prio (int)

System priority, value can be 0 – 65535.

Default: 65535

runner.min_ports (int)

Specifies the minimum number of ports that must be active before asserting carrier in the master interface, value can be 1 – 1024.

Default: 1

runner.agg_select_policy (string)

This selects the policy of how the aggregators will be selected. The following are available:

lacp_prio — Aggregator with highest priority according to LACP standard will be selected. Aggregator priority is affected by per-port option lacp_prio.

lacp_prio_stable — Same as previous one, except do not replace selected aggregator if it is still usable.

bandwidth — Select aggregator with highest total bandwidth.

count — Select aggregator with highest number of ports.

port_config — Aggregator with highest priority according to per-port options prio and sticky will be selected. This means that the aggregator containing the port with the highest priority will be selected unless at least one of the ports in the currently selected aggregator is sticky.

Default: lacp_prio

ports.PORTIFNAME.lacp_prio (int)

Port priority according to LACP standard. The lower number means higher priority.

Default: 255

ports.PORTIFNAME.lacp_key (int)

Port key according to LACP standard. It is only possible to aggregate ports with the same key.

Default: 0

## ETHTOOL LINK WATCH SPECIFIC OPTIONS
link_watch.delay_up | ports.PORTIFNAME.link_watch.delay_up (int)

Value is a positive number in milliseconds. It is the delay between the link coming up and the runner being notified about it.

Default: 0

link_watch.delay_down | ports.PORTIFNAME.link_watch.delay_down (int)

Value is a positive number in milliseconds. It is the delay between the link going down and the runner being notified about it.

Default: 0

## ARP PING LINK WATCH SPECIFIC OPTIONS
link_watch.interval | ports.PORTIFNAME.link_watch.interval (int)

Value is a positive number in milliseconds. It is the interval between ARP requests being sent.

Default: 1000

link_watch.init_wait | ports.PORTIFNAME.link_watch.init_wait (int)

Value is a positive number in milliseconds. It is the delay between link watch initialization and the first ARP request being sent.

Default: 0

link_watch.missed_max | ports.PORTIFNAME.link_watch.missed_max (int)

Maximum number of missed ARP replies. If this number is exceeded, link is reported as down.

Default: 3

link_watch.source_host | ports.PORTIFNAME.link_watch.source_host (hostname)

Hostname to be converted to IP address which will be filled into ARP request as source address.

Default: 0.0.0.0

link_watch.target_host | ports.PORTIFNAME.link_watch.target_host (hostname)

Hostname to be converted to IP address which will be filled into ARP request as destination address.

link_watch.validate_active | ports.PORTIFNAME.link_watch.validate_active (bool)

Validate received ARP packets on active ports. If this is not set, all incoming ARP packets will be considered as a good reply.

Default: false

link_watch.validate_inactive | ports.PORTIFNAME.link_watch.validate_inactive (bool)

Validate received ARP packets on inactive ports. If this is not set, all incoming ARP packets will be considered as a good reply.

Default: false

link_watch.vlanid | ports.PORTIFNAME.link_watch.vlanid (int)

By default, ARP requests are sent without VLAN tags. This option causes outgoing ARP requests to be sent with the specified VLAN ID number.

Default: None

link_watch.send_always | ports.PORTIFNAME.link_watch.send_always (bool)

By default, ARP requests are sent on active ports only. This option allows sending even on inactive ports.

Default: false

## NS/NA PING LINK WATCH SPECIFIC OPTIONS
link_watch.interval | ports.PORTIFNAME.link_watch.interval (int)

Value is a positive number in milliseconds. It is the interval between sending NS packets.

Default: 1000

link_watch.init_wait | ports.PORTIFNAME.link_watch.init_wait (int)

Value is a positive number in milliseconds. It is the delay between link watch initialization and the first NS packet being sent.

link_watch.missed_max | ports.PORTIFNAME.link_watch.missed_max (int)

Maximum number of missed NA reply packets. If this number is exceeded, link is reported as down.

Default: 3

link_watch.target_host | ports.PORTIFNAME.link_watch.target_host (hostname)

Hostname to be converted to IPv6 address which will be filled into NS packet as target address.

link_watch_policy (string)

Name of link-watchers evaluation policy. Available options are following:

any — Link is up if any of the link-watchers reports the link up.

all — Link is up if all of the link-watchers reports the link up.

Default: any

## EXAMPLES

```
{

  "device": "team0",

  "runner": {"name": "roundrobin"},

  "ports": {"eth1": {}, "eth2": {}}
}
```

Very basic configuration.

```
{

  "device": "team0",

  "runner": {"name": "activebackup"},

  "link_watch": {"name": "ethtool"},

  "ports": {

    "eth1": {

      "prio": -10,

      "sticky": true

    },

    "eth2": {

      "prio": 100

    }

  }
}
```

This configuration uses active-backup runner with ethtool link watcher. Port eth2 has higher priority, but the sticky flag ensures that if eth1 becomes active, it stays active while the link remains up.

```
{

  "device": "team0",

  "runner": {"name": "activebackup"},

  "link_watch": {

    "name": "ethtool",

    "delay_up": 2500,

    "delay_down": 1000

  },

  "ports": {

    "eth1": {

      "prio": -10,

      "sticky": true

    },

    "eth2": {

      "prio": 100

    }

  }
}
```

Similar to the previous one. Only difference is that link changes are not propagated to the runner immediately, but delays are applied.

```
{

  "device": "team0",

  "runner": {"name": "activebackup"},

  "link_watch":	{

    "name": "arp_ping",

    "interval": 100,

    "missed_max": 30,

    "target_host": "192.168.23.1"

  },

  "ports": {

    "eth1": {

      "prio": -10,

      "sticky": true

    },

    "eth2": {

      "prio": 100

    }

  }
}
```

This configuration uses ARP ping link watch.

```
{
"device": "team0",
"runner": {"name": "activebackup"},
"link_watch": [

  {

    "name": "arp_ping",

    "interval": 100,

    "missed_max": 30,

    "target_host": "192.168.23.1"

  },

  {

    "name": "arp_ping",

    "interval": 50,

    "missed_max": 20,

    "target_host": "192.168.24.1"

  }
],
"ports": {

  "eth1": {

    "prio": -10,

    "sticky": true

  },

  "eth2": {

    "prio": 100

    }

  }
}
```

Similar to the previous one, only this time two link watchers are used at the same time.

```
{

  "device": "team0",

  "runner": {"name": "activebackup"},

  "link_watch_policy": "all",

  "link_watch": [

    {

    "name": "arp_ping",

    "interval": 100,

    "missed_max": 30,

    "target_host": "192.168.23.1"

    },

    {

    "name": "ethtool"

    }

  ],

  "ports":  {

    "eth1": {

      "prio": -10,

      "sticky": true

    },

    "eth2": {

      "prio": 100

    }

  }
}
```

Two link-watchers are used at the same time. Link is up only if all configured link-watchers report link is up.

```
{

  "device": "team0",

  "runner": {

    "name": "loadbalance",

    "tx_hash": ["eth", "ipv4", "ipv6"]

  },

  "ports": {"eth1": {}, "eth2": {}}
}
```

Configuration for hash-based passive Tx load balancing.

```
{

  "device": "team0",

  "runner": {

    "name": "loadbalance",

    "tx_hash": ["eth", "ipv4", "ipv6"],

    "tx_balancer": {

      "name": "basic"

    }

  },

  "ports": {"eth1": {}, "eth2": {}}
}
```

Configuration for active Tx load balancing using basic load balancer.

```
{

  "device": "team0",

  "runner": {

    "name": "lacp",

    "active": true,

    "fast_rate": true,

    "tx_hash": ["eth", "ipv4", "ipv6"]

  },

  "link_watch": {"name": "ethtool"},

  "ports": {"eth1": {}, "eth2": {}}
}
```

Configuration for connection to LACP capable counterpart.

## SEE ALSO
teamd(8), teamdctl(8), teamnl(8), bond2team(1)

## AUTHOR
Jiri Pirko is the original author and current maintainer of libteam.


package: terminator

title: terminator_config(5)

text:
# terminator_config(5)

## NAME
terminator_config - the config file for Terminator terminal emulator

## DESCRIPTION
This file contains the configuration for terminator(1). Terminator manages its configuration file via the ConfigObj library to combine flexibility with clear, human editable files.

Terminator offers a full GUI preferences editor which automatically saves its config file so you don’t need to write a config file by hand.

## FILE LOCATION
Normally the config file will be ~/.config/terminator/config, but it may be overridden with $XDG_CONFIG_HOME (in which case it will be $XDG_CONFIG_HOME/terminator/config).

## FILE FORMAT
This is what a Terminator config file should look like:

```
# This is a comment
[global_config]

  focus = system
[keybindings]

  full_screen = <Ctrl><Shift>F11
[profiles]

  [[default]]

    font = Fixed 10

    background_color = "#000000" # A comment

    foreground_color = "#FFFFFF" # Note that hex colour values must be quoted

    scrollback_lines = '500' #More comment. Single quotes are valid too

    cursor_blink = True

    custom_command = "echo \"foo#bar\"" #Final comment - this will work as expected.
[layouts]

  [[default]]

    [[[window0]]]

      type = Window

      parent = ""

    [[[child1]]]

      type = Terminal

      parent = window0
[plugins]
```

## GLOBAL_CONFIG
These are the options Terminator currently supports in the global_config section.

### Window Behavior & Appearance
window_state = string

Control how the Terminator window opens. 'normal' to open normally. 'maximise' to open in a maximised state. 'fullscreen' to open in a fullscreen state. 'hidden' to stay hidden.

Default value: normal

always_on_top = boolean

If set to True, the window will always stay on top of other windows.

Default value: False

sticky = boolean

If set to True, the window will be visible on all workspaces.

Default value: False

hide_on_lose_focus = boolean

If set to True, the window will be hidden when focus is lost.

Default value: False

hide_from_taskbar = boolean

If set to True, the window will be hidden from the taskbar.

Default value: False

geometry_hinting = boolean

If set to True, the window will resize in step with font sizes.

Default value: False

ask_before_closing = string

Specify when to ask for confirmation before closing a window or a tab. Can be any of: 'always', 'multiple_terminals', 'never'. Default value: multiple_terminals

borderless = boolean

If set to True, the window will be started without window borders.

Default value: False

### Tab Behavior & Appearance
tab_position = string

Specify where tabs are placed. Can be any of: 'top', 'left', 'right', 'bottom', 'hidden'. If set to 'hidden', the tab bar will not be shown. Hiding the tab is not recommended, as it can be very confusing.

Default value: top

close_button_on_tab = boolean

If set to True, tabs will have a close button on them.

Default value: True

scroll_tabbar = boolean

If set to True, the tab bar will not fill the width of the window. The titlebars of the tabs will only take as much space as is necessary for the text they contain. Except, that is, if the tabs no longer fit the width of the window - in that case scroll buttons will appear to move through the tabs.

Default value: False

### Terminal Behavior & Appearance
focus = string

Specify how focus is given to terminals. 'click' means the focus only moves to a terminal after you click in it. 'sloppy' means the focus will follow the mouse pointer. 'system' means the focus will match that used by a GNOME window manager.

Default value: click

always_split_with_profile = boolean

Specify whether splits/tabs will continue to use the profile of their peer terminal. If set to False, they will always use the default profile.

Default value: False

link_single_click = boolean

If set to True, clicking a link will open it even if Ctrl is not pressed.

Default value: False

putty_paste_style = boolean

If set to True, right-click will paste text, while middle-click will popup the context menu. The source for the pasted text depends on the value of putty_paste_style_source_clipboard.

Default value: False

putty_paste_style_source_clipboard = boolean

If set to True, the Clipboard will be used as source for pasting in PuTTY style. Otherwise, the Primary Selection will be used.

This option is ignored unless putty_paste_style is set to True.

Default value: False

disable_mouse_paste = boolean

If set to True, mouse pasting will be disabled.

Default value: False

smart_copy = boolean

If set to True, and there is no selection, the shortcut is allowed to pass through. This is useful for overloading Ctrl-C to copy a selection, or send the SIGINT to the current process if there is no selection. If False, the shortcut does not pass through at all, and the SIGINT does not get sent.

Default value: True

clear_select_on_copy = boolean

If set to True, text selection will be cleared after copying using the copy keybinding.

Default value: False

handle_size = integer

Specify the width of the separator between terminals. Anything outside the range 0-20 (inclusive) will be ignored and the default theme value will be used instead.

Default value: 1

inactive_color_offset = float

Specify how much to reduce the color values of fonts in terminals that do not have focus.

Default value: 0.8

inactive_bg_color_offset = float

Specify how much to reduce the color values of the background in terminals that do not have focus.

Default value: 1.0

cell_width = float

Specify the horizontal scale of character cells in the terminal.

Default value: 1.0

cell_height = float

Specify the vertical scale of character cells in the terminal.

Default value: 1.0

title_at_bottom = boolean

If set to True, the terminal’s titlebar will be drawn at the bottom instead of the top.

Default value: False

### Miscellaneous
dbus = boolean

Specify whether Terminator will load its DBus server. When this server is loaded, running Terminator multiple times will cause the first Terminator process to open additional windows. If this configuration item is set to False, or the python dbus module is unavailable, running Terminator multiple times will run a separate Terminator process for each invocation.

Default value: True

extra_styling = boolean

If set to True, Terminator may load an additional CSS styling file, depending on the theme.

Default value: True

broadcast_default = string

Specify the default broadcast behavior. Can be any of: 'all', 'group', 'off'.

Default value: group

use_custom_url_handler = boolean

If set to True, URL handling will be given over entirely to the program specified by 'custom_url_handler'.

Default value: False

custom_url_handler = string

Specify the path to a program which accepts a URI as an argument and does something relevant with it. This option is ignored unless use_custom_url_handler is set to True.

case_sensitive = boolean

If set to True, uppercase and lowercase characters will be considered different when searching text in the terminal.

Default value: True

invert_search = boolean

If set to True, the search direction will be inverted (bottom to top) when searching text in the terminal.

Default value: False

enabled_plugins = list of strings

Specify which plugins will be loaded by default. All other plugin classes will be ignored.

Default value: ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler']

## KEYBINDINGS
These are the options Terminator currently supports in the keybindings section.

### Creation & Destruction
split_horiz

Split the current terminal horizontally.

Default value: <Ctrl><Shift>O

split_vert

Split the current terminal vertically.

Default value: <Ctrl><Shift>E

split_auto

Split the current terminal automatically, along the longer side.

Default value: <Ctrl><Shift>A

new_tab

Open a new tab.

Default value: <Ctrl><Shift>T

new_window

Open a new window as part of the existing process.

Default value: <Ctrl><Shift>I

new_terminator

Spawn a new Terminator process.

Default value: <Super>I

layout_launcher

Open the layout launcher.

Default value: <Alt>L

close_term

Close the current terminal.

Default value: <Ctrl><Shift>W

close_window

Close the current window.

Default value: <Ctrl><Shift>Q

### Navigation
cycle_next

Focus the next terminal. This is an alias for go_next.

Default value: <Ctrl>Tab

cycle_prev

Focus the previous terminal. This is an alias for go_prev.

Default value: <Ctrl><Shift>Tab

go_next

Focus the next terminal.

Default value: <Ctrl><Shift>N

go_prev

Focus the previous terminal.

Default value: <Ctrl><Shift>P

go_up

Focus the terminal above the current one.

Default value: <Alt>Up

go_down

Focus the terminal below the current one.

Default value: <Alt>Down

go_left

Focus the terminal to the left of the current one.

Default value: <Alt>Left

go_right

Focus the terminal to the right of the current one.

Default value: <Alt>Right

page_up

Scroll the terminal up one page.

page_down

Scroll the terminal down one page.

page_up_half

Scroll the terminal up half a page.

page_down_half

Scroll the terminal down half a page.

line_up

Scroll the terminal up one line.

line_down

Scroll the terminal down one line.

next_tab

Move to the next tab.

Default value: <Ctrl>Page_Down

prev_tab

Move to the previous tab.

Default value: <Ctrl>Page_Up

switch_to_tab_1, switch_to_tab_2, ... switch_to_tab_10

Move to the Nth tab. Note that <Alt><Shift>1 may be provided as <Alt>! or similar, depending on the keyboard layout.

### Organisation
resize_up

Move the parent dragbar up.

Default value: <Ctrl><Shift>Up

resize_down

Move the parent dragbar down.

Default value: <Ctrl><Shift>Down

resize_left

Move the parent dragbar left.

Default value: <Ctrl><Shift>Left

resize_right

Move the parent dragbar right.

Default value: <Ctrl><Shift>Right

rotate_cw

Rotate terminals clockwise.

Default value: <Super>R

rotate_ccw

Rotate terminals counter+clockwise.

Default value: <Super><Shift>R

move_tab_right

Move the current tab to the right by swapping position with the next tab.

Default value: <Ctrl><Shift>Page_Down

move_tab_left

Move the current tab to the left by swapping position with the previous tab.

Default value: <Ctrl><Shift>Page_Up

### Focus
full_screen

Toggle window to fullscreen.

Default value: F11

toggle_zoom

Toggle maximisation of the current terminal.

Default value: <Ctrl><Shift>X

scaled_zoom

Toggle maximisation of the current terminal and scale the font when maximised.

Default value: <Ctrl><Shift>Z

hide_window

Hide/Show all Terminator windows.

Default value: <Ctrl><Shift><Alt>A

### Grouping & Broadcasting
create_group

Create a new group.

group_all

Group all terminals together.

Default value: <Super>G

ungroup_all

Ungroup all terminals.

group_all_toggle

Toggle grouping of all terminals.

group_win

Group all terminals in the current window together.

ungroup_win

Ungroup all terminals in the current window.

Default value: <Super><Shift>W

group_win_toggle

Toggle grouping of all terminals in the current window.

group_tab

Group all terminals in the current tab together.

Default value: <Super>T

ungroup_tab

Ungroup all terminals in the current tab.

Default value: <Super><Shift>T

group_tab_toggle

Toggle grouping of all terminals in the current tab.

broadcast_off

Turn broadcasting off.

broadcast_group

Broadcast to all terminals in the same group as the current terminal.

broadcast_all

Broadcast to all terminals.

### Miscellaneous
help

Open the full HTML manual in the browser.

Default value: F1

preferences

Open the Preferences window.

preferences_keybindings

Open the Preferences window and show the Keybindings tab.

Default value: <Ctrl><Shift>K

copy

Copy the selected text to the Clipboard.

Default value: <Ctrl><Shift>C

paste

Paste the current contents of the Clipboard.

Default value: <Ctrl><Shift>V

paste_selection

Paste the current contents of the Primary Selection.

toggle_scrollbar

Toggle the scrollbar.

Default value: <Ctrl><Shift>S

search

Search for text in the terminal scrollback history.

Default value: <Ctrl><Shift>F

reset

Reset the terminal state.

Default value: <Ctrl><Shift>R

reset_clear

Reset the terminal state and clear the terminal window.

Default value: <Ctrl><Shift>G

zoom_in

Increase the font size by one unit.

Default value: <Ctrl>plus

zoom_out

Decrease the font size by one unit.

Default value: <Ctrl>minus

zoom_normal

Restore the original font size.

Default value: <Ctrl>0

zoom_in_all

Increase the font size by one unit for all terminals.

zoom_out_all

Decrease the font size by one unit for all terminals.

zoom_normal_all

Restore the original font size for all terminals.

edit_window_title

Rename the current window.

Default value: <Ctrl><Alt>W

edit_tab_title

Rename the current tab.

Default value: <Ctrl><Alt>A

edit_terminal_title

Rename the current terminal.

Default value: <Ctrl><Alt>X

insert_number

Insert the current terminal’s number, i.e. 1 to 12.

Default value: <Super>1

insert_padded

Insert the current terminal’s number, but zero padded, i.e. 01 to 12.

Default value: <Super>0

next_profile

Switch to the next profile.

previous_profile

Switch to the previous profile.

## PROFILES
These are the options Terminator currently supports in the profiles section. Each profile should be its own subsection with a header in the format [[name]].

### General
allow_bold = boolean

If set to True, text in the terminal can displayed in bold.

Default value: True

copy_on_selection = boolean

If set to True, text selections will be automatically copied to the Clipboard, in addition to being copied to the Primary Selection.

Default value: False

disable_mousewheel_zoom = boolean

If set to True, Ctrl+mouse_wheel will not zoom or unzoom the terminal.

Default value: False

word_chars = string

Specify the characters that will be considered part of a single word when selecting text by word. Hyphen and alphanumerics do not need to be specified. Ranges can be given, e.g. "A-Z".

For example, if word_chars = "," then "foo,bar" is considered a single word.

Default value: -,./?%&#:_

mouse_autohide = boolean

If set to True, the mouse pointer will be hidden when typing.

Default value: True

term = string

Specify the value Terminator will assign to the 'TERM' environment variable.

Default value: xterm-256color

colorterm = string

Specify the value Terminator will assign to the 'COLORTERM' environment variable.

Default value: truecolor

split_to_group = boolean

If set to True, the terminal created by splitting will be inserted in the current terminal’s group.

Default value: False

autoclean_groups = boolean

If set to True, empty groups will be removed.

Default value: True

use_system_font = boolean

If set to True, the system default font will be used for text in the terminal. Otherwise, the value of font will be used.

Default value: True

font = string

Specify which font to use for text in the terminal. This option is ignored unless use_system_font is set to False.

Default value: Mono 10

cursor_blink = boolean

If set to True, the cursor will blink when not typing.

Default value: True

cursor_shape = string

Specify the shape of the cursor. Can be any of: 'block', 'underline', 'ibeam'.

Default value: block

cursor_color_default = boolean

If set to True, the background and foreground colors of the terminal will be used as foreground and background colors for the cursor, respectively.

Default value: True

cursor_fg_color = color string

Specify the foreground color to use for the cursor. This option is ignored unless cursor_color_default is set to False.

cursor_bg_color = color string

Specify the background color to use for the cursor. This option is ignored unless cursor_color_default is set to False.

audible_bell = boolean

If set to True, a sound will be played when an application writes the escape sequence for the terminal bell.

Default value: False

visible_bell = boolean

If set to True, the terminal will flash when an application writes the escape sequence for the terminal bell.

Default value: False

urgent_bell = boolean

If set to True, the window’s urgency hint will be set when an application writes the escape sequence for the terminal bell.

Default value: False

icon_bell = boolean

If set to True, a small icon will be shown on the terminal titlebar when an application writes the escape sequence for the terminal bell.

Default value: True

force_no_bell = boolean

If set to True, the terminal bell will be completely disabled.

Default value: False

### Command
login_shell = boolean

If set to True, the terminal will run the default shell (or the command specified by custom_command) as a login shell. This means the first argument passed to the shell/command will be '-l'.

Default value: False

use_custom_command = boolean

If set to True, the value of custom_command will be used instead of the default shell.

Default value: False

custom_command = string

Specify the command to execute instead of the default shell. This option is ignored unless use_custom_command is set to True.

exit_action = string

Specify the action to perform when the terminal is closed. 'close' to remove the terminal. 'restart' to restart the shell (or the command specified by custom_command). 'hold' to keep the terminal open, even if the process in it has terminated.

Default value: close

### Colors
use_theme_colors = boolean

If set to True, the theme’s foreground and background colors will be used for the terminal. Otherwise, the values of foreground_color and background_color will be used.

Default value: False

foreground_color = color string

Specify the foreground color to use for the terminal. This option is ignored unless use_theme_colors is set to False.

Default value: #AAAAAA

background_color = color string

Specify the background color to use for the terminal. This option is ignored unless use_theme_colors is set to False.

Default value: #000000

palette = string list of colors

Specify the 16-color palette to use for the terminal. The value must be a string containing a colon-separated list of colors in hex format.

For example, "#000000:#cd0000:#00cd00: ... ".

bold_is_bright = boolean

If set to True, bold text will have brighter colors.

Default value: False

### Background
background_darkness = float

Specify the transparency of the background color. The value must be between 0.0 and 1.0. This option is ignored unless background_type is set to 'transparent' or 'image'.

Default value: 0.5

background_type = string

Specify what type of background the terminal will have. 'solid' for a solid (opaque) background. 'transparent' for a transparent background. 'image' for a background image.

If this is set to 'transparent', the transparency of the background will be the value of background_darkness. If this is set to 'image', the image specified by background_image will be the background; the background color will then be drawn on top of it, with a transparency specified by background_darkness.

Default value: solid

background_image = path string

Specify the path to an image that will be used as background. This option is ignored unless background_type is set to 'image'.

background_image_mode = string

Specify how the background image will be drawn. 'stretch_and_fill' to fill the terminal entirely, without necessarily maintaining aspect ratio. 'scale_and_fit' to fit the image inside the terminal, eventually leaving blank bars, while maintaining aspect ratio. 'scale_and_crop' to fill the terminal entirely, eventually cropping the image, while maintaining aspect ratio. 'tiling' to repeat the image as to fill the terminal. This option is ignored unless background_type is set to 'image'.

Default value: stretch_and_fill

background_image_align_horiz = string

Specify the horizontal alignment of the background image. Can be any of: 'left', 'center', 'right'. This option is ignored unless background_type is set to 'image'.

Default value: center

background_image_align_vert = string

Specify the vertical alignment of the background image. Can be any of: 'top', 'middle', 'bottom'. This option is ignored unless background_type is set to 'image'.

Default value: middle

### Scrolling
scrollbar_position = string

Specify where the terminal scrollbar is put. Can be any of: 'left', 'right', 'hidden'.

Default value: right

scroll_on_output = boolean

If set to True, the terminall will scroll to the bottom when an application writes text to it.

Default value: False

scroll_on_keystroke = boolean

If set to True, the terminal will scroll to the bottom when typing.

Default value: True

scrollback_infinite = boolean

If set to True, the terminal will keep the entire scrollback history.

Default value: False

scrollback_lines = integer

Specify how many lines of scrollback history will be kept by the terminal. Lines that don’t fit in the scrollback history will be discarted. Note that setting large values can slow down rewrapping and resizing. This option is ignored unless scrollback_infinite is set to False.

Default value: 500

### Compatibility
backspace_binding = string

Specify what code will be generated by the backspace key. The value can be: 'ascii-del' for the ASCII DEL character; 'control-h' for the ASCII BS character (Ctrl+H); 'escape-sequence' for the escape sequence typically bound to backspace or delete; 'automatic' for letting the terminal automatically decide the character sequence to use.

Default value: ascii-del

delete_binding = string

Specify what code will be generated by the delete key. The value can be: 'ascii-del' for the ASCII DEL character; 'control-h' for the ASCII BS character (Ctrl+H); 'escape-sequence' for the escape sequence typically bound to backspace or delete; 'automatic' for letting the terminal automatically decide the character sequence to use.

Default value: escape-sequence

### Titlebar
show_titlebar = boolean

If set to True, the terminal will have a titlebar showing the current title of that terminal.

Default value: True

title_hide_sizetext = boolean

If set to True, the size of the terminal will not be written on its titlebar.

Default value: False

title_use_system_font = boolean

If set to True, the system default font will be used for text in the terminal’s titlebar. Otherwise, the value of title_font will be used.

Default value: True

title_font = string

Specify which font to use for text in the terminal’s titlebar. This option is ignored unless title_use_system_font is set to False.

Default value: Sans 9

title_transmit_fg_color = color string

Specify the foreground color to use for the terminal’s titlebar in case the terminal is focused.

Default value: #ffffff

title_transmit_bg_color = color string

Specify the background color to use for the terminal’s titlebar in case the terminal is focused.

Default value: #c80003

title_inactive_fg_color = color string

Specify the foreground color to use for the terminal’s titlebar in case the terminal is unfocused.

Default value: #000000

title_inactive_bg_color = color string

Specify the background color to use for the terminal’s titlebar in case the terminal is unfocused.

Default value: #c0bebf

title_receive_fg_color = color string

Specify the foreground color to use for the terminal’s titlebar in case the terminal is in a group and is receiving input while unfocused.

Default value: #ffffff

title_receive_bg_color = color string

Specify the background color to use for the terminal’s titlebar in case the terminal is in a group and is receiving input while unfocused.

Default value: #0076c9

## LAYOUTS
The layouts section contains all the saved layouts. Each layout should be its own subsection with a header in the format [[name]].

Each object in a layout is a named sub-sub-section with various properties.

type = string

Can be any of: 'Window', 'Notebook', 'HPaned', 'VPaned', 'Terminal'.

parent = string

Specify which object is the parent of the component being defined. All objects, except those of type Window, must specify a parent.

This is an example of a layouts section containing only the layout named "default".

```
[layouts]

  [[default]]

    [[[window0]]]

      type = Window

      parent = ""

    [[[child1]]]

      type = Terminal

      parent = window0
```

## PLUGINS
Terminator plugins can add their own configuration to the config file, and it will appear as a subsection. Please refer to the documentation of individual plugins for more information.

## SEE ALSO
terminator(1), <https://configobj.readthedocs.io/>


package: terminfo

title: scr_dump(5)

text:
# scr_dump(5)

## NAME
scr_dump - curses screen dump

## DESCRIPTION
The curses library provides applications with the ability to write the contents of a window to an external file using scr_dump or putwin, and read it back using scr_restore or getwin.

The putwin and getwin functions do the work; while scr_dump and scr_restore conveniently save and restore the whole screen, i.e., stdscr.

### ncurses6
A longstanding implementation of screen-dump was revised with ncurses6 to remedy problems with the earlier approach:

•

A “magic number” is written to the beginning of the dump file, allowing applications (such as file(1)) to recognize curses dump files.

Because ncurses6 uses a new format, that requires a new magic number was unused by other applications. This 16-bit number was unused:

```
0x8888 (octal “\210\210”)
```

but to be more certain, this 32-bit number was chosen:

```
0x88888888 (octal “\210\210\210\210”)
```

This is the pattern submitted to the maintainers of the file program:

```
#
# ncurses5 (and before) did not use a magic number,
# making screen dumps "data".
#
# ncurses6 (2015) uses this format, ignoring byte-order
0    string    \210\210\210\210ncurses    ncurses6 screen image
#
```

•

The screen dumps are written in textual form, so that internal data sizes are not directly related to the dump-format, and enabling the library to read dumps from either narrow- or wide-character- configurations.

The narrow library configuration holds characters and video attributes in a 32-bit chtype, while the wide-character library stores this information in the cchar_t structure, which is much larger than 32-bits.

- It is possible to read a screen dump into a terminal with a different screen-size, because the library truncates or fills the screen as necessary.

- The ncurses6 getwin reads the legacy screen dumps from ncurses5.

### ncurses5 (Legacy)
The screen-dump feature was added to ncurses in June 1995. While there were fixes and improvements in succeeding years, the basic scheme was unchanged:

- The WINDOW structure was written in binary form.

- The WINDOW structure refers to lines of data, which were written as an array of binary data following the WINDOW.

- When getwin restored the window, it would keep track of offsets into the array of line-data and adjust the WINDOW structure which was read back into memory.

This is similar to Unix System V, but does not write a “magic number” to identify the file format.

## PORTABILITY
There is no standard format for curses screen dumps. A brief survey of the existing implementations follows.

### X/Open Curses
X/Open Curses Issue 7 specifies little. It says (boldface emphasis added)

“[t]he getwin() function reads window-related data stored in the file by putwin(). The function then creates and initializes a new window using that data.

The putwin() function writes all data associated with win into the stdio stream to which filep points, using an unspecified format. This information can be retrieved later using getwin().”

In the mid-1990s when the X/Open Curses document was written, there were still System V systems using older, less capable curses libraries. BSD curses was not relevant to X/Open because it did not meet the criteria for base-level conformance; see ncurses(3X).

### System V
System V curses identified the file format by writing a “magic number” at the beginning of the dump. The WINDOW data and the lines of text follow, all in binary form.

Solaris curses has the following definitions.

```
/* terminfo magic number */
#define MAGNUM  0432
/* curses screen dump magic number */
#define SVR2_DUMP_MAGIC_NUMBER  0433
#define SVR3_DUMP_MAGIC_NUMBER  0434
```

That is, the feature was likely introduced in SVr2 (1984), and improved in SVr3 (1987). Solaris curses has no magic number for SVr4 (1989). Other System V operating systems (AIX and HP-UX) use a magic number that would correspond to the following.

```
/* curses screen dump magic number */
#define SVR4_DUMP_MAGIC_NUMBER  0435
```

That octal number in bytes is 001, 035. Because most Unix vendors at the time used big-endian hardware, the magic number is written with the high-order byte first.

```
\001\035
```

After the magic number, the WINDOW structure and line data are written in binary format. While the magic number used by these systems can be observed with od(1), none of them documents the format used for screen dumps.

Nor do they use an identical format, even with the System V family. The ncurses savescreen test program was used to collect information for this manual page. It produced dumps of different size (all on 64-bit hardware, on 40x80 screens):

- AIX (51817 bytes)

- HP-UX (90093 bytes)

- Solaris 10 (13273 bytes)

- ncurses5 (12888 bytes)

### Solaris
As noted above, Solaris curses has no magic number corresponding to SVr4 curses. This is odd, since Solaris was the first operating system to meet the SVr4 guidelines. Solaris furthermore supplies two versions of curses.

- The default curses library uses the SVr3 magic number.

- An alternate curses library (which we term xcurses), available in /usr/xpg4, uses a textual format with no magic number.

According to its copyright notice, this xcurses library was developed by MKS (Mortice Kern Systems) from 1990 to 1995.

Like ncurses6, it includes a header with parameters. Unlike ncurses6, the contents of the window are written piecemeal, with coordinates and attributes for each chunk of text rather than writing the whole window from top to bottom.

### PDCurses
PDCurses added support for screen dumps in version 2.7 (2005). Like System V and ncurses5, it writes the WINDOW structure in binary, but begins the file with its three-byte identifier “PDC”, followed by a single-byte version number.

```
	“PDC\001”
```

### NetBSD
As of April 2017, NetBSD curses does not support scr_dump and scr_restore (or scr_init, scr_set), although it has putwin and getwin.

Like ncurses5, NetBSD putwin does not identify its dumps with a useful magic number. It writes

- the curses shared library major and minor versions as the first two bytes (for example, 7 and 1),

- followed by a binary dump of the WINDOW,

- some data for wide characters referenced by the WINDOW structure, and

- finally, lines as done by other implementations.

## EXAMPLES
Given a simple program which writes text to the screen (and for the sake of example, limiting the screen-size to 10x20):

```
#include <curses.h>
int
main(void)
{

    putenv("LINES=10");

    putenv("COLUMNS=20");

    initscr();

    start_color();

    init_pair(1, COLOR_WHITE, COLOR_BLUE);

    init_pair(2, COLOR_RED, COLOR_BLACK);

    bkgd(COLOR_PAIR(1));

    move(4, 5);

    attron(A_BOLD);

    addstr("Hello");

    move(5, 5);

    attroff(A_BOLD);

    attrset(A_REVERSE | COLOR_PAIR(2));

    addstr("World!");

    refresh();

    scr_dump("foo.out");

    endwin();

    return 0;
}
```

When run using ncurses6, the output looks like this:

```
\210\210\210\210ncurses 6.0.20170415
_cury=5
_curx=11
_maxy=9
_maxx=19
_flags=14
_attrs=\{REVERSE|C2}
flag=_idcok
_delay=-1
_regbottom=9
_bkgrnd=\{NORMAL|C1}\s
rows:
1:\{NORMAL|C1}\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
2:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
3:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
4:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
5:\s\s\s\s\s\{BOLD}Hello\{NORMAL}\s\s\s\s\s\s\s\s\s\s
6:\s\s\s\s\s\{REVERSE|C2}World!\{NORMAL|C1}\s\s\s\s\s\s\s\s\s
7:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
8:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
9:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
10:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
```

The first four octal escapes are actually nonprinting characters, while the remainder of the file is printable text. You may notice:

- The actual color pair values are not written to the file.

- All characters are shown in printable form; spaces are “\s” to ensure they are not overlooked.

- Attributes are written in escaped curly braces, e.g., “\{BOLD}”, and may include a color pair (C1 or C2 in this example).

- The parameters in the header are written out only if they are nonzero. When reading back, order does not matter.

Running the same program with Solaris xpg4 curses gives this dump:

```
MAX=10,20
BEG=0,0
SCROLL=0,10
VMIN=1
VTIME=0
FLAGS=0x1000
FG=0,0
BG=0,0,
0,0,0,1,
0,19,0,0,
1,0,0,1,
1,19,0,0,
2,0,0,1,
2,19,0,0,
3,0,0,1,
3,19,0,0,
4,0,0,1,
4,5,0x20,0,Hello
4,10,0,1,
4,19,0,0,
5,0,0,1,
5,5,0x4,2,World!
5,11,0,1,
5,19,0,0,
6,0,0,1,
6,19,0,0,
7,0,0,1,
7,19,0,0,
8,0,0,1,
8,19,0,0,
9,0,0,1,
9,19,0,0,
CUR=11,5
```

Solaris getwin requires that all parameters are present, and in the same order. The xpg4 curses library does not know about the bce (back color erase) capability, and does not color the window background.

On the other hand, the SVr4 curses library does know about the background color. However, its screen dumps are in binary. Here is the corresponding dump (using “od -t x1”):

```
0000000 1c 01 c3 d6 f3 58 05 00 0b 00 0a 00 14 00 00 00
0000020 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
0000040 00 00 b8 1a 06 08 cc 1a 06 08 00 00 09 00 10 00
0000060 00 00 00 80 00 00 20 00 00 00 ff ff ff ff 00 00
0000100 ff ff ff ff 00 00 00 00 20 80 00 00 20 80 00 00
0000120 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
*
0000620 20 80 00 00 20 80 00 00 20 80 00 00 48 80 00 04
0000640 65 80 00 04 6c 80 00 04 6c 80 00 04 6f 80 00 04
0000660 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
*
0000740 20 80 00 00 20 80 00 00 20 80 00 00 57 00 81 00
0000760 6f 00 81 00 72 00 81 00 6c 00 81 00 64 00 81 00
0001000 21 00 81 00 20 80 00 00 20 80 00 00 20 80 00 00
0001020 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
*
0001540 20 80 00 00 20 80 00 00 00 00 f6 d1 01 00 f6 d1
0001560 08 00 00 00 40 00 00 00 00 00 00 00 00 00 00 07
0001600 00 04 00 01 00 01 00 00 00 01 00 00 00 00 00 00
0001620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0002371
```

## AUTHORS
Thomas E. Dickey

extended screen-dump format for ncurses 6.0 (2015)

Eric S. Raymond

screen dump feature in ncurses 1.9.2d (1995)

## SEE ALSO
curs_scr_dump(3X), curs_util(3X)