jrnlc is a opinionated command line application to take notes likes a journal similar to jrnl. You can take notes by entering them on the command line or providing them from a file to jrnlc's standard input. It supports full encryption of the journal, so that your notes remain secret.
A more detailed description of jrnlc and its usage patters are shown in the man page.
Create a new journal entry on the command line. End it with Ctrl+d on a blank line.
$ jrnlc
[One title line, one blank line, then the body. End with ^D on a blank line]
test title line
and here's the content
Show the last two journal entries:
$ jrnlc -n 2
[2021-12-11 15:09] Vel ut dolorem earum ratione.
Id dolorem ducimus quis consectetur corrupti vitae.
Modi corrupti incidunt repellat magni et nihil.
Ea similique qui commodi possimus est.
[2021-12-11 15:32] test title line
and here's the content
Create a new journal entry from a file. This way you can create your entry in your text editor of choice and simply import it into jrnlc.
$ cat sample_entry.txt
Vel ut dolorem earum ratione.
Id dolorem ducimus quis consectetur corrupti vitae.
Modi corrupti incidunt repellat magni et nihil.
Ea similique qui commodi possimus est.
$ jrnlc < sample_entry.txt
[One title line, one blank line, then the body. End with ^D on a blank line]
$
Encrypt the journal using a password. Choose a good and strong password and remember it well (or use a password manager).
$ jrnlc -e
Encrypting journal...
Enter Password:
Enter Password again:
jrnlc is written in C and known to work on the operating systems listed in the table below. To compile it you need the following things:
- A recent C compiler (tested with both clang >= 11 and GCC >= 8)
- make (tested with both BSD and GNU make)
- libsodium (tested with 1.0.18)
- The JSON-C library >= Version 13
Install the dependencies as follows:
Operating System | Commands and Notes |
---|---|
Arch Linux | pacman -Syu gcc make json-c libsodium |
Debian Linux | apt install libsodium-dev libjson-c-dev |
DragonFly BSD | pkg install libsodium json-c |
Fedora Linux | dnf install libsodium-devel json-c-devel |
FreeBSD | pkg install libsodium json-c |
macOS | brew install libsodium json-c |
NetBSD | pkgin install pkg-config libsodium json-c |
OpenBSD | pkg_add libsodium json-c |
Ubuntu Linux | apt install libsodium-dev libjson-c-dev |
Void Linux | xbps-install gcc make libsodium-devel json-c-devel |
Windows | There is no native version, just use WSL |
If your operating system does not have pkg-config
installed by default, you have to install it as well.
By default, the Makefile
uses pkg-config
to look for external includes and libraries. If your distribution uses special path, you have to modify the Makefile accordingly.
Compile and install with the following commands:
$ make
# make install
By default, jrnlc stores your journal as plain text JSON file in either $HOME/.config/jrnlc
or $XDG_CONFIG_HOME/jrnlc
. Using the -e
option, jrnlc will encrypt your journal. All needed cryptographic material is stored in key.json
in the above mentioned directory. If you loose or modify this file you'll never be able to decrypt your journal again! If you no longer want your journal to be encrypted, you can decrypt it and save it as plain text with the -d
option.
Using the -B
option, jrnlc will print an unencrypted JSON copy of your journal to stderr
. Do this regularly and use other means (GPG, openssl) to protect the backup.
jrnlc encrypts your journal using libsodium and the XSalsa20 cipher with a random nonce. The cipher uses a completely random symmetric key generated with libsodium's crypto_secretbox_keygen()
which itself takes care that enough good entropy is available. This key is then encrypted using your password, so be sure to take a pick a strong one. The weaker your password is, the faster an attacker could brute force it.
There is already jrnl, why should I use jrnlc? I myself used jrnl for the last years and it's a great piece of software. I just grew tired of fiddling around with Python and dependency upgrades over time, so I wrote jrnlc. Further, jrnl has a lot of features I don't need.
OK, how can I switch from jrnl to jrnlc? Just export your journal with jrnl --format json
and copy it to the location of your journal.json
. jrnlc will automatically import the file on the next start.
I forgot my password/messed up with the key.json file. Can you decrypt my journal for me? Sorry, no. That's how cryptography works. If you don't have a plain text backup around, your data is lost forever.
jrnl is written by Matthias Schmidt and is licensed under the ISC license. It includes some code from OpenBSD, the license and authors can be seen in the source code files.