# Advanced Usage

## Configuration File

`jrnl` has a wide variety of options that can be customized through the config file, including templates, formats, multiple journals, and more. See the configuration file reference for details or read on for some common use cases.

### Multiple journal files

You can configure `jrnl`to use with multiple journals (eg. `private` and `work`) by defining more journals in your config file, for example:

    journals:
      default: ~/journal.txt
      work: ~/work.txt

The `default` journal gets created the first time you start `jrnl` Now you can access the `work` journal by using `jrnl work` instead of `jrnl`, eg.

    jrnl work at 10am: Meeting with @Steve
    jrnl work -n 3

will both use `~/work.txt`, while `jrnl -n 3` will display the last three entries from `~/journal.txt` (and so does `jrnl default -n 3`).

You can also override the default options for each individual journal. If your `jrnl.yaml` looks like this:

    encrypt: false
    journals:
      default: ~/journal.txt
      work:
        journal: ~/work.txt
        encrypt: true
      food: ~/my_recipes.txt

Your `default` and your `food` journals won't be encrypted, however your `work` journal will!

You can override all options that are present at the top level of `jrnl.yaml`, just make sure that at the very least you specify a `journal: ...` key that points to the journal file of that journal.

Consider the following example configuration

    editor: vi -c startinsert
    journals:
      default: ~/journal.txt
      work:
        journal: ~/work.txt
        encrypt: true
        display_format: json
        editor: code -rw
      food:
        display_format: markdown
        journal: ~/recipes.txt

The `work` journal is encrypted, prints to `json` by default, and is edited using an existing window of VSCode. Similarly, the `food` journal prints to markdown by default, but uses all the other defaults.

### Modifying Configurations from the Command line

You can override a configuration field for the current instance of `jrnl` using `--config-override CONFIG_KEY CONFIG_VALUE` where `CONFIG_KEY` is a valid configuration field, specified in dot notation and `CONFIG_VALUE` is the (valid) desired override value. The dot notation can be used to change config keys within other keys, such as `colors.title` for the `title` key within the `colors` key.

You can specify multiple overrides as multiple calls to `--config-override`.

Note

These overrides allow you to modify any field of your jrnl configuration. We trust that you know what you are doing.

#### Examples:

    # Create an entry using the `stdin` prompt, for rapid logging
    jrnl --config-override editor ""

    # Populate a project's log
    jrnl --config-override journals.todo "$(git rev-parse --show-toplevel)/todo.txt" todo find my towel

    # Pass multiple overrides
    jrnl --config-override display_format fancy --config-override linewrap 20 \
    --config-override colors.title green

### Using an alternate config

You can specify an alternate configuration file for the current instance of `jrnl` using `--config-file CONFIG_FILE_PATH` where `CONFIG_FILE_PATH` is a path to an alternate `jrnl` configuration file.

#### Examples:

    # Use personalised configuration file for personal journal entries
    jrnl --config-file ~/foo/jrnl/personal-config.yaml

    # Use alternate configuration file for work-related entries
    jrnl --config-file ~/foo/jrnl/work-config.yaml

    # Use default configuration file (created on first run)
    jrnl

GitHub « Previous Next »