diff --git a/doc/bookmarkfs.texi b/doc/bookmarkfs.texi index ab1fd39..441b2a1 100644 --- a/doc/bookmarkfs.texi +++ b/doc/bookmarkfs.texi @@ -806,6 +806,72 @@ you may submit a feature request or implement one using the Backend API. @node Firefox @section Firefox Backend +The Firefox backend provides access to the bookmark data of the web browser +@uref{https://www.mozilla.org/en-US/firefox/new/, Mozilla Firefox} +and its derivatives, notably @uref{https://www.torproject.org/, Tor Browser} +and @uref{https://librewolf.net/, Librewolf}. + +Firefox bookmarks are stored in a SQLite database under the profile directory: + +@example +~/.mozilla/firefox/@var{$@{profile_name@}}/places.sqlite +@end example + +When mounting the filesystem, this pathname shall be passed as the @var{src} +argument (@pxref{mount.bookmarkfs}). +Actual path for the profile directories may differ across distributions. + +Backend-specific options: + +@table @option +@item filename=title|guid +Whether to use the bookmark title or GUID as the bookmark file name. +Defaults to ``title''. + +A bookmark GUID is a base64url-encoded 128-bit string uniquely associated +with a bookmark or bookmark folder. + +When creating a new file: + +@table @option +@item @option{filename=title} +The GUID is randomly generated by the backend. + +@item @option{filename=guid} +The filename must be a valid GUID, and must not duplicate with other files +on the same filesystem, otherwise @code{open()} fails with @code{EPERM}. + +Also sets the GUID string as the bookmark title. +@end table + +@item lock=exclusive|normal +The database connection locking mode for the bookmark storage. +Defaults to ``normal'' when the filesystem is mounted read-only, +``exclusive'' otherwise. + +This option corresponds to the +@uref{https://www.sqlite.org/pragma.html#pragma_locking_mode, +@code{locking_mode}} pragma on SQLite. +With @option{lock=exclusive}, other process cannot access the bookmark storage +until the filesystem is dismounted. + +The Firefox browser holds an exclusive lock on the bookmark storage by default. +If you wish to mount the bookmarks while keeping the browser session open, +turn off the @code{storage.sqlite.exclusiveLock.enabled} switch +in @indicateurl{about:config}. + +@item assume_title_distinct +If this options is provided, the backend assumes that bookmark names are +distinct under the same bookmark folder. +This option is ignored with @option{filename=guid}. + +This option may improve @code{readdir()} performance, however, +making a false assumption results in a directory entry with duplicate names. +It is recommended to perform a full filesystem check (@pxref{Filesystem Check}) +on the bookmark storage before mounting with this option. + +@end table + @node Chromium @section Chromium Backend