{BOLD}{CYAN}{PROJECT_NAME} v{PROJECT_VERSION}{RESET} - {GRAY}Created by {PROJECT_AUTHOR}{RESET}

{BOLD}Usage:{RESET}
   {GREEN}tracker <command> [arguments] [options]{RESET}
   {GREEN}tracker <project> <command> [arguments] [options]{RESET}

   {GRAY}No arguments prints the tracked projects.{RESET}
   {GRAY}Commands that work on a project accept it before or after the command.{RESET}

{BOLD}Commands:{RESET}
   {YELLOW}help{RESET}, {GRAY}h, -h, --help{RESET}
      Show this help message, or the section for one command or topic.

      {GRAY}Usage:{RESET}
         {GREEN}tracker help{RESET}
         {GREEN}tracker help <command>{RESET}
         {GREEN}tracker help <topic>{RESET}
         {GREEN}tracker <command> help{RESET}

      {GRAY}Examples:{RESET}
         {GREEN}tracker help edit{RESET}
         {GREEN}tracker list help{RESET}
         {GREEN}tracker daemon help{RESET}
         {GREEN}tracker help statuses{RESET}
         {GREEN}tracker help selection{RESET}

      {GRAY}Topics: usage, commands, short forms, project selection, statuses,{RESET}
      {GRAY}list filters, timestamps, row format, names, notes, options,{RESET}
      {GRAY}configuration.{RESET}

   {YELLOW}version{RESET}, {GRAY}v, -v, --version{RESET}
      Show the program version.

   {YELLOW}list{RESET}, {GRAY}l, ls, --list{RESET}
      List tracked projects.

      {GRAY}Usage:{RESET}
         {GREEN}tracker list{RESET}
         {GREEN}tracker list <search>{RESET}
         {GREEN}tracker list <number>{RESET}
         {GREEN}tracker list all{RESET}
         {GREEN}tracker list regex <pattern>{RESET}
         {GREEN}tracker list <filter>{RESET}
         {GREEN}tracker list s:<status>{RESET}
         {GREEN}tracker list <setting>=<value> ...{RESET}

      {GRAY}Examples:{RESET}
         {GREEN}tracker list tracker{RESET}
         {GREEN}tracker list 20{RESET}
         {GREEN}tracker list 0{RESET}                        {GRAY}no limit{RESET}
         {GREEN}tracker list all{RESET}                      {GRAY}no limit and no filter, {GREEN}a{GRAY}, {GREEN}max{GRAY} and {GREEN}full{GRAY} too{RESET}
         {GREEN}tracker list regex "^relaxy-"{RESET}
         {GREEN}tracker list -m:archived{RESET}
         {GREEN}tracker list s:current,planned{RESET}           {GRAY}only these statuses{RESET}
         {GREEN}tracker list '!s:archived'{RESET}            {GRAY}everything else{RESET}
         {GREEN}tracker list sorting.by=status{RESET}
         {GREEN}tracker list display.list_limit=20{RESET}
         {GREEN}tracker list sorting.by=time sorting.direction=descending{RESET}

      {GRAY}Multiple setting overrides and filters may be used at once.{RESET}

   {YELLOW}check{RESET}, {GRAY}c, cc, info{RESET}
      Show everything known about a project.

      {GRAY}Usage:{RESET}
         {GREEN}tracker check <selection>{RESET}

      {GRAY}Examples:{RESET}
         {GREEN}tracker check tracker{RESET}
         {GREEN}tracker check 42{RESET}
         {GREEN}tracker check 1-5{RESET}

      {GRAY}A bare project name does the same when it matches one project, and{RESET}
      {GRAY}prints a row per project when it matches several. A word that names no{RESET}
      {GRAY}project is tried as a status, so {GREEN}tracker stable{GRAY} lists every stable one.{RESET}

   {YELLOW}add{RESET}, {GRAY}a, --add{RESET}
      Add a project or scan a directory for projects.

      {GRAY}Usage:{RESET}
         {GREEN}tracker add <path>{RESET}
         {GREEN}tracker add <path> <status>{RESET}
         {GREEN}tracker add <path> <status> <note...>{RESET}

      {GRAY}If <path> is not a Git project, its subdirectories are searched for Git projects.{RESET}

   {YELLOW}remove{RESET}, {GRAY}rm, r, del, delete{RESET}
      Remove one or more tracked projects. (Project files untouched)

      {GRAY}Usage:{RESET}
         {GREEN}tracker remove <selection>{RESET}
         {GREEN}tracker remove all{RESET}

      {GRAY}Removing several projects at once asks for confirmation, --yes skips it.{RESET}

   {YELLOW}edit{RESET}, {GRAY}e, --edit{RESET}
      Edit one or more project properties.

      {GRAY}Usage:{RESET}
         {GREEN}tracker edit <selection> status <value>{RESET}
         {GREEN}tracker edit <selection> note <value...>{RESET}
         {GREEN}tracker <selection> edit status <value>{RESET}

      {GRAY}status may be shortened to s or st, note to n or nt, and the field can be{RESET}
      {GRAY}fused onto edit: {GREEN}es{GRAY} is edit status and {GREEN}en{GRAY} is edit note.{RESET}

      {GRAY}Examples:{RESET}
         {GREEN}tracker edit 12 status active{RESET}
         {GREEN}tracker edit 3-7 status completed{RESET}
         {GREEN}tracker edit 5+3 note "needs documentation"{RESET}
         {GREEN}tracker edit tracker status maintenance{RESET}
         {GREEN}tracker edit id:12 n review sunday{RESET}
         {GREEN}tracker 12 es blocked{RESET}
         {GREEN}tracker t:3 en review sunday{RESET}
         {GREEN}tracker edit all status active{RESET}

   {YELLOW}note{RESET}, {GRAY}n, sn{RESET}
      Set a project's note without naming the field.

      {GRAY}Usage:{RESET}
         {GREEN}tracker note <selection> <value...>{RESET}
         {GREEN}tracker <selection> note <value...>{RESET}

      {GRAY}Examples:{RESET}
         {GREEN}tracker note 12 review sunday{RESET}
         {GREEN}tracker id:12 n review sunday{RESET}
         {GREEN}tracker 12 sn review sunday{RESET}
         {GREEN}tracker tracker n ""{RESET}                {GRAY}clear it{RESET}

   {YELLOW}status{RESET}, {GRAY}st, ss{RESET}
      Set a project's status without naming the field, or list the statuses in use.

      {GRAY}Usage:{RESET}
         {GREEN}tracker status{RESET}
         {GREEN}tracker status <selection> <value>{RESET}
         {GREEN}tracker <selection> status <value>{RESET}
         {GREEN}tracker <selection> ss <value>{RESET}
         {GREEN}tracker status s:<old> <new>{RESET}

      {GRAY}Examples:{RESET}
         {GREEN}tracker status{RESET}                        {GRAY}every status and its count{RESET}
         {GREEN}tracker status 12 blocked{RESET}
         {GREEN}tracker tracker st current{RESET}
         {GREEN}tracker status s:blocked paused{RESET}       {GRAY}move every blocked project{RESET}
         {GREEN}tracker status s:planned,next active{RESET}

      {GRAY}Projects that already hold the new status are counted, not rewritten.{RESET}

   {YELLOW}forget{RESET}, {GRAY}ignore{RESET}
      Stop tracking projects and keep scans from finding them again.

      {GRAY}Usage:{RESET}
         {GREEN}tracker forget <selection>{RESET}
         {GREEN}tracker forget list{RESET}
         {GREEN}tracker forget clear{RESET}
         {GREEN}tracker forget clear <pattern>{RESET}

      {GRAY}The paths are written to scan.exclude in settings.{RESET}
      {GRAY}Daemon picks the change up on the next scan.{RESET}

   {YELLOW}init{RESET}, {GRAY}i, scan{RESET}
      Scan a directory and add whatever it finds. Existing entries keep their ID, status and note, only the timestamp is refreshed.

      {GRAY}Usage:{RESET}
         {GREEN}tracker init{RESET}
         {GREEN}tracker init <path>{RESET}

      {GRAY}If no path is supplied, the current directory is used.{RESET}
      {GRAY}A project that was moved keeps its entry instead of being reported as{RESET}
      {GRAY}deleted, see {GREEN}scan.detect_moves{GRAY}.{RESET}

   {YELLOW}path{RESET}, {GRAY}p, where{RESET}
      Print the path of a project.

      {GRAY}Usage:{RESET}
         {GREEN}cd "$(tracker path tracker)"{RESET}

   {YELLOW}undo{RESET}, {GRAY}u, revert{RESET}
      Take back the last change made to the database.

      {GRAY}Usage:{RESET}
         {GREEN}tracker undo{RESET}

      {GRAY}One change is remembered, the last one: an edit, an add, a scan, a removal.{RESET}
      {GRAY}Looking at projects is not a change, and neither is a scan by the daemon,{RESET}
      {GRAY}so neither of them can lose an undo. Undoing twice puts things back.{RESET}

      {GRAY}The database as it was is kept beside it, as {GREEN}data.pkl.undo{GRAY}.{RESET}

   {YELLOW}stats{RESET}, {GRAY}stat, summary{RESET}
      Show how many projects are tracked, how they are split by status, which ones were touched most and least recently, and which one you last used.

   {YELLOW}completion{RESET}
      Print a shell completion script for command and project names.

      {GRAY}Usage:{RESET}
         {GREEN}eval "$(tracker completion bash)"{RESET}   {GRAY}~/.bashrc{RESET}
         {GREEN}eval "$(tracker completion zsh)"{RESET}    {GRAY}~/.zshrc{RESET}
         {GREEN}tracker completion fish > ~/.config/fish/completions/tracker.fish{RESET}

   {YELLOW}settings{RESET}, {GRAY}s, config, conf{RESET}
      View or change the configuration.

      {GRAY}Usage:{RESET}
         {GREEN}tracker settings{RESET}
         {GREEN}tracker settings edit{RESET}
         {GREEN}tracker settings path{RESET}
         {GREEN}tracker settings get <setting>{RESET}
         {GREEN}tracker settings set <setting> <value>{RESET}

      {GRAY}Examples:{RESET}
         {GREEN}tracker settings set display.list_limit 30{RESET}
         {GREEN}tracker settings set display.note_position below{RESET}

      {GRAY}Setting a value rewrites only that line.{RESET}

   {YELLOW}daemon{RESET}, {GRAY}d, b, bg, background{RESET}
      Run the background scanner.

      {GRAY}Usage:{RESET}
         {GREEN}tracker daemon{RESET}              {GRAY}start detached{RESET}
         {GREEN}tracker daemon stop{RESET}         {GRAY}also: kill, k{RESET}
         {GREEN}tracker daemon stop --yes{RESET}   {GRAY}including daemons of another configuration{RESET}
         {GREEN}tracker daemon restart{RESET}
         {GREEN}tracker daemon status{RESET}
         {GREEN}tracker daemon log [lines]{RESET}
         {GREEN}tracker daemon run{RESET}          {GRAY}stay in this terminal{RESET}

      {GRAY}The daemon periodically scans the directories configured under [daemon].{RESET}
      {GRAY}Its output goes to a log file, see {GREEN}tracker daemon status{GRAY} for where.{RESET}

