blob: c68833fc5b72ab0ad5a882fa2e7fc582507c2097 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
+++
title = "Emacs: Moving My RSS Reading to Elfeed"
author = ["Michał Sapka"]
date = 2023-05-19T23:00:00+02:00
categories = ["emacs"]
draft = false
weight = 2004
abstract = "Setting up config inside an org file aliases '(/2023/moving-my-rss-reading-to-emacs-with-elfeed/)"
[menu]
[menu.emacs]
weight = 2004
parent = "guides"
identifier = "elfeed"
name = "Following RSS with Elfeed"
+++
Since Emacs became my shell of choice[^fn:1], 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[^fn:2] to elfeed[^fn:3].
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)[^4]
- b will open item in the browser
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-c "elfeed-details.png" >}}
Images!
{{< /img-c >}}
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:
```emacs-lisp
("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[^fn:4]:
```emacs-lisp
(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
{{< img-c "elfeed-list.png" >}}
No important things to read at this moment.
{{< /img-c >}}
Elfeed has a few packages expanding its functionality, but I found the default behavior to be exactly right.
[^fn:1]: [Emacs as a Shell](/2023/emacs-as-a-shell/)
[^fn:2]: [Newsboat homepage](https://newsboat.org/)
[^fn:3]: [Elfeed repository on Github](https://github.com/skeeto/elfeed)
[^fn:4]: my elisp-fu not good
|