michal-sapka-me

Codebase for my homepage.
git clone git://vcs.sapka.me/michal-sapka-me
Log | Files | Refs

commit a9bab9ba1ed253573c38c619ac8c117585424c4c
parent e3cc74c4b20169e6346f701192e9b0d7f5a3f692
Author: MichaƂ M. Sapka <michal@sapka.me>
Date:   Sat,  6 May 2023 19:51:42 +0200

feat: article for 2023-05-06

Diffstat:
Aassets/content_images/elfeed-details.png | 0
Aassets/content_images/elfeed-list.png | 0
Acontent/2023/moving-my-rss-reading-to-emacs-with-elfeed.md | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aresources/_gen/images/elfeed-details_hu61baf84d0328661405d829e336561098_2327424_1060x0_resize_q90_h2_box_3.webp | 0
Aresources/_gen/images/elfeed-details_hu61baf84d0328661405d829e336561098_2327424_534x0_resize_q90_h2_box_3.webp | 0
Aresources/_gen/images/elfeed-list_hu6a798cfc345ac34e59e915f8a760dcea_566755_1060x0_resize_q90_h2_box_3.webp | 0
Aresources/_gen/images/elfeed-list_hu6a798cfc345ac34e59e915f8a760dcea_566755_534x0_resize_q90_h2_box_3.webp | 0
7 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/assets/content_images/elfeed-details.png b/assets/content_images/elfeed-details.png Binary files differ. diff --git a/assets/content_images/elfeed-list.png b/assets/content_images/elfeed-list.png Binary files differ. diff --git a/content/2023/moving-my-rss-reading-to-emacs-with-elfeed.md b/content/2023/moving-my-rss-reading-to-emacs-with-elfeed.md @@ -0,0 +1,61 @@ +--- +title: "Moving My RSS Reading to Emacs With Elfeed" +category: "software" +abstract: It's even better now than it newsboat. +date: 2023-05-06T19:44:40+02:00 +year: 2023 +draft: false +tags: +- Emacs +- elfeed +- RSS +- newsboat +--- +Since Emacs became my [shell of choice](/2023/emacs-as-a-shell/), I am abandoning more and more dedicated applications in favor of different packages. As it turns out, Emacs packages are very feature rich. This time: I moved my RSS reading from [newsboat](https://newsboat.org/) to [elfeed](https://github.com/skeeto/elfeed). + +Elfeed has very simple keybindings: +- g will refresh the items list +- G will refresh the items list and fetch new items +- r will mark currently selected item is read (remove unread tag) +- b will open item in the browser + +The "r" key messes with my muscle memory, as [notmuch](/tags/notmuch/) uses "ku" for the same action while "r" will start composing a reply. + +One huge upside of elfeed compared to newsboat is image support. Emacs is a GUI application, so all images are present in their glory! + +{{<img-center "elfeed-details.png" "Images!">}} + +My setup is near stock. I have a few dozen feeds that are auto-tagged. Three essential tags are "important", "news", and "company". I want to read each "important", then I want to see all normal, and finally I can just skim "news" and "company". Adding auto-tagging is very simple: just define the tag when defining the RSS feed list: + +``` +("https://rubenerd.com/feed/" blog important) +("https://www.pine64.org/feed/" company) +``` + +Now, each new article will be tagged with matching tags. Elfeed allows to define of custom faces that will be applied to items matching tag: + +``` +(defface important-elfeed-entry + '((t :foreground "#f77")) + "Marks an important Elfeed entry." + :group 'elfeed) + +(defface nonimportant-elfeed-entry + '((t :foreground "#C0C0C0")) + "Marks an nonimportant Elfeed entry." + :group 'elfeed) + +(push '(important important-elfeed-entry) + elfeed-search-face-alist) +(push '(company nonimportant-elfeed-entry) + elfeed-search-face-alist) +(push '(news nonimportant-elfeed-entry) + elfeed-search-face-alist) +``` + +Now important items will be dark red, while company & news will be dark gray (please note that my elisp-fu not good). + +{{<img-center "elfeed-list.png" "No important things to read at this moment.">}} + +Elfeed has a few packages expanding its functionality, but I found the default behavior to be exactly right. + diff --git a/resources/_gen/images/elfeed-details_hu61baf84d0328661405d829e336561098_2327424_1060x0_resize_q90_h2_box_3.webp b/resources/_gen/images/elfeed-details_hu61baf84d0328661405d829e336561098_2327424_1060x0_resize_q90_h2_box_3.webp Binary files differ. diff --git a/resources/_gen/images/elfeed-details_hu61baf84d0328661405d829e336561098_2327424_534x0_resize_q90_h2_box_3.webp b/resources/_gen/images/elfeed-details_hu61baf84d0328661405d829e336561098_2327424_534x0_resize_q90_h2_box_3.webp Binary files differ. diff --git a/resources/_gen/images/elfeed-list_hu6a798cfc345ac34e59e915f8a760dcea_566755_1060x0_resize_q90_h2_box_3.webp b/resources/_gen/images/elfeed-list_hu6a798cfc345ac34e59e915f8a760dcea_566755_1060x0_resize_q90_h2_box_3.webp Binary files differ. diff --git a/resources/_gen/images/elfeed-list_hu6a798cfc345ac34e59e915f8a760dcea_566755_534x0_resize_q90_h2_box_3.webp b/resources/_gen/images/elfeed-list_hu6a798cfc345ac34e59e915f8a760dcea_566755_534x0_resize_q90_h2_box_3.webp Binary files differ.