(((meta (@ (content . "Zettelstore boxes") (name . "title"))) (meta (@ (content . "manual") (name . "role"))) (meta (@ (content . "#configuration #manual #zettelstore") (name . "tags"))) (meta (@ (content . "zmk") (name . "syntax"))) (meta (@ (content . "00001003300000 00001006020000 00001012054600 00001012080500") (name . "back"))) (meta (@ (content . "00001003300000 00001004010000 00001006020000 00001012054600 00001012080500") (name . "backward"))) (meta (@ (content . "1") (name . "box-number"))) (meta (@ (content . "(c) 2020-present by Detlef Stern ") (name . "copyright"))) (meta (@ (content . "20210126175322") (name . "created"))) (meta (@ (content . "00001004010000 00001004011400 00001004011600 00001004050000 00001005090000") (name . "forward"))) (meta (@ (content . "en") (name . "lang"))) (meta (@ (content . "EUPL-1.2-or-later") (name . "license"))) (meta (@ (content . "20220307121547") (name . "modified"))) (meta (@ (content . "20220307121547") (name . "published"))) (meta (@ (content . "public") (name . "visibility")))) (p "A Zettelstore must store its zettel somehow and somewhere." " " "In most cases you want to store your zettel as files in a directory." " " "Under certain circumstances you may want to store your zettel elsewhere.") (p "An example are the " (a (@ (href . "00001005090000")) "predefined zettel") " that come with a Zettelstore." " " "They are stored within the software itself." " " "In another situation you may want to store your zettel volatile, e.g. if you want to provide a sandbox for experimenting.") (p "To cope with these (and more) situations, you configure Zettelstore to use one or more " (em "boxes") "." " " "This is done via the " (kbd "box-uri-X") " keys of the " (a (@ (href . "00001004010000#box-uri-X")) "startup configuration") " (X is a number)." " " "Boxes are specified using special " (a (@ (href . "https://en.wikipedia.org/wiki/Uniform_Resource_Identifier") (rel . "external")) "URIs") ", somehow similar to web addresses.") (p "The following box URIs are supported:") (dl (dt (a (@ (id . "dir")) (kbd "dir://DIR"))) (dd (p "Specifies a directory where zettel files are stored." " " (kbd "DIR") " is the file path." " " "Although it is possible to use relative file paths, such as " (kbd "./zettel") " (→ URI is " (kbd "dir://.zettel") "), it is preferable to use absolute file paths, e.g. " (kbd "/home/user/zettel") ".") (p "The directory must exist before starting the Zettelstore" (sup (@ (id . "fnref:1")) (a (@ (class . "zs-noteref") (href . "#fn:1") (role . "doc-noteref")) "1")) ".") (p "It is possible to " (a (@ (href . "00001004011400")) "configure") " a directory box.")) (dt (a (@ (id . "file")) (kbd "file:FILE.zip") " or " (kbd "file:///path/to/file.zip"))) (dd (p "Specifies a ZIP file which contains files that store zettel." " " "You can create such a ZIP file, if you zip a directory full of zettel files.") (p "This box is always read-only.")) (dt (a (@ (id . "mem")) (kbd "mem:"))) (dd (p "Stores all its zettel in volatile memory." " " "If you stop the Zettelstore, all changes are lost." " " "To limit usage of volatile memory, you should " (a (@ (href . "00001004011600")) "configure") " this type of box, although the default values might be valid for your use case."))) (p "All boxes that you configure via the " (kbd "box-uri-X") " keys form a chain of boxes." " " "If a zettel should be retrieved, a search starts in the box specified with the " (kbd "box-uri-2") " key, then " (kbd "box-uri-3") " and so on." " " "If a zettel is created or changed, it is always stored in the box specified with the " (kbd "box-uri-1") " key." " " "This allows to overwrite zettel from other boxes, e.g. the predefined zettel.") (p "If you use the " (kbd "mem:") " box, where zettel are stored in volatile memory, it makes only sense if you configure it as " (kbd "box-uri-1") "." " " "Such a box will be empty when Zettelstore starts and only the first box will receive updates." " " "You must make sure that your computer has enough RAM to store all zettel."))