Files
fzf-vjour/README.md
2025-05-23 17:01:03 +02:00

3.3 KiB

A fzf-based journaling, notes, and tasks application with CalDav support.

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

Just copy the file to your preferred location, e.g., ~/.local/bin, and make it executable.

Requirements

This is a POSIX script with inline python3 elements. Make sure you have fzf, batcat, jq, and yq installed. For the python3 code, we also require icalendar.

Configuration

This application is configured with a YAML file located at $HOME/.config/fzf-vjour/config.yaml. The entry datadir specifies the root directory of your journal and note entries. This directory may contain several subfolders, called collections. The entry collections is a list, where each item specifies a subfolder, given by name, and a label, given by label (any string free of white spaces). 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:

datadir: ~/.journal
sync_cmd: vdirsyncer sync journals
collections:
  - name: 12cacb18-d3e1-4ad4-a1d0-e5b209012e85
    label: work:💼
  - name: 745ae7a0-d723-4cd8-80c4-75f52f5b7d90
    label: priv:🏡

Here the files are stored in ~/.journal/12cacb18-d3e1-4ad4-a1d0-e5b209012e85 (work-related entries) and ~/.journal/745ae7a0-d723-4cd8-80c4-75f52f5b7d90 (personal 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-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.

License

This project is licensed under the MIT License.