id = "logseq" name = "Logseq" homepage = "https://logseq.com" # The repository's own one-line description, trimmed of its download link. description = "A privacy-first, open-source platform for knowledge management and collaboration." icon = "SimpleIcons:logseq" # Logseq now ships a command line too — docs/cli/logseq-cli.md: "When installed, # the CLI binary name is `logseq`" — so the binary wins over the desktop app's # bundle identifier, which is com.electron.logseq (the Homebrew cask `logseq` # zaps ~/Library/Preferences/com.electron.logseq.plist). executables = ["logseq"] [dotfiles] # The global, graph-independent configuration lives under a dot directory in the # home directory, not in the Electron user-data directory: # src/electron/electron/configs.cljs # (defonce dot-root (.join node-path (.getPath app "home") ".logseq")) # src/electron/electron/utils.cljs — get-ls-dotdir-root joins the home # directory with ".logseq", and the settings UI labels the button that opens # it with the literal `~/.logseq` (src/main/frontend/components/plugins.cljs). # # Inside it: # config/config.edn — src/main/frontend/handler/global_config.cljs: # (global-config-path) is (path-join @root-dir "config" "config.edn"), the # "custom global configuration" the Settings window edits. # config/plugins.edn — src/main/frontend/handler/plugin_config.cljs: kept in # the global-config component's directory and "automatically updated" as # plugins are installed, so it is the list of plugins to reinstall. # preferences.json — logseq/api/plugin.cljs, load_user_preferences / # save_user_preferences join the dotdir root with "preferences.json"; it # holds the theme and appearance mode. # # Per-graph settings (`logseq/config.edn` inside a graph directory) are not # listed: a graph lives wherever the user put it, so the catalog cannot name it. paths = [ "~/.logseq/config/", "~/.logseq/preferences.json", ] # ~/.logseq/plugins/ (electron/core.cljs: PLUGINS_ROOT is the dotdir plus # "plugins") is the downloaded plugin code, ~/.logseq/settings/.json # (electron/plugin.cljs) is per-plugin state that can hold a plugin's own API # tokens, and ~/.logseq/graphs.edn (configs.cljs graph-registry-path) is a # registry of absolute graph directories on this machine. None of the three is # below a path above, so none needs carving out — but a consumer that widens # this entry to the whole dot directory would have to. # config.edn is keybindings, default templates, journal format and the query # collection; preferences.json is the theme. Logseq's own sync account and the # per-plugin tokens are elsewhere, so nothing named above is a credential. secret = [] # No machine_lines: everything here — shortcuts, journal templates, the plugin # list, the theme — is what a user wants on the next machine. The one # machine-local thing Logseq writes, the registry of absolute graph paths, is # ~/.logseq/graphs.edn, which this entry does not sync.