dotfiles/emacs-lisp/org_roam.org
Magic_RB bbaae4362b
Move Org Mode configuration from base.org into Org Roam files
Signed-off-by: Magic_RB <magic_rb@redalder.org>
2021-10-17 20:01:45 +02:00

2.1 KiB

Org Roam

Org-roam is a plain-text knowledge management system. It brings some of Roam's more powerful features into the Org-mode ecosystem.

SQLite3 must be on Emacs' PATH!

  (use-package org-roam
    :straight t
    :init
    (setq org-roam-v2-ack t)
    :config
    (add-hook 'after-init-hook 'org-roam-setup)
  
    (setq org-roam-directory "~/roam")
    (setq org-roam-capture-templates
          `(("e" "Emacs Lisp" plain "%?"
             :target (file+head "emacs-lisp/${slug}.org"
                                "#+title: ${title}\n#+filetags: emacs-load")
             :unnarrowed t)
            ("d" "default" plain "%?"
             :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org"
                                "#+title: ${title}\n")
             :unnarrowed t))))

Ref Capture

Using org-protocol, one can capture a website from their browser directly into Org Roam.

  (with-eval-after-load "org-roam"
    (require 'org-roam-protocol)
    (setq org-roam-capture-ref-templates
          `(("r" "ref" plain "%?"
             :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n\n${body}")
             :unnarrowed t))))

Then you need a desktop entry for org-protocol. Such as:

  [Desktop Entry]
  Name=org-protocol
  Exec=emacsclient %u
  Type=Application
  Terminal=false
  Categories=System;
  MimeType=x-scheme-handler/org-protocol;

or in Nix form:

  makeDesktopItem {
    name = "Org-Protocol";
    exec = "emacsclient %u";
    comment = "Org protocol";
    desktopName = "org-protocol";
    type = "Application";
    mimeType = "x-scheme-handler/org-protocol";
  }

Lastly a bookmarklet in Firefox.

  javascript:location.href ='org-protocol://roam-ref?template=r&ref=' + encodeURIComponent(location.href) + '&title=' + encodeURIComponent(document.title) + '&body=' + encodeURIComponent(window.getSelection())