[Talk] Emacs denote at local meetup @ chennai, India

I gave talk about denote at my local meetup at kanchilug (Kanchipuram Linux User Group) which is conducted online every week

official site: https://kanchilug.wordpress.com/

language: Tamil



Table of Contents


(use-package denote
  (setq denote-directory "~/PARA/03_Resources/01_Notes"))

File naming scheme

  • denote-dired-mode

    (add-hook 'dired-mode-hook #'denote-dired-mode)

  • denote-rename

  • denote-dired-rename-files

Front matter

  • Sample front matter from org mode

    #+title: ffmpeg
    #+date: [2024-02-05 Mon 21:13]
    #+filetags: :multimedia:
    #+identifier: 20240205T211318

  • denote-rename-file-using-front-matter to update the filename if you changed the front matter.

  • denote-dired-rename-marked-files-using-front-matter extends this
    principle to a batch operation which applies to all marked files in

Point of entry

  • My favorite point of entry, we have other point of entry too like
    using capture template, denote-signature


  • M + x denote
  • M + x denote-open-or-create
    • But i prefare this, as i can check if there is any existing note or i can create a new note.

Denote type

  • By default it is org document
  • M + x denote-type

Denote date

  • Create a note on particular date

  • M + x denote-date

  • set denote-date-prompt-use-org-read-date to a non-nil, For using org mode calendar.

    (setq denote-date-prompt-use-org-read-date 't)

Denote subdirectory

  • Create note inside particular subdirectory
  • M + x denote-subdirectory


  • We can create custom point of entry using denote-prompts

  • Below code demonstrate how we can create note which ask

    • subdirectory → file-type → title → keywords

    (defun denote-subdirectory-with-types ()
    (declare (interactive-only t))
    (let ((denote-prompts '(subdirectory file-type title keywords)))
    (call-interactively #'denote)))

  • More: Check the denote prompts section of denote info or denote website.

Denote template

(setq denote-templates
    `((report . "* Some heading\n\n* Another heading")
      (memo . ,(concat "* Some heading"
                       "* Another heading"

Denote selected region

  • Create note from selected region
    • A+x denote-region


  • Different note directory

  • Ctrl + u with denote silo command.

  • I haven’t explored much on silos.

    (require 'denote-silo-extras)
    (setq denote-silo-extras-directories '(“~/PARA/01_Projects”

  • another way, but it doesn’t work (May be i am missing something)

        (setq denote-dired-directories
          (list denote-directory
    ;            (expand-file-name "~/TEMP")
                (expand-file-name "~/TEMP")))
  • Alt + x denote-silo-extras-select-silo-then-command

    • to select the custom silo and then create note in it.


  • Alt + x, denote-link
  • denote-link-dired-marked-notes


  • Alt + x, denote-backlinks

  • More info on backlinks

    (setq denote-backlinks-show-context 't)


  • denote-known-keywords to change the default keywords/tags.

  • denote-infer-keywords is non-nil, keywords in existing note file names are included in the list of candidates.

  • Rename display buffer

    (denote-rename-buffer-mode 1)

Feedbacks are welcome guys


I suggest you either pack the whole org-syntax block into a code block, e.g.

#+title: denote talk
#+startup: overview

Or, even better, export everything as Markdown[1] via M-x org-md-export-as-markdown (you might need to (require 'ox-md) beforehand). Otherwise, Org’s syntax will conflict with Discourse’s Markdown syntax.

With org-gfm-expot-as-markdown, your post would look like this:


(use-package denote
(setq denote-directory “~/PARA/03_Resources/01_Notes”))

File naming scheme


Hope that helps :slight_smile:

  1. Note that ox-md will use classic Markdown syntax; you might want to use ox-gfm instead. ↩︎

1 Like

Okay i will do that @ashraz