{BOLD}Short forms:{RESET}
   {GRAY}A command and one of its own actions can be written as one word.{RESET}

   {GREEN}t dst{RESET}    {GRAY}daemon status{RESET}          {GREEN}t sg <setting>{RESET}   {GRAY}settings get{RESET}
   {GREEN}t ds{RESET}     {GRAY}daemon start{RESET}           {GREEN}t sset <k> <v>{RESET}   {GRAY}settings set{RESET}
   {GREEN}t dk{RESET}     {GRAY}daemon stop{RESET}            {GREEN}t se{RESET}             {GRAY}settings edit{RESET}
   {GREEN}t dr{RESET}     {GRAY}daemon restart{RESET}         {GREEN}t sp{RESET}             {GRAY}settings path{RESET}
   {GREEN}t dl{RESET}     {GRAY}daemon log{RESET}             {GREEN}t fl{RESET}             {GRAY}forget list{RESET}
   {GREEN}t es{RESET}     {GRAY}edit status{RESET}            {GREEN}t fc{RESET}             {GRAY}forget clear{RESET}
   {GREEN}t en{RESET}     {GRAY}edit note{RESET}             {GREEN}t ss <value>{RESET}     {GRAY}set status{RESET}
                                   {GREEN}t sn <value...>{RESET}  {GRAY}set note{RESET}

   {GRAY}Only a command plus its own action fuses. Put a project that collides after {GREEN}--{GRAY}.{RESET}

