id = "jrnl"
name = "jrnl"
homepage = "https://jrnl.sh"
description = "Collect your thoughts and notes without leaving the command line."
icon = "https://raw.githubusercontent.com/jrnl-org/jrnl/develop/docs_theme/img/favicon.svg"
executables = ["jrnl"]
[dotfiles]
paths = [
"[configHome]/jrnl/jrnl.yaml",
"~/.config/jrnl/jrnl.yaml",
]
exclude = []
secret = []
[[dotfiles.machine_lines]]
file = ["[configHome]/jrnl/jrnl.yaml", "~/.config/jrnl/jrnl.yaml"]
match = { key_path = ["journals.*.journal"] }
scope = "backup"
[commands]
format = 1
label = "Write or search journal"
description = "Add an entry with the text field, or read entries back in a chosen format. The single-dash date filters (-from, -to, -on) and encryption commands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "ref"
kind = "manual"
url = "https://jrnl.sh/en/stable/reference-command-line/"
revision = "2026-10-27"
evidence = """
usage: jrnl [--debug] [--help] [--version] [--list] [--encrypt] [--decrypt]
[--import] [-on DATE] [-today-in-history] [-month DATE]
[-n [NUMBER]] [-not [TAG]] [--edit] [--delete]
[--format TYPE] [--tags] [--short]
[--config-override CONFIG_KEY CONFIG_VALUE]
[--config-file CONFIG_FILE_PATH]
Opens the selected entries in your configured editor.
Interactively deletes selected entries. You'll be asked to confirm deletion of each entry.
Display selected entries in an alternate format.
--file FILENAME
Write output to file instead of STDOUT.
Alias for '--format tags'. Returns a list of all tags and the number of times they occur within the searched entries.
Only shows the date and titles of the searched entries.
Use the config file at CONFIG_FILE_PATH for this command invocation only.
Prints information useful for troubleshooting while `jrnl` executes.
| -n [NUMBER] | Show a maximum of NUMBER entries (note: '-n 3' and '-3' have the same effect) |
"""
[[commands.field]]
id = "text"
label = "Entry text or journal name"
description = "Words after jrnl are written as a new entry; a leading journal name selects that journal."
type = "string"
position = 0
multiple = true
sources = ["ref"]
[[commands.field]]
id = "limit"
label = "Maximum entries to show"
type = "integer"
option = ["-n"]
sources = ["ref"]
[[commands.field]]
id = "short"
label = "Dates and titles only"
type = "boolean"
option = ["--short"]
sources = ["ref"]
[[commands.field]]
id = "tags"
label = "List tags with counts"
type = "boolean"
option = ["--tags"]
sources = ["ref"]
[[commands.field]]
id = "format"
label = "Output format"
description = "Open set; see the jrnl formats page (for example json, markdown, text)."
type = "string"
option = ["--format"]
sources = ["ref"]
[[commands.field]]
id = "file"
label = "Write output to file"
type = "path"
path = { kind = "file", role = "output" }
option = ["--file"]
sources = ["ref"]
[[commands.field]]
id = "edit"
label = "Edit in editor"
type = "boolean"
option = ["--edit"]
sources = ["ref"]
[[commands.field]]
id = "delete"
label = "Delete entries (interactive)"
type = "boolean"
option = ["--delete"]
effect = "delete"
sources = ["ref"]
[[commands.field]]
id = "config_file"
label = "Config file"
type = "path"
path = { kind = "file", role = "input" }
option = ["--config-file"]
sources = ["ref"]
[[commands.field]]
id = "debug"
label = "Debug output"
type = "boolean"
option = ["--debug"]
sources = ["ref"]
[[commands.task]]
id = "write"
label = "Write an entry"
fields = ["text"]
required = ["text"]
[[commands.task]]
id = "recent"
label = "Show recent entries"
fields = ["limit", "short"]
required = ["limit"]
[[commands.task]]
id = "tag_list"
label = "List tags"
fields = ["tags"]
required = ["tags"]
set = { tags = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["text", "limit", "short", "tags", "format", "file"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["edit", "delete", "config_file", "debug"]