jrnl is a cli tool for writing a journal. It is not intended to be another zettelkasten application or a note taking app, although it uses the power commonmark markdown and thus could be used as a zettelkasten.
It strives to have no dependencies, just pure standard stable rust and to be a single executable without clutter.
This is why the manual and the default config are hardcoded into the executable.
Caution
This is alpha state software within its implementation phase. Bugs are imminent and features will not work or could create unreadable files. Sometimes things are simply not implemented. I strive to notify you about that when you use that feature or configuration entry.
There's no executable download available as of yet. You'll have to compile it yourself for the time being.
Be a viable open source rust written digital journal writing app. Using plain text files.
Replace all valuable zettelkasten or note taking apps.
You'll need a working rust installation. Unzip the archive. Then cd into the directory (e.g. v0.4.5-alpha) and run the following command in your CLI:
cargo build --release
Copy the executable file from the release target folder to a folder of your choice. On POSIX-compliant operating systems, chmod +x jrnl is required in the release target folder or in the folder you've just copied the executable to. This is where your journal files and/or folder structures are created.
Basically like this:
jrnl today "It was a productive day without any interruptions."
As you can see in its simplest form jrnl will generate a commonmark markdown file with a default header. Your can change this with a template of your own.
jrnl allows you to write a journal entry with different arguments ahead.
init
Creates the default config file jrnl.cfg in the same directory as the program itself is located at unless you provide the following:
cfg path-to-config/my.cfg
Important
Has to be the first argument. Does not work with journals, editor and template configuration entries.
set
Lets you change the value-key pair in the config file. Will change the
default config unless provided with cfg path-to-config/my.cfg.
Changing the encryption in my.cfg located at ~/jrnl would look like
this: jrnl set enrcyption=enabled cfg ~/jrnl/my.cfg
.
It's possible to change multiple config entries separating them with a
comma ',' (e.g. encryption=enabled,mode=folders).
Important
Has to be the first argument.
cfg path-to-config/my.cfg
Loads your config file. If omitted jrnl defaults to jrnl.cfg in the directory where jrnl executable lies. If jrnl.cfg does not exist or can not be read it will stop execution and prompt you. it will be created for you at the first start with standard values.
yesterday
Will use the date and time of the day before for the creation of the journal entry.
today
Will use the current date and time for the creation of the journal entry. The argument 'today' can be omitted. jrnl will assume you write your entry for today.
tomorrow
Will use the date and time of the day after for the creation of the journal entry.
specific journal name
Will write to the corresponding journal. jrnl work today [...]
add
Using 'add' will alow you to add to an already written entry.
For example jrnl add ~/jrnl/2021/05/05.md
or
jrnl add ~/jrnl/2021-05-05.md
will let you add some text to
your entry and updating the time of change in the header of the opened
file. With jrnl add today
(today can be omitted) you could add to the
current entry. jrnl add tomorrow
and jrnl add yesterday
will work also.
If you omit the file the current entry will be modified and the
provided String will be added as a new line.
For example ~/jrnl/2021/05/05.md
when you add something and today would
be the 5th May of 2023.
@ (tags)
Using @ in a double quotation mark will overwrite the default tag in the default header and in the personalized template (if implemented). jrnl today "@Daily Report, Rust, NeoVIM, Lapce" "It's fun!" will add the tags Daily Report, Rust, NeoVIM and Lapce to your journal entry.
The configuration file is a simple key-value store. You can comment with a '#' as first character per line. Currently there is not much to set.
journals
Here you define the journals (path-to-and-name-of-the-journal) in a comma ',' separated list. E.g. journals=default, /home/pale-rider/jrnl/work,/home/pale-rider/jrnl/private. The last entry of the above given path is the journal name which can be an cli argument as mentioned above. Default writes to the directory the jrnl executable lies in. The default is 'default'. You should change this.
mode
Can be either mode=folders
or mode=files
.
The default is mode=files
.
Mode 'folders' will generate a journal entry like this:
~/jrnl/2021/05/05.md
.
Mode 'files' will generate a journal entry like this:
~/jrnl/2021-05-05.md
.
encryption
This enables encryption with encryption=enabled
for your notes.
The default is encryption=disabled
.
Maybe you should change this, if you plan to store them on someone
else' computer.
editor
This gives you the possibility to use an external editor of your choice
for finishing your journal entry. For example editor=nvim
will start
NeoVIM with the freshly generated file. The default is editor=none
.
template
You have the option to set up a template commonmark markdown file for
your journal entries with e.g. template=~/jrnl/my-jrnl-entry.md
.
By default it is set to template=none
.
stardate
When enabled with stardate=enabled
it will generate a stardate to
display in the header of the journal entry.
Default is stardate=disabled
.
editing_mark
With editing_mark=enabled
every editing through jrnl add
is traceable
because it will add the timestamp above the added lines.
Default is editing_mark=disabled
.
Tip
The training you should finish first. Shortcuts the path to the dark side they are.