+.. _notmuch-config(1):
+
==============
notmuch-config
==============
**notmuch** **config** **get** <*section*>.<*item*>
-**notmuch** **config** **set** <*section*>.<*item*> [*value* ...]
+**notmuch** **config** **set** [--database] <*section*>.<*item*> [*value* ...]
**notmuch** **config** **list**
The **config** command can be used to get or set settings in the notmuch
configuration file and corresponding database.
-**get**
- The value of the specified configuration item is printed to
- stdout. If the item has multiple values (it is a list), each value
- is separated by a newline character.
+.. program:: config
-**set**
- The specified configuration item is set to the given value. To
- specify a multiple-value item (a list), provide each value as a
- separate command-line argument.
+.. option:: get
- If no values are provided, the specified configuration item will
- be removed from the configuration file.
+ The value of the specified configuration item is printed to
+ stdout. If the item has multiple values (it is a list), each value
+ is separated by a newline character.
-**list**
- Every configuration item is printed to stdout, each on a separate
- line of the form::
+.. option:: set
- section.item=value
+ The specified configuration item is set to the given value. To
+ specify a multiple-value item (a list), provide each value as a
+ separate command-line argument.
- No additional whitespace surrounds the dot or equals sign
- characters. In a multiple-value item (a list), the values are
- separated by semicolon characters.
+ If no values are provided, the specified configuration item will
+ be removed from the configuration file.
-The available configuration items are described below.
+ With the `--database` option, updates configuration metadata
+ stored in the database, rather than the default (text)
+ configuration file.
-**database.path**
- The top-level directory where your mail currently exists and to
- where mail will be delivered in the future. Files should be
- individual email messages. Notmuch will store its database within
- a sub-directory of the path configured here named ``.notmuch``.
+.. option:: list
- Default: ``$MAILDIR`` variable if set, otherwise ``$HOME/mail``.
+ Every configuration item is printed to stdout, each on a separate
+ line of the form::
-**database.hook_dir**
+ section.item=value
- Directory containing hooks run by notmuch commands. See
- **notmuch-hooks(5)**.
+ No additional whitespace surrounds the dot or equals sign
+ characters. In a multiple-value item (a list), the values are
+ separated by semicolon characters.
-**user.name**
- Your full name.
+The available configuration items are described below. Non-absolute
+paths are presumed relative to `$HOME` for items in section
+**database**.
- Default: ``$NAME`` variable if set, otherwise read from
- ``/etc/passwd``.
+.. nmconfig:: built_with.<name>
-**user.primary\_email**
- Your primary email address.
+ Compile time feature <name>. Current possibilities include
+ "retry_lock" (configure option, included by default).
+ (since notmuch 0.30, "compact" and "field_processor" are
+ always included.)
- Default: ``$EMAIL`` variable if set, otherwise constructed from
- the username and hostname of the current machine.
+.. nmconfig:: database.autocommit
-**user.other\_email**
- A list of other email addresses at which you receive email.
+ How often to commit transactions to disk. `0` means wait until
+ command completes, otherwise an integer `n` specifies to commit to
+ disk after every `n` completed transactions.
- Default: not set.
+ History: this configuration value was introduced in notmuch 0.33.
-**new.tags**
- A list of tags that will be added to all messages incorporated by
- **notmuch new**.
+.. nmconfig:: database.backup_dir
- Default: ``unread;inbox``.
+ Directory to store tag dumps when upgrading database.
-**new.ignore**
- A list to specify files and directories that will not be searched
- for messages by **notmuch new**. Each entry in the list is either:
+ History: this configuration value was introduced in notmuch 0.32.
- A file or a directory name, without path, that will be ignored,
- regardless of the location in the mail store directory hierarchy.
+ Default: A sibling directory of the Xapian database called
+ `backups`.
- Or:
+.. nmconfig:: database.hook_dir
- A regular expression delimited with // that will be matched
- against the path of the file or directory relative to the database
- path. Matching files and directories will be ignored. The
- beginning and end of string must be explicitly anchored. For
- example, /.*/foo$/ would match "bar/foo" and "bar/baz/foo", but
- not "foo" or "bar/foobar".
+ Directory containing hooks run by notmuch commands. See
+ :any:`notmuch-hooks(5)`.
- Default: empty list.
+ History: this configuration value was introduced in notmuch 0.32.
-**search.exclude\_tags**
- A list of tags that will be excluded from search results by
- default. Using an excluded tag in a query will override that
- exclusion.
+ Default: See HOOKS, below.
- Default: empty list. Note that **notmuch-setup(1)** puts
- ``deleted;spam`` here when creating new configuration file.
+.. nmconfig:: database.mail_root
-**maildir.synchronize\_flags**
- If true, then the following maildir flags (in message filenames)
- will be synchronized with the corresponding notmuch tags:
+ The top-level directory where your mail currently exists and to
+ where mail will be delivered in the future. Files should be
+ individual email messages.
- +--------+-----------------------------------------------+
- | Flag | Tag |
- +========+===============================================+
- | D | draft |
- +--------+-----------------------------------------------+
- | F | flagged |
- +--------+-----------------------------------------------+
- | P | passed |
- +--------+-----------------------------------------------+
- | R | replied |
- +--------+-----------------------------------------------+
- | S | unread (added when 'S' flag is not present) |
- +--------+-----------------------------------------------+
+ History: this configuration value was introduced in notmuch 0.32.
- The **notmuch new** command will notice flag changes in filenames
- and update tags, while the **notmuch tag** and **notmuch restore**
- commands will notice tag changes and update flags in filenames.
+ Default: For compatibility with older configurations, the value of
+ database.path is used if :nmconfig:`database.mail_root` is unset.
- If there have been any changes in the maildir (new messages added,
- old ones removed or renamed, maildir flags changed, etc.), it is
- advisable to run **notmuch new** before **notmuch tag** or
- **notmuch restore** commands to ensure the tag changes are
- properly synchronized to the maildir flags, as the commands expect
- the database and maildir to be in sync.
+.. nmconfig:: database.path
- Default: ``true``.
+ Notmuch will store its database here, (in
+ sub-directory named ``.notmuch`` if :nmconfig:`database.mail_root`
+ is unset).
+
+ Default: see :ref:`database`
+
+.. nmconfig:: index.decrypt
-**index.decrypt**
Policy for decrypting encrypted messages during indexing. Must be
one of: ``false``, ``auto``, ``nostash``, or ``true``.
``nostash`` is the same as ``true`` except that it will not stash
newly-discovered session keys in the database.
- From the command line (i.e. during **notmuch-new(1)**,
- **notmuch-insert(1)**, or **notmuch-reindex(1)**), the user can
+ From the command line (i.e. during :any:`notmuch-new(1)`,
+ :any:`notmuch-insert(1)`, or :any:`notmuch-reindex(1)`), the user can
override the database's stored decryption policy with the
``--decrypt=`` option.
Stashed session keys are kept in the database as properties
associated with the message. See ``session-key`` in
- **notmuch-properties(7)** for more details about how they can be
+ :any:`notmuch-properties(7)` for more details about how they can be
useful.
Be aware that the notmuch index is likely sufficient (and a
Default: ``auto``.
-**index.header.<prefix>**
+.. _index.header:
+
+.. nmconfig:: index.header.<prefix>
+
Define the query prefix <prefix>, based on a mail header. For
example ``index.header.List=List-Id`` will add a probabilistic
prefix ``List:`` that searches the ``List-Id`` field. User
defined prefixes must not start with 'a'...'z'; in particular
adding a prefix with same name as a predefined prefix is not
- supported. See **notmuch-search-terms(7)** for a list of existing
+ supported. See :any:`notmuch-search-terms(7)` for a list of existing
prefixes, and an explanation of probabilistic prefixes.
-**built_with.<name>**
- Compile time feature <name>. Current possibilities include
- "retry_lock" (configure option, included by default).
- (since notmuch 0.30, "compact" and "field_processor" are
- always included.)
+.. nmconfig:: maildir.synchronize_flags
+
+ If true, then the following maildir flags (in message filenames)
+ will be synchronized with the corresponding notmuch tags:
+
+ +--------+-----------------------------------------------+
+ | Flag | Tag |
+ +========+===============================================+
+ | D | draft |
+ +--------+-----------------------------------------------+
+ | F | flagged |
+ +--------+-----------------------------------------------+
+ | P | passed |
+ +--------+-----------------------------------------------+
+ | R | replied |
+ +--------+-----------------------------------------------+
+ | S | unread (added when 'S' flag is not present) |
+ +--------+-----------------------------------------------+
+
+ The :any:`notmuch-new(1)` command will notice flag changes in
+ filenames and update tags, while the :any:`notmuch-tag(1)` and
+ :any:`notmuch-restore(1)` commands will notice tag changes and
+ update flags in filenames.
+
+ If there have been any changes in the maildir (new messages added,
+ old ones removed or renamed, maildir flags changed, etc.), it is
+ advisable to run :any:`notmuch-new(1)` before
+ :any:`notmuch-tag(1)` or :any:`notmuch-restore(1)` commands to
+ ensure the tag changes are properly synchronized to the maildir
+ flags, as the commands expect the database and maildir to be in
+ sync.
+
+ Default: ``true``.
+
+.. nmconfig:: new.ignore
+
+ A list to specify files and directories that will not be searched
+ for messages by :any:`notmuch-new(1)`. Each entry in the list is either:
+
+ A file or a directory name, without path, that will be ignored,
+ regardless of the location in the mail store directory hierarchy.
+
+ Or:
+
+ A regular expression delimited with // that will be matched
+ against the path of the file or directory relative to the database
+ path. Matching files and directories will be ignored. The
+ beginning and end of string must be explicitly anchored. For
+ example, /.*/foo$/ would match "bar/foo" and "bar/baz/foo", but
+ not "foo" or "bar/foobar".
+
+ Default: empty list.
+
+.. nmconfig:: new.tags
+
+ A list of tags that will be added to all messages incorporated by
+ **notmuch new**.
+
+ Default: ``unread;inbox``.
+
+.. nmconfig:: query.<name>
-**query.<name>**
Expansion for named query called <name>. See
- **notmuch-search-terms(7)** for more information about named
+ :any:`notmuch-search-terms(7)` for more information about named
queries.
-ENVIRONMENT
-===========
+.. nmconfig:: search.exclude_tags
-The following environment variables can be used to control the behavior
-of notmuch.
+ A list of tags that will be excluded from search results by
+ default. Using an excluded tag in a query will override that
+ exclusion.
-**NOTMUCH\_CONFIG**
- Specifies the location of the notmuch configuration file.
+ Default: empty list. Note that :any:`notmuch-setup(1)` puts
+ ``deleted;spam`` here when creating new configuration file.
-**NOTMUCH_PROFILE**
- Selects among notmuch configurations.
+.. nmconfig:: show.extra_headers
+
+ By default :any:`notmuch-show(1)` includes the following headers
+ in structured output if they are present in the message:
+ `Subject`, `From`, `To`, `Cc`, `Bcc`, `Reply-To`, `Date`. This
+ option allows the specification of a list of further
+ headers to output.
+
+ History: This configuration value was introduced in notmuch 0.35.
+
+ Default: empty list.
+
+.. nmconfig:: squery.<name>
+
+ Expansion for named query called <name>, using s-expression syntax. See
+ :any:`notmuch-sexp-queries(7)` for more information about s-expression
+ queries.
+
+.. nmconfig:: user.name
+
+ Your full name.
+
+ Default: ``$NAME`` variable if set, otherwise read from
+ ``/etc/passwd``.
+
+.. nmconfig:: user.other_email
+
+ A list of other email addresses at which you receive email
+ (see also, :nmconfig:`user.primary_email`)
+
+ Default: not set.
+
+.. nmconfig:: user.primary_email
+
+ Your primary email address.
+
+ Default: ``$EMAIL`` variable if set, otherwise constructed from
+ the username and hostname of the current machine.
FILES
=====
+.. _config_search:
+
CONFIGURATION
-------------
-If ``NOTMUCH_CONFIG`` is unset, notmuch tries (in order)
+Notmuch configuration file search order:
+
+1. File specified by :option:`notmuch --config` global option; see
+ :any:`notmuch(1)`.
+
+2. File specified by :envvar:`NOTMUCH_CONFIG` environment variable.
+
+3. ``$XDG_CONFIG_HOME/notmuch/<profile>/config`` where ``<profile>``
+ is defined by :envvar:`NOTMUCH_PROFILE` environment variable if
+ set, ``$XDG_CONFIG_HOME/notmuch/default/config`` otherwise.
+
+4. ``$HOME/.notmuch-config.<profile>`` where ``<profile>`` is defined
+ by :envvar:`NOTMUCH_PROFILE` environment variable if set,
+ ``$HOME/.notmuch-config`` otherwise.
-- ``$XDG_CONFIG_HOME/notmuch/<profile>/config`` where ``<profile>`` is
- defined by ``$NOTMUCH_PROFILE`` or "default"
-- ``${HOME}/.notmuch-config<profile>`` where ``<profile>`` is
- ``.$NOTMUCH_PROFILE`` or ""
+.. _database:
-Hooks
+DATABASE LOCATION
+-----------------
+
+Notmuch database search order:
+
+1. Directory specified by :envvar:`NOTMUCH_DATABASE` environment variable.
+
+2. Directory specified by config key ``database.path``.
+
+3. ``$XDG_DATA_HOME/notmuch/<profile>`` where ``<profile>``
+ is defined by :envvar:`NOTMUCH_PROFILE` environment variable if
+ set, ``$XDG_DATA_HOME/notmuch/default`` otherwise.
+
+4. Directory specified by :envvar:`MAILDIR` environment variable.
+
+5. ``$HOME/mail``
+
+HOOKS
-----
-If ``database.hook_dir`` is unset, notmuch tries (in order)
+Notmuch hook directory search order:
+
+1. Directory specified by ``database.hook_dir`` configuration option.
+
+2. ``$XDG_CONFIG_HOME/notmuch/<profile>/hooks`` where ``<profile>``
+ is defined by :envvar:`NOTMUCH_PROFILE` environment variable if
+ set, ``$XDG_CONFIG_HOME/notmuch/default/hooks`` otherwise.
-- ``$XDG_CONFIG_HOME/notmuch/<profile>/hooks`` where ``<profile>`` is
- defined by ``$NOTMUCH_PROFILE`` or "default"
-- ``<database.path>/.notmuch/hooks``
+3. ``<database.path>/.notmuch/hooks``
SEE ALSO
========
-**notmuch(1)**,
-**notmuch-count(1)**,
-**notmuch-dump(1)**,
-**notmuch-hooks(5)**,
-**notmuch-insert(1)**,
-**notmuch-new(1)**,
-**notmuch-reply(1)**,
-**notmuch-restore(1)**,
-**notmuch-search(1)**,
-**notmuch-search-terms(7)**,
-**notmuch-properties(7)**,
-**notmuch-show(1)**,
-**notmuch-tag(1)**
+:any:`notmuch(1)`,
+:any:`notmuch-count(1)`,
+:any:`notmuch-dump(1)`,
+:any:`notmuch-hooks(5)`,
+:any:`notmuch-insert(1)`,
+:any:`notmuch-new(1)`,
+:any:`notmuch-properties(7)`,
+:any:`notmuch-reply(1)`,
+:any:`notmuch-restore(1)`,
+:any:`notmuch-search(1)`,
+:any:`notmuch-search-terms(7)`,
+:any:`notmuch-show(1)`,
+:any:`notmuch-tag(1)`