Notxor tiene un blog

Defenestrando la vida

nyxt 2.0

2021-06-10

Creo que ya mencioné alguna vez nyxt en este blog o quizá estoy equivocado y sólo pensé hacerlo. En mi incansable búsqueda de un web browser gráfico que llevarme a mis navegaciones por la Internet, cada vez más, me van faltando alternativas. Parece que hay que quieren obligarme a morir al palo de chrome y así llegué a encontrar éste navegador, completamente escrito en Lisp. Hice varias pruebas con él en su versión 1.1 y lo encontré muy prometedor pero algo inestable e incompleto. Hace poco que me enteré que salió la versión 2.01 y vuelvo al ataque, a ver si ha mejorado y efectivamente: lo ha hecho. ¿Es mi navegador por defecto? Actualmente no, pero promete mucho y su modo Emacs me facilita mucho las cosas.

Inconveniente: no me compila

A pesar de mis esfuerzos por compilarlo desde el código fuente no he conseguido hacerlo. Mi hipótesis es que compila dependiendo de manera bastante cerrada de cómo están situadas las librerías en la distribución GNU/Linux y no encuentra dónde las sitúa OpenSuse. Porque el error que me lanza es sobre una librería que tengo instalada en una versión adecuada junto con el paquete devel con las cabeceras. El resto de dependencias, especialmente las de Lisp se manejan automáticamente por el compilador sbcl ─el mismo que usa el programador del sistema─ y no parece que haya problemas por ese lado.

No debo ser el único, porque una de las formas de distribución de nyxt es con todo el paquete conteniendo las dependencias y librerías metido todo en uno. Una solución que funciona, pero que ocupa un güevo y la yema del otro.

Ese fue el motivo de descartarlo después de las pruebas iniciales que hice la primera vez... pero acabándose las alternativas, a estas alturas no me parece que sea tan descabellado instalarlo de ese modo. No es el ideal y me gustaría haber podido compilarlo, pero al menos funciona y puedo ir haciendo pruebas hasta que encuentre cómo arreglar el problema de compilación.

Cómo funciona

Captura-pantalla_nyxt-pagina-nyxt.png

La ventana del navegador tiene una apariencia pulcra y cuidada. ¿Te recuerda a tu editor favorito? A mí sí.

En la barra de estado podemos ver los habituales botones (de izquierda a derecha) que nos permiten navegar a la página anterior, a la posterior o recargar la página. El siguiente nos permite ejecutar uno de los comandos del navegador y el último es la lista de buffers abiertos. Al lado de la botonera está la dirección de la página que tienes abierta. Más a la derecha una lista con los buffers que están abiertos, y por último, el espacio más a la derecha, nos dice los modos activados (por ejemplo, emacs, noscript, etc.). Debajo de la línea de estado, hay un buffer de texto que nos mostrará opciones según los comandos, muy parecido a como funciona Emacs aunque más ordenado y formateado en tablas.

Acabo de pasar por el asunto de los comandos muy rápido pero lleva un completo intérprete de Lisp cargado en él.

Captura-pantalla_lisp-repl.png

No lo he explorado aún a fondo, pero promete mucho, mucho. Para rematar, no sé si os sonará, puedes meter cualquier parámetro de inicio en el fichero ~/.config/nyxt/init.lisp. Concretamente tengo apenas dos ajustes para él:

