Cuaderno de GNUtas

Abrir y reproducir con emms enlaces multimedia dentro de Emacs

El navegador de Emacs, el eww mode, no puede abrir enlaces a archivos multimedia ni reproducirlos. Esto no debemos entenderlo, en cualquier caso, como un defecto sino más bien como una característica. Y siempre podemos optar por abrir el enlace en otro navegador (por ejemplo en Firefox), si nos situamos en aquél y pulsamos la tecla &. Lo que ocurre es que se trata de una práctica que cada vez intento evitar más. Por varias razones, que se pueden compendiar en dos: a) De un tiempo a esta parte el Firefox me da mucha pereza arrancarlo y, siempre que pueda, prefiero quedarme en un navegador en modo texto o en el eww-mode emacsiano, a salvo del gran colesterol de internet, que es el javascript. Y b) A pesar de que aún albergan interesantes contenidos, evitar entrar en páginas como la de YouTube es una prioridad para mí. Prefiero otras opciones: descargar el vídeo directamente con utilidades como youtube-dl o visualizarlo desde un programa reproductor del estilo VLC y similares. Pero, ¿por qué no hacer esto también dentro de Emacs, si queremos abrir allí un enlace multimeda? Se me ocurrió, por tanto, escribir esta simple función, que echa mano del excelente Emacs Multimedia System, más conocido por su acrónimo EMMS.

Antes de nada, para poder usar EMMS, es necesario contar con un mínimo de configuración. Se pueden añadir muchas variables, pero mi configuracion es bastante escueta, y casi se limita a asegurar que EMMS use el programa VLC para reproducir los archivos multimedia:

(require 'emms-setup)

(emms-all)

(emms-default-players)

(setq emms-player-list '(emms-player-vlc))

Una vez que nuestro EMMS ya está operativo en Emacs, se puede añadir mi función para abrir los enlaces multimedia:

(defun mi-multimedia-url-emms ()
  (interactive)
  (let ((url (get-text-property (point) 'shr-url)))
    (emms-play-url (format "%s" url))))

Para definir esta función, lo único que hice fue tomar como base la función eww-follow-link del eww-mode, que requiere el paquete shr.el, y estilizarla bastante, pues aquí no nos abre un enlace sino el archivo multimedia de turno. Ya sólo nos queda definir un atajo para cuando estemos navegando dentro de Emacs. En mi caso, he optado por la letra «m» (de «multimedia»):

(with-eval-after-load 'eww
  (define-key eww-mode-map (kbd "m") 'mi-multimedia-url-emms))

De este modo, cuando tengamos el cursor dentro de un enlace, si pulsamos m, lo podremos abrir y reproducir con el EMMS de Emacs, tal y como muestro en este breve vídeo de prueba:

Abrir y reproducir con emms enlaces multimedia dentro de Emacs from Juan Manuel Macías Chaín on Vimeo.

Publicado: 29/10/2019

Última actualización: 16/08/23


Índice general

Acerca de...

Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.

© Juan Manuel Macías
Creado con esmero en
GNU Emacs