Turn off the bright meta?

Hi all,

I would like to use org-roam and I’ve been playing with it and reading the docs, in general I think it’s well thought and designed, but I also get a feeling that it might be a bit over-designed, or at least that some details are too in-your-face, take for example:

This is a toy note with no content, but anyway you can see a number of opaque identifiers that are intimidating and distractive, two attributes that increase friction. In my mind the note is about something and that’s more or less its identity as well. In the implementation:

  • There is one long UUID visible by default that means nothing to me but occupies the first three lines of the buffer, where I’d expected a descriptive title to be placed instead. The fact that it’s visible by default may be an issue with org-mode summary, though, but since org-roam is placing drawers everywhere some extra care in hiding them to some extent may be put “downstream”.
  • There is a slightly least opaque and slightly shorter timestamp in the filename that occupies the most part of the buffer name in the modeline and, again, it’s a prefix displacing the descriptive part of the buffer name.
  • Then there is a title.
  • Then there may be a top level heading competing with the title.

Now, I get that internally you need unique ids and that in an all explicit pure text format they should be located somewhere in the file, I get that you prefer to have an automatic way of (almost) ensuring file unicity, etc. But all this could be a little more hidden, a little more obviously configurable, a little more optional, like a shameful vestige of the underlying implementation. So I might be wrong here but the impression I get is that you’re alright with it, that you are fond of seeing all these ZKish identifiers popping up everywhere. It goes without saying that I’m not.

I would like to discuss the issue. I’m sure there are ways around all of the above, advices to be advised, methods to be overridden, functions to be monkey-patched and even good old customization options. That I could learn by myself, it’s not the point of the post.

Best regards,

Yes, org-roam’s rendering is a bit distracting – way too many exposed pipes and wires.

I’m not sure if this is the kind of reply you’re looking for, but it is possible to reduce the clutter.

Here’s a thread describing how to keep Property drawers folded on startup. You can also hide them completely using this bit of code.

I’m not sure if this is the kind of reply you’re looking for

Neither do I TBH, likely just to get the gist of how other people are approaching this because the fact that those numbers feel that awkward to me may be signalling that I’m approaching it the wrong way, with some prejudice.

Here’s a thread describing…

For now I’m doing this:

(setq '(("d" "default" plain "%?"
	 :target (file+head "${slug}.org" "#+title: ${title}")
	 :unnarrowed t)))

