agendafs

A filesystem for your calendar.

git clone git://mccd.space/agendafs
commit 0e10b0e475b411592e2af657a9ed2d28c483212d
parent f207f67b28ac7467ba101f8ae0a65d3c3d2d615c
Author: Marc Coquand <marc@coquand.email>
Date:   Thu, 10 Jul 2025 23:39:23 +0200

README

Diffstat:
MREADME.md | 29+++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
@@ -4,6 +4,10 @@ Agendafs is a FUSE-based filesystem for writing notes that syncs to
 ical-backends using [vdirsyncer](https://vdirsyncer.pimutils.org/) or
 similar tools.
 
+## Status
+
+Agendafs is still in early development and is alpha-level software.
+
 ## Installation
 
 Prerequisites: C compiler, libfuse, libuuid, libical and pkg-config
@@ -22,7 +26,12 @@ make
 
 Agendafs uses [vdirsyncer](https://vdirsyncer.pimutils.org/) as a backend to sync iCalenar files to a remote caldav server.
 
-Each iCalendar entry (currently VJOURNAL only) is represented as a file or directory in Agendafs. Edit these files like you would on a regular filesystem. iCalendar entries that have a parent relationship are represented as directories. iCalendar attributes can also be accessed via xattr(7). Currently the only exposed xattribute is `user.categories`.
+Each VJOURNAL iCalendar entry (VTODO and VEVENTS in todo tracker) is represented as a file or directory in Agendafs. Edit these files like you would on a regular filesystem. iCalendar entries that have a parent relationship are represented as directories. iCalendar attributes can also be accessed via xattr(7). Current supported attributes are:
+
+- `user.categories` - comma separated list of categories
+- `user.class` - Can be either private, public, confidential.
+
+Agendafs pairs well with file explorers like `lf` or `nnn`.
 
 ## Usage
 
@@ -96,11 +105,23 @@ curl -X MKCALENDAR \
   'https://my-nextcloud-server/remote.php/dav/calendars/me/journal'
 ```
 
-### Tool-specific notes
+### Categories
+
+#### Find all files with categories, and their categories
+
+```sh
+$ find . -type f -exec getfattr -n user.categories {} + 2>/dev/null
+```
+
+#### Find files by category
+
+```sh
+$ find . -type f -exec getfattr -n user.categories {} + 2>/dev/null | grep -B1 "MY_CATEGORY" | grep '^# file' | awk '{ print substr($0, 9) }'
+```
 
-#### lf
+### lf
 
-Updates might not be reflected with dircache set to true. If inodes are used correctly, this should be fixable.
+Updates might not be reflected with dircache set to true. This is probably because inodes are not updated correctly yet.
 
 ### Why C?