;; Desactivar el javascript, por defencto al abrir un buffer
(define-configuration buffer
  ((default-modes (append '(noscript-mode) %slot-default%))))

;; Configurar las teclas de comando en modo Emacs
(define-configuration buffer
  ((default-modes (append '(emacs-mode) %slot-default%))))

Es posible también que no quieras modificar todas las teclas y sólo quieras una o dos. Puedes, por ejemplo, modificar la combinación de teclas para ejecutar un comando, sin cargar el emacs-mode, tal que:

(define-configuration buffer
  ((override-map (let ((map (make-keymap "override-map")))
                   (define-key map
                     "M-x" 'execute-command)))))

Y esto me lleva al siguiente punto.

Modos de teclas

Otra de las cosas que me encanta del navegador es que cuenta con modos de funcionamiento. Para resumirlo de manera rápida, nyxt puede funcionar en tres modos, o conjuntos de definición de teclas, CUA (por defecto), emacs y vi (este tiene dos modos, vi-insert y vi-normal2).

Por ejemplo, dos capturas para ver cómo cambian las cosas según el modo empleado:

Captura-pantalla_follow-hint-CUA.png
Captura-pantalla_follow-hint-emacs.png

En la primera captura se puede apreciar la configuración por defecto de teclas. Sin embargo, en la siguiente, vemos la misma captura de comando, pero con el emacs-mode activado. Por ejemplo, la combinación de teclas para activar execute-command en el modo por defecto es C-Espacio, mientras que en emacs-mode es M-x.

Edición

También cuenta con un editor de código interno:

Captura-pantalla_editor-buffer.png

Aún le queda mucho recorrido para alcanzar otras herramientas de desarrollo html, apenas es un buffer donde poder cargar un fichero html o css o js y modificar un poco su código, sin coloreado de sintaxis siquiera.

Navegación sin ratón

Navegar con ratón es como lo hacen el resto de los navegadores web. El problema de otros navegadores es que sin ratón, navegar es la muerte a pellizcos. Por el contrario, nyxt permite hacerlo sin ese periférico sin morir en el intento.

Para navegar por las páginas web podemos encontrar dos maneras distintas, que no falten alternativas. Una que tiene que ver con la lógica de la página utilizando el comando jump-to-heading, que nos mostrará una lista de las cabeceras definidas en la web cargada. Por ejemplo:

Captura-pantalla_navegacion-por-titulos.png

Si las páginas web sólo nos permitieran saltar a esos titulares no serían demasiado flexibles, quizá sería mejor leer un libro. La potencia de la web es precisamente que podemos encontrar un montón de enlaces en las páginas abiertas y formar la famosa red, abriendo todo un inmenso mundo de posibilidades a la navegación. La mayoría de los browsers gráficos permiten pinchar en cualquier enlace con el ratón, pero, como he dicho antes, si por algún motivo no tienes ratón o ganas de usarlo, navegar con cualquiera de ellos consiste en descargar desesperadamente nuestra frustración sobre el tabulador hasta alcanzar el elemento que deseamos para pulsar enter.

nyxt establece un comando que nos permite, mostrando una lista de los enlaces encontrados en la página, seleccionar cuál queremos utilizar y permitirnos saltar:

Captura-pantalla_navegacion-sin-raton.png

El principio es sencillo, se añade una etiqueta, combinación de letras a cada enlace y una lista que muestra el texto del enlace y la URL asociada. Basta movernos por esa lista o teclear el hint y nos moveremos como con el ratón.

Conclusión

Es pronto para sacar conclusiones, me quedan aún muchas cosas para investigar. En su uso, encuentro que es un navegador ligero, responde bien y rápido a los comandos, pero aún me encuentro torpe en su uso y desconozco muchas de las posibilidades que puede ofrecer.

El que funcione mediante comandos, da la sensación, que permitirá el poder generar scripts que no sólo configuren su funcionamiento, sino que completen las cosas que puede hacer. Me da la sensación de que puede convertirse en todo un nicho de desarrollo de aplicaciones, como lo es Emacs y como otros navegadores intentas emular con un lenguaje, javascript, menos agraciado que Lisp.

Ya volveré sobre el tema si consigo algo más interesante que contar.

Footnotes:

1

El día 20 del mes pasado.

2

Dos escrituras a elegir, vi, vi, vi, vi, viiiii... ya me disculparéis la coña.

Categoría: nyxt lisp emacs

Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en Mastodon y en Diaspora con el nick de Notxor.

También se ha abierto un grupo en Telegram, para usuarios de esa red.

Disculpen las molestias.