{BOLD}Project selection:{RESET}
   {GRAY}Projects can be identified by:{RESET}
   {GREEN}ID{RESET}             Permanent global ID
   {GREEN}TID{RESET}            Temporary ID from the current sorted view
   {GREEN}i:n{RESET}            Force the permanent ID {GRAY}(id:n too){RESET}
   {GREEN}t:n{RESET}            Force the temporary ID {GRAY}(tid:n too){RESET}
   {GREEN}#n{RESET}             Force the permanent ID {GRAY}(quote it, the shell reads # as a comment){RESET}
   {GREEN}@n{RESET}             Force the temporary ID
   {GREEN}:n{RESET}             Force the temporary ID, shorthand for {GREEN}t:n{RESET}
   {GREEN}n-x{RESET}            Inclusive range, in either direction
   {GREEN}n+x{RESET}            n and the next x projects
   {GREEN}all{RESET}            Every tracked project, {GRAY}display.filter{RESET} and the limit ignored
   {GREEN}s:status{RESET}       Every project holding that status {GRAY}(st:, status: too){RESET}
   {GREEN}s:a,b{RESET}          Every project holding any of them
   {GREEN}name{RESET}           Exact or partial project name
   {GREEN}path{RESET}           Exact or partial project path, tab completion included

   {GRAY}i:, t: and :n accept ranges too, {GREEN}t:3-7{GRAY} and {GREEN}i:5+3{GRAY} settle a number that is both.{RESET}
   {GRAY}Set {GREEN}projects.number_preference{GRAY} to id or tid to stop being asked at all.{RESET}

   {GRAY}A temporary ID is the row a project had the last time tracker printed one:{RESET}
   {GRAY}a listing, a search, a status lookup, the projects a scan added. Whatever{RESET}
   {GRAY}is on the screen is numbered 1, 2, 3 and so on, so there are never gaps and{RESET}
   {GRAY}a project {GREEN}display.filter{GRAY} hides still gets a number when something shows it.{RESET}
   {GRAY}Only printing rows renumbers, so a scan finishing in the background cannot{RESET}
   {GRAY}move a project out from under a number you typed. A project that has not{RESET}
   {GRAY}been shown has no row and prints as {GREEN}-{GRAY}.{RESET}

