Skip to content

Configuration Reference

Config File Location

doing looks for configuration in the following order:

  1. DOING_CONFIG environment variable (if set, points to an explicit config file)
  2. $XDG_CONFIG_HOME/doing/config.toml (typically ~/.config/doing/config.toml)
  3. ~/.doingrc in your home directory

New installations create a TOML config file at the XDG path. YAML and JSON are also supported -- the format is detected from the file extension. Files without an extension (like .doingrc) are parsed as YAML first, then TOML as a fallback.

Local .doingrc files found in the current directory or its parents are discovered and merged on top of the global config, so you can have project-specific overrides.

Managing Configuration

Use the doing config subcommands to view and modify your configuration:

CommandDescription
doing config editOpen the config file in your editor
doing config get KEYPrint the value of a specific config key
doing config set KEY VALUESet a config key to a new value
doing config listList all current configuration values

Configuration Keys

KeyDefaultDescription
doing_file~/what_was_i_doing.mdPath to the doing file where entries are stored
current_sectionCurrentlyDefault section name for new entries
default_tags[]Tags automatically added to every new entry
templates.default(built-in)Default template for rendering entry output
editor_app(system default)Preferred editor for config edit and note editing
backup_dir(internal)Directory where undo backups are stored
autotag.rules{}Map of regex patterns to tags for automatic tagging
views{}Named view configurations for reusable display presets
budgets{}Time budgets per tag for tracking time allocation

Environment Variables

Set DOING_FILE to override the doing file path without changing your config:

sh
export DOING_FILE=~/projects/work/doing.md
doing now "Working on the project"

This takes precedence over the doing_file value in your config.

Example Config File

A practical .config/doing/config.toml:

toml
doing_file = "~/what_was_i_doing.md"
current_section = "Currently"
default_tags = ["work"]
editor_app = "nvim"
backup_dir = "~/.local/share/doing/backups"

[templates]
default = "%title (%tags) - %duration"

[autotag.rules]
"meeting|standup" = ["meeting"]
"review|PR" = ["code-review"]

[views.work]
section = "Currently"
count = 10
tags_bool = "OR"

[budgets]
meeting = "2h"
code-review = "1h"

A YAML equivalent (.doingrc):

yaml
doing_file: ~/what_was_i_doing.md
current_section: Currently
default_tags:
  - work
editor_app: nvim
backup_dir: ~/.local/share/doing/backups

templates:
  default: "%title (%tags) - %duration"

autotag:
  rules:
    "meeting|standup":
      - meeting
    "review|PR":
      - code-review

views:
  work:
    section: Currently
    count: 10
    tags_bool: OR

budgets:
  meeting: 2h
  code-review: 1h

Released under the MIT License.