(defun my-org-capture-hook ()
  (when (plist-member org-capture-plist :org-roam)
    (org-cycle-hide-drawers 'overview)))
(add-hook 'org-capture-mode-hook #'my-org-capture-hook)

(defun my-org-roam-hook () (org-cycle-hide-drawers 'overview))
(add-hook 'org-roam-mode-hook #'my-org-roam-hook)

I strive to keep my emacs configuration down to the bare minimum because I know how easily it gets out of hand. I’d prefer to learn to love those numbers or to silence them upstream instead of in my init.el. The (org-cycle-hide-drawers 'overview) doesn’t strike me as a controversial change. Besides I cannot cleanly hook in the org-capture case, since there is no specific roam hook there AFAICS.

In addition to what @scotto says…

You can do something like this.

  • Use lower case for properties meta data
  • Use a theme that defines meta data with less prominent colours and font size – e.g. Modus themes
  • As @scotto says, fold the properties on top – I find my properties useful so I keep them open
  • Customize org-id-method so that ID is not UUID – e.g. time stamp; Org 9.5 lets you also define the time stamp format
  • Customize a capture template to avoid the time stamp in file names – I guess you do it already
  • Customize the mode line to your liking to remove clutter – e.g. mood-line package

You can even go further:

  • Hide mode line – this is my “writing mode”
  • Hide menu-bar – most already do; I usually keep it on as I use it

You can then further hide the #+title keyword. I don’t do it. Perhaps it might be something you would like to consider, together with enlarging the title font a bit larger (not what I do).

  • Hide #+title: by customizing org-hidden-keywords

Thank you for the many tips!

Use lower case for properties meta data

I prefer lower case everywhere although the tooling doesn’t help here because PROPERTY drawers are still entered like that by many commands. org has standardized in lowercase for keywords but not for drawers and properties, at least not yet.

Use a theme that defines meta data with less prominent colours and font size – e.g. Modus themes

This is what I use and indeed this toning down is one feature of the theme that I like.

Customize org-id-method so that ID is not UUID – e.g. time stamp; Org 9.5 lets you also define the time stamp format

Great suggestion, given that I already removed the timestamp from the filename and that a timestamp is a bit more friendly and informative to me than a UUID, and still unique enough for my purposes, I like this idea.

Customize the mode line to your liking to remove clutter – e.g. mood-line package

You mean moody or doom? I always wondered whether moody is a pun on doom.I’ve used both, there are some issues with modelines of non-standard height that won’t be solved until emacs 29 (there is a long discussion in bug-gnu-emacs) so I’m currently back on vanilla + minions. But I’m fine with using the filename as buffer name as long as it doesn’t include a timestamp. I actually dislike the many timestamps cluttering the buffer list more.

Hide menu-bar – most already do; I usually keep it on as I use it

I’ve always done that in Linux, but I’m using a MacBook now so the menu at the top doesn’t bother me that much (and it’s handy when using gnus…).

Thanks for the comments / feedback.
I took this opportunity to extend my writing mode, and applied a couple of improvements.

Compare Figure 1 and 2 below. All I did between them is to turn on my custom my/org-writing-mode. I like it so I think I will try to keep it for now.

It’s a demo file I created for this post only but it is pretty close to my real notes. I don’t normally use headlines and headline-nodes, so that’s the main difference.

Figure 1. Normal Org(-roam) buffer with my writing mode off

Figure 2. The same buffer with my writing mode on

  • File and headline properties are hidden (toggle) with the custom code @scotto referred to
  • The keyword meta data (#+title and #+filetags) are hidden by prettify-symbols-mode (source on Reddit)
  • Headlines with numbers are turned on via the built-in org-num-mode
  • The headlines stars (asterisks “*”) are hidden by pretty-symbols-mode (same as meta data)
  • Italics and bold syntactic markers ("/string/" and “*string*”) are hidden by setting org-hide-emphasis-markers – you don’t see bold because the font I use don’t have bold weight, I think
  • Variable fonts are applied with variable-pitch-mode together with Modus Operandi theme’s mix fonts (see the source code block uses the fixed-pitch, or mono space font).
  • #+begin/end_src directives are translated to symbols with pretty-symbols-mode
  • All these changes are more or less modular; I can turn on/off changes separately, or apply/remove the wholes changes with a singe minor mode

For what it is worth, I extracted relevant code here on Gist. My entire configuration here (I suggest Gist is easier to view; the configuration is only for my private purpose so I don’t try to make it easy to read).

No it’s this one: moode-line.
I override some functions to change some Unicode characters to ASCII ones.

I also add minions-mode. The “・” next to the time on the right is the indicator.

1 Like

Really nice setup you have.

I didn’t know about mood-line, I like that it’s so small that one can understand the code in 5 minutes, thanks for the data.

You know, I was worried about either having to live with what I feel as distracting complexity or having to fight against the default setup in a way I promised myself not to do anymore (because it’s another kind of endless distracting complexity). I was looking for a more naive approach in which, at least conceptually, filenames = titles = ids = what my note is about, using a handful of subdirs as “areas of interest”, no geeky slugs, no uuids, etc. I’m a tech guy and I’m used to that but this is not the place where I want to see it.

But I’m happy I was able to quickly hack a small setup that:

  • Allows to create a node in a new file from some heading in my inbox.
  • Let me pick a directory when doing a refile as above as well as when capturing.
  • Names files directly from the node title.
  • Hides top-level property drawers containing uuids.

Besides the couple of hooks I posted before, I only had to do add this:

(setq org-roam-extract-new-file-path "${my-roam-file}"
      '(("d" "default" plain "%?"
	     :target (file+head "${my-roam-file}" "#+title: ${title}")
	     :unnarrowed t)))

(defun my-roam-file (node)
  (f-relative (f-join (read-file-name "Enter directory: " org-roam-directory)
                      (concat (org-roam-node-title node) ".org"))
1 Like

I’m also delighted with the fact that one can omit the title and the filename will be used instead to create and index the node:

               (title (org-link-display-format
                       (or (cadr (assoc "TITLE" (org-collect-keywords '("title"))
                           (file-relative-name file org-roam-directory))))

@jethro wouldn’t it be better to remove the .org suffix in the last line? I can write a patch.