{GRAY}A partial name that matches several projects is settled by{RESET}
{GRAY}{GREEN}projects.conflict_resolution_preference{GRAY}:{RESET}

   {GREEN}starts_with{RESET}    prefer a project whose name starts with what you typed
   {GREEN}first_match{RESET}    take the first one in the current order
   {GREEN}frecency{RESET}       the one you reach for most through tracker, ranked the way
                  zoxide ranks directories: how often, weighted by how recently
   {GREEN}zoxide{RESET}         the one you visit most, read from the zoxide database,
                  falling back to frecency when zoxide knows none of them

{GRAY}frecency and zoxide list the clash as usual when they cannot tell them apart.{RESET}

{GRAY}remove and forget do nothing at all unless every selector resolved.{RESET}

{BOLD}List filters:{RESET}
   {GRAY}Filters work on the command line and in display.filter in the settings.{RESET}

   {GREEN}+m:<value>{RESET}   Include partial name/path matches.
   {GREEN}-m:<value>{RESET}   Exclude partial name/path matches.
   {GREEN}+r:<regex>{RESET}   Include names matching a regex.
   {GREEN}-r:<regex>{RESET}   Exclude names matching a regex.
   {GREEN}+s:<status>{RESET}  Include a status, comma separated for several.
   {GREEN}-s:<status>{RESET}  Exclude a status, comma separated for several.

   {GRAY}On the command line the leading {GREEN}+{GRAY} may be dropped and {GREEN}!{GRAY} used for {GREEN}-{GRAY},{RESET}
   {GRAY}and the long names work as well: {GREEN}s: st: status: m: match: r: regex:{RESET}

   {GRAY}A status matches exactly or by prefix, so {GREEN}s:arch{GRAY} finds archived too.{RESET}

   {GRAY}Examples:{RESET}
      {GREEN}tracker list s:current{RESET}
      {GREEN}tracker list '!s:archived,deleted'{RESET}
      {GREEN}filter = ["+m:python", "-m:test", "+r:^relaxy-"]{RESET}
      {GREEN}filter = ["-s:archived"]{RESET}          {GRAY}bare {GREEN}tracker{GRAY} hides them for good{RESET}

   {GRAY}display.filter applies to every listing, the bare {GREEN}tracker{GRAY} included.{RESET}

