1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# The default root path of your notes to open on launch
# Can be overwritten by an explicit positional argument.
# vault_path="~/MyNotes"
# The file types to consider as 'notes'.
# See https://docs.rs/ignore/latest/src/ignore/default_types.rs.html for a complete list of possible types.
# Note that your files still need to contain valid markdown or at least plaintext to be parsed, even with a differing extension.
= ["markdown"]
# The default extension to append to newly created files.
= "md"
# By default, rucola re-indexes your entire vault on every launch.
# When this option is turned on, rucola will save a cache of its internal index to a file when you quit the program and re-load it when you start the program.
# The index file is saved in `<vault_path>/rucola_index.toml`.
#
# WARNING 1: Quitting rucola through an external method (e.g. terminating the process, closing the terminal window) will result in your index not being saved. You index will be out of sync on the next launch.
#
# WARNING 2: With this option turned on, rucola will not notice any changes to your vault you make while it is closed (changing files, creating files, deleting files). Doing so will result in your index being out of sync on the next launch.
#
# WARNING 3: Warning 2 also means that when using rucola on multiple machines, you should transfer your cache file every time. Otherwise, your index will be out of sync whenever you switch machines.
#
# If you index is out sync, you can fix it by deleting any existing index cache files and re-launching rucola, triggering a re-index.
= false
# The default look of the application.
# Two default themes (for light and dark terminal setups) are provided.
# You can create additional ones by creating a TOML file in your rucola config folder and linking it here by file name.
= "default_dark"
# theme = "default_light"
# The statistics to show on the main select screen.
# stats_show = "Both" # Always show both local and global stats.
# stats_show = "Local" # Always show only local stats.
= "Relevant" # Show global stats if there is no filter applied and local if there is.
# The columns to show in the select screen and the names that are displayed.
# The first entry is the name to be displayed and also determines the size of the column except for the 'name' column, which will always fill the rest of the screen.
# The second entry is the type of column. Valid options are "Shuffle", "Name", "Words", "Chars", "GlobalOutLinks", "LocalOutLinks", "GlobalInLinks", "LocalInLinks", "Score", "Broken", "LastModified".
# The 'Shuffle' option does not display anything and only exist to be a sorting mode later.
# The 'Score' option will display '0' unless a filter is active.
# Columns can be made wider by adding spaces to their names. In particular, the "LastModified" column will require 4 characters to show year, 10 to show year-month-day and 16 characters to also show the time of the last modification.
# The current default is the same look as before the 0.9.0 update:
= [
["Name", "Name"], #
[" Words", "Words"], #
[" Chars", "Chars"], #
["GlobalOut", "GlobalOutLinks"], #
["LocalOut", "LocalOutLinks"], #
["GlobalIn", "GlobalInLinks"], #
["LocalIn", "LocalInLinks"], #
]
# Two more examples are given below.
# Full data:
# select_columns = [
# ["Name", "Name"], #
# ["Wor", "Words"], #
# ["Cha", "Chars"], #
# ["GOu", "GlobalOutLinks"], #
# ["LOu", "LocalOutLinks"], #
# ["GIn", "GlobalInLinks"], #
# ["LIn", "LocalInLinks"], #
# ["Bro", "Broken"], #
# [" Last Modified", "LastModified"], #
# ["Sco", "Score"], #
# ]
# Minimal setup showing only year of last modification, name and characters
# select_columns = [
# ["LMY ", "LastModified"], #
# ["Name", "Name"], #
# [" CHA", "Chars"], #
# ]
# This option controls how tags are matched in the filter menu.
# Options:
# - "Exact": Only searches for exact matches of tags, i.e. `#diffgeo` will only find notes tagged as `#diffgeo`, not notes tagged with `#diffgeometry`.
# Nested tags, e.g. `#diffgeo/splines`, are still respected and found.
# - "Prefix": Also finds notes that have tags such that the specified tag is a prefix of the tag, i.e. `#diffgeo` will both find notes tagged as `#diffgeo` and `#diffgeometry`.
# Nested tags, e.g. `#diffgeo/splines`, are still respected and found.
= "Exact"
# Default column to sort by for notes on the main select screen.
# Available options: "Shuffle", "Name", "Words", "Chars", "GlobalOutLinks", "LocalOutLinks",
# "GlobalInLinks", "LocalInLinks", "Score", "Broken", "LastModified".
# The "Score"-Option generally only makes sense with a filter applied and should not be chosen.
= "Shuffle"
# Default sorting direction (true for ascending, false for descending)
= true
# The default editor to use for editing notes.
# Can be called by pressing `e` or `E`/`Shift + e` while in the display or select screen.
# The first element is the command, the others will be used as positional arguments.
# An element "%p" will be replaced by the file path of the note when calling this command.
# Comment out / leave unset to always use your system's default editor or $EDITOR environment variable.
# Example: Opening the note in helix. Depending on your installation, the executable for helix will be called 'hx' or 'helix'.
# editor=["hx", "%p"]
# editor=["helix", "%p"]
# Main viewer to inspect rendered notes.
# Can be called by pressing `v` while in the display or select screen.
# The first element is the command, the others will be used as positional arguments.
# Splitting arguments like this is _not_ optional - `["firefox -P Notes", "%p"]` will not work while `["firefox", "-P", "Notes", "%p"]` will.
# When calling this command, An element "%p" will be replaced by the file path of the note's HTML or Markdown file, depending on the filetype specified down below.
# If none is given, defaults to system default for the file type specified below.
# Default: Firefox Browser
= ["firefox", "%p"]
# Preferred file type of the main viewer.
# Possible values are "Html" and "Markdown", if none is given, "Html" is assumed.
= "Html"
# Alternative viewer to inspect rendered notes.
# Can be called by pressing `V`/`Shift + v` while in the display or select screen.
# The first element is the command, the others will be used as positional arguments.
# Splitting arguments like this is _not_ optional - `["glow --tui", "%p"]` will not work while `["glow", "--tui", "%p"]` will.
# When calling this command, An element "%p" will be replaced by the file path of the note's HTML or Markdown file, depending on the filetype specified down below.
# If none is given, defaults to system default for the file type specified below.
# Default: Firefox Browser
# secondary_viewer = ["glow", "--tui", "%p"]
# Preferred file type of the alternative viewer.
# Possible values are "Html" and "Markdown".
# If now value is given, defaults to the value of primary_viewer_type.
# If that is also not given, defaults to "Html".
# secondary_viewer_type = "Html"
# When enabled, HTML versions of your files will be created and updated on launch and continuously in the background. Set this to false if you do not want to use the view-as-HTML-feature.
= true
# The name of the css file to use when creating HTML files. Must be located in your rucola config folder.
= "default_dark"
# Any further HTML to prepend to created HTML files, for example special Javascript that you want included.
= """
"""
# Whether to include KaTeX headers in files in which math (delimited by single or double $-signs) was detected, causing this math to be rendered as LaTeX.
= true
# Simple LaTeX macro system. See [KaTeX options](https://katex.org/docs/options.html) for details, only as TOML. Example: Typing $\field{R}$ will be transformed into $\mathbb{R}$ before being compiled with KaTeX.
[]
= '\mathbb'
= '\mathfrak'
# WARNING:
# If you want to put further settings below this one, it may be better to use an inline table for `math_replacements`.
# This table might not be recognized by some TOML editors or language servers, but will work with rucola.
# math_replacements = {
# '\field' = '\mathbb',
# '\liealg' = '\mathfrak',
# }
# Configuration section for the daily diary feature.
[]
# This option can be used to turn on the diary feature, enabling an additional keybinding for creating and editing the daily diary note.
= false
# The initial content for every newly created diary note
= """
#diary
"""
# The format of the daily diary note title.
# Uses the formatting options from the chrono library available here: https://docs.rs/chrono/latest/chrono/format/strftime/index.html
# It is also possible to create the note in a subfolder or use a custom file extension. If no file extension is given, the `default_extension` from above will be used.
# When using a date format containing `.`, it may be necessary to manually re-add the extension.
# Examples:
# title_format = "Diary %d %B, %Y" # Diary 19 May, 2026
# title_format = "%Y-%m-%d" # 2026-05-19
# title_format = "daily-note-%d.%m.%Y.md" # Daily note for 19.05.2026
= "%F" # 2026-05-19
# title_format = "%F.txt" # 2026-05-19 with file extension `.txt`
# title_format = "diary/%F" # 2026-05-19 in subfolder diary
# WARNING:
# Putting further configuration options below this one will have them registered in the [diary] table, which may be unintended.