Making roam more...fun/attention grabbing

Hello everyone,

I need some advice. I have ADHD, and once I get bored with something it is really hard for me to keep up with it. One thing that keeps my attention is a challenge, especially with technology, so I’m likely good for a while. I am completely new to Emacs, and there is still a lot to learn.

With that said, it is likely that once I reach a certain point of knowledge and/or stuck-ness, I will become bored. I was wondering if anyone had any unique ways that they spice up their roam files? I was thinking of some sort of gamification. I also intend on adding images, quotes, maybe some ASCII art.

There is some major potential here to help me with the struggles of ADHD and I would like to continue to use it. I will be using Roam as a catch-all for anything I need help remembering, which is literally everything.

What are those things you do to make maintaining your Roam files not so repetitive? Anyone else using these tools to help with an ADHD brain?

2 Likes

I also have ADHD :raised_hand: Some thoughts in no particular order, and not necessarily only for org-roam:

If you spend a lot of time writing, Evil (Vim keybindings) is a great way to create little dopamine spikes when you learn to do something more efficiently.

Not specific to org-roam, but adding [/] or [%] to a heading that has tasks inside of it will show how many remains or how many percent remains, respectively.

Doom Emacs + (org +pretty) and also setting checkboxes with prettify-symbols-alist make for very aesthetically pleasing notes.


Organizing notes and thoughts into a hierarchy can be very satisfying. Came across it when evaluating Dendron, and was happy to see that there’s an effort to bring the hierarchical structure to org-roam: GitHub - vicrdguez/dendroam: Bring Dendron features to Emacs org-roam

If you use pomodoros, you can set a sound file to play at start/end/break end, which can be pretty fun. Mine are old Arnold quotes :joy:

And finally, Emacs itself is less of an editor and more of an “elisp evaluation machine”, so the possibilities of tinkering and configuring are endless. This is both a blessing and a curse. If you can stop yourself from falling too deep into rabbit holes, it can be a sustainable source of “ooh that’s a neat thing I could improve” for life.

As such, you can modify org-roam or any other part of Emacs to give you the dopamine hits. A few ideas off the top of my head:

  • Count each completed todo and assign a score. Set a daily score goal. Play an audio file each time you complete a todo. Trigger some kind of animation or open a link to your favorite celebratory video when you’ve completed all your goals. (Could also work for org habits)
  • Make a shortcut to embed a random gif anywhere you are in an org-file.
  • Build a website out of your notes, with an hourglass/timer slowly running out and it is only refilled when you publish a new site (i.e. a new org-roam note).
  • Make Emacs start your coffee maker when you’ve completed enough todos / after X pomodoros / X minutes before a timer ends.

Have fun and enjoy the endless dopamine hits of Emacs :slight_smile:

EDIT: Let me know if you end up building any of those things! I’d love to try them out :smiley:

2 Likes

I got so excited reading this! I have the first few suggestions done already; evil-mode (I am running Doom), the % & / for checkboxes, and I just stumbled on prettify a few days ago but wasn’t sure exactly what it was. Is that a variable that can be included in the config file? I looked into it a bit, and got distracted by something else.

Speaking of distracted, those config files are one hell of a rabbit hole. I recently switched to Linux (Endeavour OS w/ i3WM) and between my config.el and my i3 config I have been having procrastination party :partying_face:.

I have also been playing around with bash scripting and have just discovered that I may be able to write Elisp scripts as well, so your suggestions are definitely going to be played with. Another little hobby I picked up recently is microcontrollers, so I may even give the coffee pot thing a shot.

Thank you for all of the suggestions.

Glad it was useful! The [/] and [%] is built in for org-mode, AFAIK. Simply type it out and then it will auto update whenever you add or check off a nested checkbox or nested TODO heading. You can also refresh it with C-c C-c (which is a general “do a thing here!” shortcut in org-mode, for example for updating a table of all the time you’ve clocked, etc. ).

If you set your org module like this in your doom init.el:
(org +pretty +roam2)`

And this in your doom config.el:

;; from https://www.reddit.com/r/emacs/comments/d54ogp/emacs_doom_e17_org_mode_checkboxes/
(add-hook 'org-mode-hook
          ;; TODO: Use add-to-list instead of "push", to avoid duplicates
          (lambda () "Beautify Org Checkbox Symbol"
            ;; These are nice unicode characters for checkboxes: ☐ ☑ ☒
            (push '("TODO" . "☐") prettify-symbols-alist)
            (push '("NEXT" . "Δ" ) prettify-symbols-alist)
            (push '("DONE" . "☑" ) prettify-symbols-alist)
            (push '("CANCELED" . "☒" ) prettify-symbols-alist)

            ;; This changed to be case sensitive in a recent update of doom
            (push '("#+BEGIN_SRC" . "↦" ) prettify-symbols-alist)
            (push '("#+END_SRC" . "⇤" ) prettify-symbols-alist)
            (push '("#+BEGIN_EXAMPLE" . "↦" ) prettify-symbols-alist)
            (push '("#+END_EXAMPLE" . "⇤" ) prettify-symbols-alist)
            (push '("#+BEGIN_QUOTE" . "↦" ) prettify-symbols-alist)
            (push '("#+END_QUOTE" . "⇤" ) prettify-symbols-alist)

            (push '("#+begin_quote" . "↦" ) prettify-symbols-alist)
            (push '("#+end_quote" . "⇤" ) prettify-symbols-alist)
            (push '("#+begin_example" . "↦" ) prettify-symbols-alist)
            (push '("#+end_example" . "⇤" ) prettify-symbols-alist)
            (push '("#+begin_src" . "↦" ) prettify-symbols-alist)
            (push '("#+end_src" . "⇤" ) prettify-symbols-alist)

            ;; Monday 2021-11-01 not working
            ;; (push '("+ [ ]" . "☐") prettify-symbols-alist)
            ;; (push '("+ [x]" . "☑" ) prettify-symbols-alist)
            ;; (push '("+ []" . "☒" ) prettify-symbols-alist)

            (prettify-symbols-mode)))

That should be all you need. As you can see from my comments, I haven’t gotten it just right for checkboxes like + [ ] yet, and after a recent update of doom the quote and source matching had to be both in upper and lower case to match consistently.

Cool, looks awesome. I’ll drop it into my configs tomorrow and play around with it.

Do you happen to know if it is possible to have separate config files for each package and just call to them from config.el? Like how you can build a Roam template and then just add the path to config.el. My config is getting kind of cluttered and that’d be a nice way to clean it up.

I’d like some more structure too, but figured my next step would be a literate config. I.e. write an org-mode file with headings and a clear overview, and have all actual config code in src blocks. doom-emacs/README.org at 364e74a96b28b56f933571efcb0b43f33aa71a2d · hlissner/doom-emacs · GitHub

I keep hearing/reading that term literate configs, but hadn’t looked into it yet. Thank you for the explanation. That may be the way to go for me as well. Not sure how your ADHD manifests in regards to reading comprehension, but I struggle with big blocks of text with minimal distinction between sections. Having each section bordered in with code blocks would probably help a lot.

Yeah whitespace and logical separations between sections matter a lot. Inspired by your question I gave the Doom literate config a try, and it seems to work well!

I also added a few notes on how to use it, and what to remove/change if you’re not on MacOS. May it be useful to you as inspiration, or theft!

https://github.com/codeluggage/codeluggage-dotfiles/blob/main/config.org