{BOLD}Statuses:{RESET}
   {GRAY}A status is free text, tracker only cares about the ones you use.{RESET}

   {GREEN}tracker status{RESET}                    {GRAY}every status in use and its count{RESET}
   {GREEN}tracker status <selection> <new>{RESET}  {GRAY}set one{RESET}
   {GREEN}tracker status s:<old> <new>{RESET}      {GRAY}move every project from one to another{RESET}

   {GRAY}A bare word that names no project is tried as a status:{RESET}

      {GREEN}tracker stable{RESET}                 {GRAY}the same as {GREEN}tracker s:stable{RESET}
      {GREEN}tracker blocked{RESET}

   {GRAY}A project name always wins, and the fallback only reads, never edits.{RESET}

   {GRAY}Anything that takes a project takes {GREEN}s:<status>{GRAY} as well:{RESET}

      {GREEN}tracker check s:blocked{RESET}
      {GREEN}tracker remove s:deleted{RESET}
      {GREEN}tracker note s:planned -- picked up again{RESET}

   {GRAY}Listing:{RESET}
      {GREEN}tracker list s:current,planned{RESET}    {GRAY}only these{RESET}
      {GREEN}tracker list '!s:archived'{RESET}     {GRAY}everything else{RESET}
      {GREEN}tracker list sorting.by=status{RESET}

   {GRAY}Configuration:{RESET}
      {GREEN}display.filter{RESET}          applies to every listing, the bare {GREEN}tracker{RESET} included
      {GREEN}display.status_colours{RESET}  a colour per status, add your own
      {GREEN}sorting.status_order{RESET}    the order {GREEN}sorting.by = "status"{RESET} uses
      {GREEN}projects.auto_status{RESET}    label projects by how long ago they were touched

   {GRAY}Example:{RESET}
      {GREEN}filter = ["-s:archived"]{RESET}
      {GREEN}status_order = ["current", "planned", "blocked", "shelf", "archived"]{RESET}

   {GRAY}Statuses left out of status_order sort after the ones in it.{RESET}
   {GRAY}A status matches exactly or by prefix, so {GREEN}s:arch{GRAY} finds archived too.{RESET}

   {GRAY}Automatic statuses:{RESET}
      {GREEN}projects.auto_status = true{RESET}

      {GREEN}[projects.auto_status_rules]{RESET}
      {GREEN}dev = 7{RESET}        {GRAY}touched within a week{RESET}
      {GREEN}stable = 90{RESET}    {GRAY}within three months{RESET}
      {GREEN}archive = 0{RESET}    {GRAY}everything older{RESET}

   {GRAY}A scan then gives every project the status its age asks for. Only the{RESET}
   {GRAY}statuses named in the rules and {GREEN}projects.default_status{GRAY} are ever rewritten,{RESET}
   {GRAY}so anything you set by hand stays where you put it.{RESET}

{BOLD}Timestamps:{RESET}
   {GRAY}Every project carries when it was last touched on disk, and when you last{RESET}
   {GRAY}looked at it with tracker.{RESET}

      {GREEN}display.relative_times{RESET}   "2 days ago" instead of the timestamp
      {GREEN}display.relative_style{RESET}   long {GRAY}(default){RESET}, short
      {GREEN}display.time_format{RESET}      how a stored timestamp is written

   {GRAY}long{RESET}    8 seconds ago, 3 minutes ago, 1 day ago, just now
   {GRAY}short{RESET}   8s ago, 3m ago, 1d ago, now

   {GRAY}Sorting by either one:{RESET}
      {GREEN}sorting.by = "last_touched"{RESET}   {GRAY}changed on disk{RESET}
      {GREEN}sorting.by = "last_used"{RESET}      {GRAY}last looked at with tracker{RESET}

   {GRAY}check, path and the bare project lookup all count as looking at it, as does{RESET}
   {GRAY}editing one. Turn it off with {GREEN}projects.track_usage = false{GRAY}.{RESET}

   {GRAY}Both are columns too:{RESET}
      {GREEN}columns = ["tid", "name", "status", "last_touched", "last_used"]{RESET}
      {GREEN}tracker list display.relative_style=short{RESET}

