First version of README
Minor improvements Minor improvement Minor improvement
This commit is contained in:
76
README.md
76
README.md
@@ -1 +1,75 @@
|
|||||||
A `fzf`-based **journaling and notes** application with WebDav support.
|
A [fzf](https://github.com/junegunn/fzf)-based **journaling and notes** application with CalDav support.
|
||||||
|
|
||||||
|
Description and Use Case
|
||||||
|
------------------------
|
||||||
|
This application allows for a keyboard-controlled maneuvering of your notes and journal entries.
|
||||||
|
A journal entry is nothing more than a note associated with a specific date.
|
||||||
|
These entries are stored as [iCalendar](https://datatracker.ietf.org/doc/html/rfc5545) files of the type `VJOURNAL`.
|
||||||
|
|
||||||
|
For instance, you could use this application as a minimalistic terminal-based counterpart of [jtx Board](https://jtx.techbee.at/) in a setup
|
||||||
|
with a CalDav server, such as [Radicale](https://radicale.org/), and a synchronization tool like [vdirsyncer](http://vdirsyncer.pimutils.org/).
|
||||||
|
|
||||||
|
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](https://github.com/junegunn/fzf), [batcat](https://github.com/sharkdp/bat), and [yq](https://github.com/mikefarah/yq) installed.
|
||||||
|
For the `python3` code, we also require [icalendar](https://pypi.org/project/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).
|
||||||
|
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:
|
||||||
|
```yaml
|
||||||
|
datadir: ~/.journal
|
||||||
|
sync_cmd: vdirsyncer sync journals
|
||||||
|
collections:
|
||||||
|
- name: 12cacb18-d3e1-4ad4-a1d0-e5b209012e85
|
||||||
|
label: 💼
|
||||||
|
- name: 745ae7a0-d723-4cd8-80c4-75f52f5b7d90
|
||||||
|
label: 🏡
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
```confini
|
||||||
|
[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"]
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
Use the default `fzf` keys to navigate your notes. In addition, there are the following keybindings:
|
||||||
|
| Key | Action |
|
||||||
|
| --- | ------ |
|
||||||
|
| enter | Open note/journal 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 |
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ if [ ! -e "$CONFIGFILE" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
ROOT=$(yq '.datadir' <"$CONFIGFILE")
|
ROOT=$(yq '.datadir' <"$CONFIGFILE")
|
||||||
|
ROOT=$(eval "echo $ROOT")
|
||||||
if [ ! -d "$ROOT" ]; then
|
if [ ! -d "$ROOT" ]; then
|
||||||
echo "Root directory not set or wrongly set"
|
echo "Root directory not set or wrongly set"
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
Reference in New Issue
Block a user