Writing an Android Note Taker … in Emacs

A bit dissatisfied with the corporate-back options for taking notes on my Android phone, I thought I might stitch my own… I suppose decades of Emacs use has jaded me to options that I can’t craft.

That’s right … we now have the newest version 30 option available on Android. I wonder if …

Of course I can. He is my approach.

Trivial Installation

According to our Wiki, we have a few options, but after playing withEmacs on F-Droid, I followed this approach by first installing Terminux (which supplies a package manager for installing git or possibly ripgrep).

Worked out of the box. Just lovely seeing that old familiar face … you know, the face that I usually just smother in my own Lispy makeup.

Over the last week, I’ve noticed a lot of people trying it out, so I’m sure by the time I publish these notes, we should have other approaches as well.

Do you need a fancy keyboard? Technically, no. As you probably didn’t realize, common Emacs commands are on the accessible menu bar, and we don’t need to C-n / C-p our way around a document, as our finger can poke the screen to position the cursor. In fact, the typical scream-to-text feature that I often use works fine. That said, I take comfort in being able to switch over to an Unexpected Keyboard… especially since selecting text doesn’t work as expected (more on that later).

A bluetooth-connected keyboard would be useful, but on a phone with a tiny screen, this isn’t a good long-term solution.

Configuration in a Sandbox

Next step is crafting some Lisp.

Android apps, like most mobile situations, run in container-like sandboxes. Giving Emacs “full filesystem access” still limits Emacs to the “global sandbox”… a sandbox that most of my file-sharing systems don’t access.

Spun up and configured Syncthing to sync “some directories” in this “global sandbox” with my computer. I then ran the following command in Terminux to copy a directory tree from there, and into Emacs’ start up directory:

cp -r ... ~/.emacs.d

Bootstrap

My thoughts at this point… I will place some stable, bootstrap-like code, in early-init.el that would allow me, no matter how many parenthesis I drop on the floor, to fix it remotely on my computer.

I was thinking to use straight or something equivalent, but I’m not sure how many packages I will be installing, and Emacs 30 comes built-in with grabbing packages from URLs, so my minimal setup looks like:

(boo)

General Configuration

Org

Journaling

My initial point to running Emacs on my phone was to be able to click a button, type some notes and events per day into my phone and have it show up on my computer. I migrated some of my journaling code over, specifically:


Note Taking