{BOLD}Row format:{RESET}
   {GRAY}display.format lays each row out instead of using columns.{RESET}

   {GREEN}$tid $id $name $path $status $last_touched $last_used $version $language $note{RESET}

   {GRAY}Fields are padded; output stays aligned. $> aligns a field to the{RESET}
   {GRAY}right, ${RESET}{GREEN}{name}{RESET}{GRAY} lets text follow a field immediately.{RESET}

   {GRAY}Examples:{RESET}
      {GREEN}tracker list 'display.format=$>tid. $name [$status]'{RESET}
      {GREEN}tracker settings set display.format '${tid}) $name - $note'{RESET}

   {GRAY}Anything that is not a known field is printed as written, and a format{RESET}
   {GRAY}holding $note places the note itself instead of the usual placement.{RESET}

   {GRAY}Use single quotes, shells tend to eat $name inside double quotes.{RESET}

{BOLD}Names:{RESET}
   {GRAY}A long project name can be cut down to keep the table narrow.{RESET}

      {GREEN}display.name_max_width{RESET}    widest a name may print, 0 keeps it whole
      {GREEN}display.name_style{RESET}        full, truncate {GRAY}(default){RESET}, abbreviate
      {GREEN}display.name_continuator{RESET}  what a truncated name ends with

   {GRAY}Both styles break on {GREEN}-{GRAY}, {GREEN}_{GRAY}, {GREEN}.{GRAY} and on capitals inside a CamelCase name.{RESET}

   {GRAY}truncate{RESET}     von-neumann-machine-simulator -> von-neumann...
   {GRAY}abbreviate{RESET}   von-neumann-machine-simulator -> von-neum-mac-sim
                VonNeumannMachineSimulator    -> VonNeuMacSim

   {GRAY}Example:{RESET}
      {GREEN}tracker list display.name_max_width=16 display.name_style=abbreviate{RESET}

{BOLD}Notes:{RESET}
   {GRAY}A note is shown on the same line as its project and only moves to its own{RESET}
   {GRAY}line when the terminal is too narrow for it. Change that with:{RESET}

      {GREEN}display.note_position{RESET}    auto {GRAY}(default){RESET}, inline, below
      {GREEN}display.note_min_width{RESET}   how much room a note needs to stay inline
      {GREEN}display.show_notes{RESET}       turn notes off entirely

   {GRAY}A note can colour itself. The word goes in braces and lasts until {GREEN}{/}{GRAY}:{RESET}

      {GREEN}tracker note 12 {red}broken{/} since the rewrite{RESET}
      {GREEN}tracker note 12 -- {y}waiting{/} on review{RESET}

   {GRAY}Long:  {GREEN}{red} {green} {yellow} {blue} {magenta} {cyan} {white} {gray} {bold} {dim} {reset}{RESET}
   {GRAY}Short: {GREEN}{r} {g} {y} {u} {m} {c} {w} {k} {b} {d} {/}{RESET}

   {GRAY}Anything else in braces is printed as written, and the colours disappear{RESET}
   {GRAY}by themselves when the output is not a terminal.{RESET}

{BOLD}Options:{RESET}
   {MAGENTA}verbose{RESET}, {GRAY}vv, --verbose, --vv{RESET}
      Explain what is going on while it happens.

   {MAGENTA}--yes{RESET}, {GRAY}-y, --force{RESET}
      Do not ask for confirmation.

   {MAGENTA}--{RESET}
      Everything after this is text, not options or commands. Use it for a note that starts with a dash or contains a command name.

         {GREEN}tracker note 12 -- --verbose is not a flag here{RESET}

   {MAGENTA}--no-colour{RESET}, {GRAY}--no-color, --colour, --color{RESET}
      Force colour off or on. Colour is disabled automatically when the output
      is not a terminal, or when NO_COLOR is set.

