martes, 10 de marzo de 2009

HAL y w3m (I)

La navegación por la World Wide Web, o la Web, para abreviar es, tal vez, la actividad mayoritaria del usuario de un ordenador. A pesar de su juventud ---no deja de ser una teenager---, la Web ha seducido rápidamente a las masas de usuarios, que no conciben ya su vida sin la omnipresencia de un navegador por el que aventurarse a través de su intrincada trama.

Los navegadores de puro texto son tan antiguos como la propia Web. De hecho, el padre de todos ellos, Lynx, es casi contemporáneo al surgimiento de la Web y el único, que yo conozca, de los navegadores pioneros todavía en uso.

w3m es otro navegador de consola. Y es de él de quien vamos a hablar a continuación.

¿Pero a qué viene empecinarse en utilizar un navegador de consola cuando disponemos de excelentes navegadores gráficos? ¿Se trata sólo de un reprensible mal gusto?

Es cierto que hoy en día la mayor parte de los sitios web están pensados para ser visitados por navegadores gráficos, y ahí no hay discusión que valga, la navegación es simplemente más fácil o más intuitiva con un ellos. Así, aunque w3m permite una navegación "visual" ---permite ver la página web de turno con sus imágenes incorporadas---, el resultado no es comparable ni de lejos al de un navegador gráfico habitual, especialmente si a ello se suma el hecho de que w3m carece de soporte Java script. Sin embargo, la visualización del texto de una página con w3m es excelente. Es más, w3m puede utilizarse ---y forma parte de sus primeros objetivos--- como paginador, en lugar, por ejemplo, de more o de less. Pero incluso como mero navegador, un navegador como w3m u otros navegadores de consola tiene dos indudables ventajas: su rapidez y su versatilidad.

La rapidez de w3m es evidente ya desde el momento del arranque: el tiempo de carga de la aplicación es prácticamente inapreciable. También el tiempo de carga de las páginas remotas es sensiblemente inferior al de cualquier navegador gráfico, especialmente si tenemos en cuenta que la página se descarga en su totalidad antes de mostrarse. De ahí que un uso nada extravagante de w3m sea el emplearlo para echar un rápido vistazo a las páginas que nos interesan y abrirlas luego, si es pertinente, en un navegador gráfico desde el propio w3m, que proporciona una opción justo para ese fin.

Más importante, si cabe, es la versatilidad. Al tratarse de una aplicación de consola, w3m se integra perfectamente con otras aplicaciones de consola y habita a sus anchas en el mundo de HAL. Veremos algún ejemplo posteriormente.

Instalar w3m, si no lo está ya ---Debian, por ejemplo, lo incluye entre las aplicaciones estándar---, es trivial:

aptitude install w3m

Si se desea soporte para visualización en línea de las imágenes de la página, hay que instalar también el paquete w3m-img.

Antes de empezar a utilizar w3m es preciso definir las funciones básicas que esperamos que una navegador web nos proporcione:

  • Acceder a una página web a través de su dirección o, técnicamente hablando, su URL.

  • Navegar por la página. Lo que implica al menos tres cosas: moverse por ella, seguir los enlaces (links) que contiene y rellenar y enviar sus formularios. Son comunes, además, otras dos formas de navegación:

    • Navegar por la página actual o cualquier de sus enlaces en pestañas independientes (tabs).

    • Navegar por la página actual o cualquiera de sus enlaces en un navegador externo.

  • Recargar (reload) la página.

  • Abortar o detener la carga de una página.

  • Acceder a las páginas visitadas en la sesión actual de navegación.

  • Obtener información general sobre la página actual.

  • Ver (view) el código fuente de la página actual.

  • Obtener la lista de enlaces que contiene la página.

  • Guardar (save) la página en disco o cualquiera de las objetos enlazados en ella.

  • Añadir (add) la URL de una página a una lista de marcadores, para su posterior consulta.

  • Acceder a la lista de marcadores (bookmarks).

  • Acceder al historial de navegación.

  • Acceder al historial de descargas.

  • Acceder a las cookies almacenadas.

  • Configurar la interfaz y otras opciones del navegador.

  • Obtener ayuda sobre la interfaz.


Esta lista de funciones deseadas será el hilo conductor de nuestra exposición. Trataremos de describir ordenadamente las órdenes o atajos de teclado de w3m correspondientes a cada una de ellas. La configuración de la interfaz, sin embargo, va a ocupar nuestra atención inicial. Nos detendremos únicamente en aquellos aspectos configurables que pueden requerir una adaptación inmediata por parte del usuario. El resto se dejarán en sus valores por defecto y será el lector quien determine en el futuro si le interesa refinar dichos valores.

Aunque w3m se puede configurar directamente en un fichero de texto ---el fichero ~/.w3m/config---, es más cómodo hacerlo desde la interfaz de configuración que suministra la aplicación.

Para acceder a la interfaz de configuración es necesario abrir w3m. Como siempre lo hacemos desde la línea de órdenes de HAL. Se puede hacer de varias formas. Por ejemplo, una frecuente es darle a w3m como argumento una dirección URL:

w3m http://w3m.sourceforge.net

