(BLOCK (PARA (TEXT "A Zettelstore must store its zettel somehow and somewhere.") (SOFT) (TEXT "In most cases you want to store your zettel as files in a directory.") (SOFT) (TEXT "Under certain circumstances you may want to store your zettel elsewhere.")) (PARA (TEXT "An example are the ") (LINK-ZETTEL () "00001005090000" (TEXT "predefined zettel")) (TEXT " that come with a Zettelstore.") (SOFT) (TEXT "They are stored within the software itself.") (SOFT) (TEXT "In another situation you may want to store your zettel volatile, e.g. if you want to provide a sandbox for experimenting.")) (PARA (TEXT "To cope with these (and more) situations, you configure Zettelstore to use one or more ") (FORMAT-EMPH () (TEXT "boxes")) (TEXT ".") (SOFT) (TEXT "This is done via the ") (LITERAL-INPUT () "box-uri-X") (TEXT " keys of the ") (LINK-ZETTEL () "00001004010000#box-uri-X" (TEXT "startup configuration")) (TEXT " (X is a number).") (SOFT) (TEXT "Boxes are specified using special ") (LINK-EXTERNAL () "https://en.wikipedia.org/wiki/Uniform_Resource_Identifier" (TEXT "URIs")) (TEXT ", somehow similar to web addresses.")) (PARA (TEXT "The following box URIs are supported:")) (DESCRIPTION ((MARK "dir" "dir" "dir" (LITERAL-INPUT () "dir://DIR"))) (BLOCK (BLOCK (PARA (TEXT "Specifies a directory where zettel files are stored.") (SOFT) (LITERAL-INPUT () "DIR") (TEXT " is the file path.") (SOFT) (TEXT "Although it is possible to use relative file paths, such as ") (LITERAL-INPUT () "./zettel") (TEXT " (→ URI is ") (LITERAL-INPUT () "dir://.zettel") (TEXT "), it is preferable to use absolute file paths, e.g. ") (LITERAL-INPUT () "/home/user/zettel") (TEXT ".")) (PARA (TEXT "The directory must exist before starting the Zettelstore") (ENDNOTE () (TEXT "There is one exception: when Zettelstore is ") (LINK-ZETTEL () "00001004050000" (TEXT "started without any parameter")) (TEXT ", e.g. via double-clicking its icon, an directory called ") (LITERAL-INPUT () "./zettel") (TEXT " will be created.")) (TEXT ".")) (PARA (TEXT "It is possible to ") (LINK-ZETTEL () "00001004011400" (TEXT "configure")) (TEXT " a directory box.")))) ((MARK "file" "file" "file" (LITERAL-INPUT () "file:FILE.zip") (TEXT " or ") (LITERAL-INPUT () "file:///path/to/file.zip"))) (BLOCK (BLOCK (PARA (TEXT "Specifies a ZIP file which contains files that store zettel.") (SOFT) (TEXT "You can create such a ZIP file, if you zip a directory full of zettel files.")) (PARA (TEXT "This box is always read-only.")))) ((MARK "mem" "mem" "mem" (LITERAL-INPUT () "mem:"))) (BLOCK (BLOCK (PARA (TEXT "Stores all its zettel in volatile memory.") (SOFT) (TEXT "If you stop the Zettelstore, all changes are lost.") (SOFT) (TEXT "To limit usage of volatile memory, you should ") (LINK-ZETTEL () "00001004011600" (TEXT "configure")) (TEXT " this type of box, although the default values might be valid for your use case."))))) (PARA (TEXT "All boxes that you configure via the ") (LITERAL-INPUT () "box-uri-X") (TEXT " keys form a chain of boxes.") (SOFT) (TEXT "If a zettel should be retrieved, a search starts in the box specified with the ") (LITERAL-INPUT () "box-uri-2") (TEXT " key, then ") (LITERAL-INPUT () "box-uri-3") (TEXT " and so on.") (SOFT) (TEXT "If a zettel is created or changed, it is always stored in the box specified with the ") (LITERAL-INPUT () "box-uri-1") (TEXT " key.") (SOFT) (TEXT "This allows to overwrite zettel from other boxes, e.g. the predefined zettel.")) (PARA (TEXT "If you use the ") (LITERAL-INPUT () "mem:") (TEXT " box, where zettel are stored in volatile memory, it makes only sense if you configure it as ") (LITERAL-INPUT () "box-uri-1") (TEXT ".") (SOFT) (TEXT "Such a box will be empty when Zettelstore starts and only the first box will receive updates.") (SOFT) (TEXT "You must make sure that your computer has enough RAM to store all zettel.")))