{BOLD}Configuration:{RESET}
   {GRAY}By default ~/.config/tracker/settings.toml is used.{RESET}
   {GRAY}A custom config my_settings.toml is used when present.{RESET}
   {GRAY}Any missing entries will be replaced with the default configuration.{RESET}

   {GRAY}Files:{RESET}
      {GREEN}~/.config/tracker/settings.toml{RESET}      configuration
      {GREEN}~/.local/share/tracker/data.pkl{RESET}      database
      {GREEN}~/.local/state/tracker/view.json{RESET}     the numbering of the last listing
      {GREEN}~/.local/state/tracker/{RESET}              daemon pid and log

   {GRAY}Worth knowing about:{RESET}
      {GREEN}display.relative_style{RESET}       long or short relative times
      {GREEN}display.filter{RESET}               filters every listing, statuses included
      {GREEN}display.name_max_width{RESET}       shorten names that are too long
      {GREEN}sorting.by{RESET}                   id, name, path, status, last_touched, last_used
      {GREEN}sorting.status_order{RESET}         the order sorting.by = "status" uses
      {GREEN}projects.number_preference{RESET}   ask, id or tid for a bare number
      {GREEN}projects.track_usage{RESET}         remember when you last used a project
      {GREEN}projects.conflict_resolution_preference{RESET}
      {GRAY}                          starts_with, first_match, frecency, zoxide{RESET}
      {GREEN}projects.ignore_files{RESET}        generated files that are not your work
      {GREEN}projects.auto_status{RESET}         label projects by their age
      {GREEN}scan.detect_moves{RESET}            follow a project that was moved

   {GRAY}Settings can be overridden for a single command:{RESET}
      {GREEN}tracker list display.list_limit=20{RESET}
      {GREEN}tracker list sorting.by=name output.compact=true{RESET}

   {GRAY}A setting can be named in full or shortened, anywhere one is expected:{RESET}
      {GREEN}display.list_limit{RESET}   the full name
      {GREEN}list_limit{RESET}           the name alone, every setting has a unique one
      {GREEN}list_lim{RESET}             the start of it
      {GREEN}l_l{RESET}                  the start of every word
      {GREEN}ll{RESET}                   its initials
      {GREEN}d.ll{RESET}                 the section shortens the same way

   {GRAY}Anything that is still ambiguous is reported with the settings it could mean.{RESET}

      {GREEN}tracker list ll=5 rt=true{RESET}
      {GREEN}tracker sset name_max 20{RESET}
      {GREEN}tracker sg by crp{RESET}

   {GRAY}{GREEN}nmw{GRAY} is a good example of ambiguous: it fits name_max_width and{RESET}
   {GRAY}note_min_width, so tracker lists both instead of guessing.{RESET}

   {GRAY}Environment:{RESET}
      {GREEN}TRACKER_SETTINGS{RESET}   use a different settings file
      {GREEN}TRACKER_DATA{RESET}       use a different database file
      {GREEN}TRACKER_VIEW{RESET}       use a different file for the temporary numbering
      {GREEN}TRACKER_SHARE{RESET}      use a different directory for the shipped files
      {GREEN}NO_COLOR{RESET}           disable colour

{BOLD}Examples:{RESET}
   {GREEN}tracker{RESET}
   {GREEN}tracker list{RESET}
   {GREEN}tracker list tracker{RESET}
   {GREEN}tracker add ~/Programming/Projects active "work in progress"{RESET}
   {GREEN}tracker check tracker{RESET}
   {GREEN}tracker edit 3-7 status completed{RESET}
   {GREEN}tracker id:12 note review sunday{RESET}
   {GREEN}tracker tracker st current{RESET}
   {GREEN}tracker status s:blocked paused{RESET}
   {GREEN}tracker list s:current,planned{RESET}
   {GREEN}tracker list all{RESET}
   {GREEN}tracker 12 es blocked{RESET}
   {GREEN}tracker :3 en {y}review{/} sunday{RESET}
   {GREEN}tracker list display.relative_style=short{RESET}
   {GREEN}tracker remove tracker{RESET}
   {GREEN}tracker init ~/Programming{RESET}
   {GREEN}tracker stats{RESET}
   {GREEN}tracker settings set display.list_limit 30{RESET}
   {GREEN}tracker daemon status{RESET}
