2025-06-30 15:15:05 +02:00
ext
2025-06-02 09:22:45 +02:00
2025-06-30 15:15:05 +02:00
2025-06-02 09:19:28 +02:00
2025-05-22 12:58:10 +02:00
2025-06-30 12:41:53 +02:00

A fzf-based journaling, notes, and tasks application with CalDav support. If you are interested in this, then you may also be interested in the corresponding calendar application fzf-vcal.

Description and Use Case

This application allows for a keyboard-controlled maneuvering of your notes, journal entries, and tasks. These entries are stored as iCalendar files of the type VJOURNAL and VTODO.

For instance, you could use this application as a terminal-based counterpart of jtx Board in a setup with a CalDav server, such as Radicale, and a synchronization tool like vdirsyncer.

Installation

Manual

Run ./scripts/build.sh, then copy fzf-vjour to your preferred location, e.g., ~/.local/bin, and make it executable.

Requirements

This is a POSIX script with inline awk elements. Make sure you have fzf installed. I also suggest to install batcat for colorful previews.

Arch Linux

yay -S fzf-vjour-git

Configuration

This application is configured with a file located at $HOME/.config/fzf-vjour/config. The entry ROOT specifies the root directory of your journal and note entries. This directory may contain several subfolders, called collections. The entry COLLECTION_LABELS is a ;-delimited list, where each item specifies a subfolder and a label (see example below). In the application, the user sees the collection labels instead of the collection names. This is particularly useful, because some servers use randomly generated names. Finally, a third entry SYNC_CMD specifies the command to be executed for synchronizing.

Consider the following example:

ROOT=~/.journal/
COLLECTION_LABELS="745ae7a0-d723-4cd8-80c4-75f52f5b7d90=shared 👫🏼;12cacb18-d3e1-4ad4-a1d0-e5b209012e85=work   💼;"
SYNC_CMD="vdirsyncer sync journals"

Here the files are stored in ~/.journal/12cacb18-d3e1-4ad4-a1d0-e5b209012e85 (work-related entries) and ~/.journal/745ae7a0-d723-4cd8-80c4-75f52f5b7d90 (shared collection).

This configuration will work well with a vdirsyncer configuration such as

[pair journals]
a = "local"
b = "remote"
collections = ["from a", "from b"]

[storage local]
type = "filesystem"
fileext = ".ics"
path = "~/.journal"

[storage remote]
type = "caldav"
item_types = ["VJOURNAL", "VTODO"]
...

Usage

Use the default fzf keys to navigate your notes, e.g., ctrl-j and ctrl-k for going down/up in the list. In addition, there are the following keybindings:

Key Action
enter Open note/journal/task in your $EDITOR
ctrl-alt-d Delete the seleted entry
ctrl-n Make a new entry
ctrl-r Refresh the view
ctrl-s Run the synchronization command
ctrl-x Toggle task completion
alt-up Increase task priority
alt-down Decrease task priority
alt-0 Default view: Journal, notes, and open tasks
alt-1 Display journal entries
alt-2 Display notes
alt-3 Display all tasks

You may also invoke the script with --help to see further command-line options.

Limitations

Here is a list of some currently present limitations.

  • Timezone agnostic: Timezone specifications are ignored.
  • Time agnostic: We use the date portion only of date-time specifications.
  • No alarms or notifications
  • No attachments
  • No recurrences

License

This project is licensed under the MIT License.

Description
No description provided
Readme 548 KiB
Languages
Shell 57.5%
Awk 42.5%