Tutoriel Installation elfeed dans emacs

Présentation

Précédemment, j'utilisais, pour lire mes flux rss, Tiny Tiny Rss
Cependant, je n'arrivais plus à le mettre à jour et la seule façon viable de l'installer est de passer par un docker.
J'utilise un raspberry Pi3 pour l'auto hébergement de mon serveur
Malheureusement, il n'existe pas d'image docker officiel de ttrss pour les processeurs arm.

J'ai fait quelques recherches pour remplacer ttrss. Il existe, pour les plus connus :

  • FreshRss
  • CommaFeed
  • Nextcloud News pour ceux qui possèdent un serveur nextcloud
  • Emacs Elfeed pour les passionnés d'Emacs comme moi

  • J'aurais pu installer l'application News depuis Nextcloud, mais elle n'était pas disponible pour un processeur arm 32 bits. Finalement, j'ai choisi elfeed couplé avec la synchronisation de nextcloud pour pouvoir lire les news depuis n'importe quel PC. Je vous explique pourquoi.
    Elfeed est :

  • Totalement configurable (Score de l'article, couleur du flux suivant le tag, emplacement des fichiers de configuration, etc ...)
  • Intégré à Emacs
  • Léger
  • Recherche de flux aisée

  • J'utilise Emacs pour beaucoup de chose maintenant :
  • Programmation (C++) avec lsp-mode, Yasnippet
  • mail avec mu4e
  • Org mode pour une todo list

  • Donc pourquoi ne pas l'utiliser pour lire mes flux rss.

    Concept

    L'idée est d'utiliser nextcloud-desktop pour synchroniser, à partir du serveur nextcloud, tous les fichiers nécessaires au bon fonctionnement d'Elfeed. Cependant, je ne suis pas sûr que cela fonctionne nominalement si deux ordinateurs synchronisent simultanément ces fichiers. Pour ma part, ce n'est pas très grave car je n'utilise qu'un seul PC à la fois. Il est également possible d'afficher une page web des flux rss à partir d'elfeed. Nous allons voir comment mettre tout cela en place.

    Logiciels nécessaires

    Pour pouvoir se servir d'elfeed et synchroniser les fichiers, il faut :

  • Un serveur Gnu/Linux avec Nextcloud installé
  • Le logiciel nextcloud-desktop sur le client
  • Emacs
  • Les paquets elfeed nécessaires (elfeed, elfeed-org, elfeed-score), use-package pour la configuration
  • Le paquet elfeed optionnel (elfeed-web) et simple-httpd pour le serveur http
  • Installation des logiciels

    Pour le serveur nextcloud, il faut bien évidemment tout d'abord un serveur LAMP puis rajouter Nextcloud. Vous avez le choix, la manière classique manuelle, docker, snap aussi pour Ubuntu

    Pour le logiciel de synchronisation sur la machine cliente, il doit être disponible dans les dépôts. Donc pour Debian, ça donne en root :

    apt install nextcloud-desktop
    Pour les autres distributions, vous n'aurez aucun mal à adapter

    Le logiciel Emacs est également dans les dépôts :

    apt install emacs

    Pour les paquets obligatoires elfeed et en ayant lancé Emacs sur votre ordinateur client, faire

    Alt-x package-install Appuyer sur Enter

    Choisissez les paquets elfeed à installer
    elfeed elfeed-org elfeed-score

    le paquet use-package pour la configuration
    use-package

    et si vous le souhaitez, les paquets optionnels
    elfeed-web simple-httpd

    Configuration d'elfeed minimale

    Dans votre fichier de configuration d'emacs (.emacs, init.el, settings.org, etc...) :

  • Pour elfeed, commentée
    (use-package elfeed ;;Utiliser le paquet elfeed
    :defer t
    :init (setf url-queue-timeout 30) ;;Attendre 30 secondes pour le timeout
    :config
    (defface Linux-elfeed-entry
    '((t :foreground "#fd0"))
    "Mettre en orange les tags Linux")
    (push '(Linux Linux-elfeed-entry)
    elfeed-search-face-alist)
    (setq elfeed-search-title-max-width 80) ;;Largeur de la colonne Titre des articles
    (setq elfeed-db-directory "~/elfeed")) ;;Dossier d'elfeed. Je préfère le mettre dans le dossier home pour ne pas le synchroiser avec Nextcloud. ça ne sert à rien
    (run-at-time nil (* 1 30 60) #'elfeed-update) ;;Mise à jour des feeds toutes les 30 minutes

  • Pour elfeed-score, commentée
    (use-package elfeed-score ;;Utiliser le paquet elffed-score
    :ensure t
    :config
    (elfeed-score-load-score-file "~/Nextcloud/.elfeed/elfeed.score") ;;Chemin du fichier elfeed-score
    (setq elfeed-score-serde-score-file "~/Nextcloud/.elfeed/elfeed.score") ;;Chemin du fichier elfeed-score
    (elfeed-score-enable) ;;activer elfeed-score
    (define-key elfeed-search-mode-map "=" elfeed-score-map)) ;;définir la touche "=" comme touche primaire d'elfeed-score
  • Pour elfeed-org commentée
    (use-package elfeed-org ;;utiliser le paquet elfeed-org
    :ensure t
    :config
    (elfeed-org) ;;Lire la configuration d'org-mode
    (setq rmh-elfeed-org-files (list "~/Nextcloud/.elfeed/elfeed.org"))) ;;Chemin du fichier elfeed.org
  • Si vous le souhaitez, elfeed-web
    (elfeed-web-start) ;;démarrer le service web d'elfeed

  • Et pour le serveur http :
    (use-package simple-httpd ;;utiliser le paquet simple-httpd
    :ensure t
    :config
    (setq httpd-host "0.0.0.0") ;;Ecoute de toutes les ip entrantes
    (setq httpd-port "8080")) ;;sur le port 8080

  • Fichiers de configuration d'elfeed

    Il existe deux fichiers de configuration pour elfeed :

    Exemple d'un fichier elfeed.org :
    * blog :elfeed:
    ** News :news: #tag news
    *** [[https://www.lemonde.fr/rss/une.xml][Le Monde]] #Flux rss du monde
    *** [[https://www.mediapart.fr/articles/feed][Mediapart]] :Mediapart: #tag Mediapart et flux rss de Mediapart
    ** Informatique :Informatique: #tag informatique
    *** [[https://www.journalduhacker.net/rss][Journal du Hacker]] #flux rss du journal du hacker
    *** [[https://restez-curieux.ovh/feed/][Cyrille Borne]] # flux rss de cyrille borne
    *** [[https://distrowatch.com/news/dww.xml][Distrowatch]] #flux rss de distrowatch
    ** Linux #Pour les flux Linux
    *** Archlinux :Archlinux: #tag Archlinux
    **** [[https://archlinux.org/feeds/news/][Archlinux]] #flux Archlinux
    *** LinuxFr :Linux: #tag Linux pour Linuxfr
    **** [[https://linuxfr.org/news.atom][LinuxFr Depeches]]
    **** [[https://linuxfr.org/journaux.atom][LinuxFR Journaux]]
    **** [[https://linuxfr.org/liens.atom][LinuxFr Liens]]
    **** [[https://linuxfr.org/forums.atom][LinuxFr Forums]]
    ** Sciences :Science: #Tag science
    *** [[https://www.futura-sciences.com/rss/actualites.xml][Futura Sciences]] #flux rss de Futura Sciences

    Exemple de fichier elfeed.score :
    ;;; Elfeed score file -*- lisp -*-
    (
    ("title-or-content" ;;Pour les mots Ubuntu sur le titre, ajouter un score de 100 et le contenu 150
    (:text "Ubuntu" :title-value 150 :content-value 100 :type s)
    (:text "Emacs" :title-value 1000 :content-value 800 :type s) ;;Pour le mot Emacs dans le titre, ajouter 1000 au score et 800 pour le contenu
    (:text "Linux" :title-value 300 :content-value 160 :type s)) ;;Pour les mots Linux sur le titre, ajouter un score de 300 et le contenu 160
    ("tag" ;;Sur le tag Linux ajouter 750
    (:tags (t . Linux)
    :value 750
    :comment "Ajout 750 points pour Linux tag")
    (:tags (t . Informatique) ;;Sur le tag Informatique ajouter un score de 500
    :value 500
    :comment "Ajout 500 points pour Informatique tag")
    (:tags (t . emacs) ;;Sur le tag emacs, ajouter un score de 1000
    :value 1000
    :comment "Ajout 1000 points pour Emacs tag")
    (:tags (t . Archlinux) ;;Sur ke tag de Archlinux ajouter un score de 1500
    :value 1500
    :comment "Ajout 1500 points pour Archlinux tag"))
    ("adjust-tags"))

    L'explication des options sont à cette adresse : Elfeed score. Placer ces deux fichiers dans le dossier "~/Nextcloud/.elfeed/"
    Maintenant, il n'y a plus qu'à lancer elfeed :
    Alt-x elfeed

    Vous devriez voir quelque chose comme cela
    Elfeed
    Les premiers flux ont le score le plus élevé donc plus intéressants. Les couleurs selon les tags choisis : Jaune pour Linux, Bleu pour Informatique, Vert pour Médiapart, Blanc pour le reste. Cela permet de tout de suite identifier l'origine du flux.

    Configuration pour elfeed web

    Pour elfeed Web, vous avez la possibilité de consulter vos feeds via le serveur. Pour cela, il faudra lancer un emacs configuré en serveur sur le serveur LAMP.
    Les flux RSS seront donc disponibles à cette adresse : https://nom_serveur/:8080/elfeed/ directement dans votre navigateur web.
    L'interface n'est pas super et il n'y aura pas de score

    Utilisation

    Voici les commandes de base pour utiliser elfeed :

    Vous avez également un filtre de recherche en pressant "s"
    les filtres disponibles sont des filtres de date (@5-days-ago, @1-year-old, @2-weeks), lu/non lu (+unread), filtre mots (linu[xs]), filtre combiné (linu[xs] @1-year-old), etc ...

    Avec l'application telegram-desktop, sélectionner le dossier .elfeed dans le dossier ~/Nextcloud pour le synchroniser. Cela permettra d'avoir exactement les mêmes copies de fichiers sur tous les ordinateurs clients.