#+TITLE: Org Agenda Eink #+DATE: 2021-01-25T22:07:25-05:00 #+DRAFT: true #+SHOWTOC: false #+DESCRIPTION: #+TAGS[]: #+KEYWORDS[]: #+SLUG: #+SUMMARY: I recently made a [[{{< ref "/posts/org-agenda-new-tab" >}}][post]] about how I was able to configure my new tab page to display my org agenda. Since then I've been working on another project similar to that, trying to take the concept even further. A while ago I purchased an [[https://inkplate.io/][Inkplate 6]] during its crowd funding stage on [[https://www.crowdsupply.com/e-radionica/inkplate-6][crowd source]], with the exact intention of creating something like this. Immediately after writing that blog post, I started working to change [[https://github.com/dantecatalfamo/agenda-html][agenda-html]] in order to make render an output which would be acceptable for this project. At the core of the Inkplate 6 is the [[https://www.espressif.com/en/products/socs/esp32][ESP32]]. An Arduino-compatible micro-controller which has built-int WiFi and Bluetooth. It draws very little power, which makes it ideal for something like this, as it stays on 24/7. It also has the benefit of being able to draw from the Arduino community, benefiting from the many libraries people have created. The way it works is very similar to the org agenda new tab page. The server-side cron job, instead of exporting exclusively to HTML, also exports a text version of the agenda. The ESP32 then fetches this text and prints it verbatim onto the screen. This happens on a loop every 5 minutes, so it's always up to date with any changes I make to my org files. The sketch for this project can be found [[https://github.com/dantecatalfamo/inkplate-agenda][here]]. What I ended up doing was exporting the org agenda as a text file, after converting the links to description only. I did the conversion because otherwise the full link markup text would show up in the export, which would quite ugly. It would look like the full =[[https://example.com][Description]]= instead of just =Description=, which would be quite useless, as you can't click the link on an eink display. I also shortened the server-side cron job repeat rate to every 5 minutes instead of 15, so it would work better with hour and minute time-stamped events. That way it also reflect new tasks and TODOs much more quickly, at practically zero cost. This project has many benefits, at least to me. First and foremost, I can check my org agenda without even turning on my computer. It's always on off to the side, so I can check it out any time without having to open either a new tab or Emacs. Being an eink display is very important, as it's not bright and distracting, and doesn't need to be turned off at night. I can check it any time. It also isn't distracting at all. It sort of just looks like any other appliance. Between this desk version of the org agenda and the new tab version, my usage of the org agenda has gone up substantially. I used to only use org for a handful of tasks, but eventually moved over to regular calendar apps for most things, as they were simply more accessible in many situations. Now that I have this sort of appliance version of the org agenda view, I find myself using it for almost everything. This really highlights the extreme versatility of Emacs and Org. While I had to figure out how to make it work, it took very little modification to Emacs in order to get it to work, and those modifications I did have to make were all easily accomplished by changing a couple variables or writing a little elisp.