De hecho, si ejecutamos w3m sin opciones, no se abrirá. Necesita un argumento, ruta de fichero o dirección URL para arrancar. Otra posibilidad es utilizar la opción -v, que nos abrirá w3m con una página de inicio preestablecida por defecto.

w3m -v

El resultado se puede ver en esta imagen:



A las opciones de configuración se accede mediante la orden 'o' (de options).

w3m nos mostrará una interfaz (en inglés) para realizar la configuración:



Por esta interfaz nos moveremos como por cualquier página web o, en caso de que usemos w3m como paginador, como por cualquier fichero.

Por tanto, lo primero, antes de seguir con la configuración en sí, es aprender a moverse por la interfaz de w3m.

De momento lo haremos mediante el ratón ---w3m proporciona soporte para operar con ratón. El clic izquierdo del ratón, que es el único del que hablaremos aquí, funciona de la siguiente manera. Un primer clic sitúa el cursor sobre el objeto sobre el que pincha. Si ese objeto es un hipervínculo, un nuevo clic abrirá la página enlazada. Si es una casilla de verificación, un nuevo clic la activará o desactivará, si es un caja de opciones, abrirá esa caja para seleccionar la opción que deseemos, etc. Por tanto, un doble clic realizará las dos operaciones, una detrás de otra, que es lo que habitualmente interesa. Por su parte, la rueda del ratón nos permitirá deslizarnos por el documento que tenemos en pantalla. [Si el lector va a usar screen, ahora o más tarde, lea mi primer comentario a esta entrada.]

Establezcamos, pues, una configuración personal mínima. Las opciones de configuración presentadas por w3m se dividen en secciones diferentes. Cada sección termina con un botón 'OK'. Si pulsamos este botón se activarán los cambios efectuados en dicha sección.

Display Settings
Display inline images: NO
En principio, veremos las páginas sin imágenes, en puro texto.

Load inline images automatically: NO
Puesto que las páginas serán mostradas sin sus imágenes y no tenemos intención de verlas habitualmente, no tiene sentido cargarlas por anticipado. Con ello, además, se acelera la carga de las páginas mostradas.

Color Settings
Color of anchor: yellow
Conviene cambiar el color aquí si nuestro terminal es de fondo oscuro. En caso contrario, está opción se puede dejar como está.

Enable coloring of active link: YES
Activamos esta opción si interesa que los hipervínculos reciban un color diferente al habitual cuando el cursor está sobre ellos. En general, es conveniente porque facilita la navegación por el documento presentado.

Use visited link color: YES
Cuando se activa esta opción, los hipervínculos que se han seguido, esto es, los que se han pinchado, recibirán un color especial. También facilita la navegación por el documento.

External Program Settings
Editor: /usr/bin/vim
Usaremos Vim como nuestro editor en w3m. Nótese que aquí se indica la ruta completa de Vim [Ver, además, mi segundo comentario a esta entrada].

External Browser: /usr/bin/iceweasel
Usaremos Iceweasel (el nombre que en Debian recibe Firefox) cuando queramos abrir en otro navegador la misma página web que vemos en w3m.

Network Settings
Default value for open-URL command: none
La orden para abrir una URL, que veremos en otro momento, presenta una línea en la parte inferior de la interfaz de w3m donde escribir la URL a la que queremos dirigirnos. Por defecto, w3m nos presentará la URL del documento actual. En general, es incómodo tener que borrar esa dirección antes de escribir aquella a la queremos ir. La opción propuesta evita este paso intermedio.


Con esta configuración, podemos navegar desde este momento por cualquier sitio web que no obligue a tener activado soporte para Java Script o que, como esos otros nefandos, no fuerce a tener instalado un reproductor de Flash. Los sitios accesibles, que son bastantes, pero, desgraciadamente, no todos, proporcionarán páginas alternativas para quien quiera visitarlos con navegadores como w3m.


Resumen:

  • w3m es un ayudante de HAL para la navegación por la Web o para paginar ficheros o flujos de texto.

  • La opción -v de w3m abre w3m con una página inicial por defecto. Sin esta opción, es obligatorio proporcionar como argumento a w3m la URL de una página web o la ruta de un fichero del sistema.

  • La orden o de w3m presenta una interfaz para su configuración.

2 comentarios:

  1. Para poder usar w3m con ratón, cuando w3m es un programa que corre sobre una ventana de screen, es necesario hacer que screen ponga $TERM a un valor para el que w3m da soporte de ratón. w3m proporciona soporte para 'xterm', pero, por defecto, screen, pone $TERM a 'screen'. Una forma de resolver el problema es utilizar la opción '-T' de screen, para iniciar w3m, y darle como argumento 'xterm'.

    Así por ejemplo las líneas de '.screenrc' correspondientes a una sesión con dos ventanas (una con 'bash' y otra con 'w3m') serían estas:

    screen -t bash
    screen -T xterm -t web w3m -v

    ResponderEliminar
  2. Ciertas teclas de función parecen estar utilizadas por w3m. Esto provoca una incompatibilidad entre posibles asociaciones de teclado de vim y la configuración de w3m. Por ejemplo, las órdenes ':map' del fichero propuesto como ejemplo en otro artículo, no funcionan para las teclas F2 y F3.

    Resolver el problema pasa simplemente por cambiar la tecla asociada a la orden de vim correspondiente.

    ResponderEliminar