Minireceta: slrn

SLRN es otra de estas maravillas que ocupan poco espacio, consumen pocos recursos y que a cambio nos ofrecen todas las funcionalidades necesarias para realizar su trabajo como cliente de news.

Para instalarlo necesitaremos el paquete slrn (y slrn-pull en caso de no disponer de leafnode o inn en nuestro sistema). Nótese que aunque podemos utilizar slrn directamente con cualquier servidor de noticias, si lo usamos con uno local (instalado en nuestra máquina, como el famoso leafnode) podremos leer y contestar todas las news totalmente offline con el consecuente ahorro de dinero en conexiones.

Una vez instalado debemos de crear un fichero .slrnrc con las opciones de configuración que deseemos. Necesitaremos poner en nuestro .bashrc (o en cualquier otro fichero del sistema que sea ejecutado) la variable NNTPSERVER apuntando al server de news que queremos usar. En mi caso uso leafnode o sea que en lugar de poner news.ctv.es o similar pongo:

   export NNTPSERVER=localhost

Ahora ya podríamos arrancar el programa, pero todavía no existen los directorios necesarios, así que los creamos con (en nuestro HOME):

    mkdir News
    mkdir News/postponed
    slrn -f /home/nuestrohome/.newsrc -create

Hecho esto creará todos los ficheros necesarios y se conectará con el servidor de noticias para bajarse los grupos y sus descripciones. Si usamos leafnode esto será instantáneo. En caso de usar un server de news externo (news.ctv.es, news.mad.ttd.net y compañía) deberemos estar conectado a Internet para que se baje la lista de grupos, y esto tardará un poquito (dependiendo de la cantidad de grupos y de nuestra velocidad de conexión). Esto sólo hará falta hacerlo la primera vez.

Una vez tengamos en pantalla la lista de grupos, nos desuscribimos de todos con la tecla 'u' en cada grupo o bien pulsa ESC seguido de '1' seguido de 'u' y como grupos a desuscribir le dices * (todos).

Ahora añadimos con 'a' sólo los grupos que nos interesen, y los marcamos como suscritos con 's'. Si salimos se grabará el fichero .jnewsrc y a partir de ese momento en la lista nos aparecerán sólo estos grupos. Usa la tecla 'q' para salir y '?' para obtener ayuda.

Para arrancar el programa usando siempre esta lista de grupos y prevenir que intente coger grupos nuevos, arrancar siempre el programa con "slrn -n" (poned un alias slrn='slrn -n' en vuestro .bashrc o /etc/profile).

Lo siguiente sería ver las teclas del programa, pero como alguna de estas teclas las he modificado yo en mi .slrnrc para que se comporte como a mi me gusta, primero os muestro mis opciones de configuración y posteriormente veremos las teclas (modificables).

Fichero de configuración: .slrnrc (quitad los → y comentarios).

  hostname "iname.com"                -> Dominio (nombre@dominio).
  set username "compiler"             -> Usuario.
  set realname "Santiago Romero"      -> Nombre real.
  set replyto  "compiler@iname.com"   -> Responder A (campo Reply To).
  set quote_string ">"                -> Carácter de quoteado a usar.
  set followup_strip_signature 0      -> Si 1, no incluye firmas en Reply.
  set reject_long_lines 1             -> No te deja postear >80 car/línea
  ignore_quotes "^ ? ?[><:=]"         -> Define qué son quotes.
  set non_Xbrowser "lynx '%s'"
  %set non_Xbrowser "echo '%s'>>direcciones"
  set Xbrowser "netscape '%s' &"      -> Define los navegadores.
  set show_article 0                  -> No muestra el art 1 al entrar.
  set show_descriptions 1             -> Muestra descripciones de grupos.
  set no_backups 0
  set beep 0                          -> No pitidos.
  set unsubscribe_new_groups 1        -> Desuscribir todos los grupos
                                         (inicialmente, añadir con 'a').
  set show_thread_subject 1           -> Mostrar subjects.
  set mouse 1                         -> Usar el mouse si xterm.
  set display_cursor_bar  1           -> Cursor de barra en lugar de "->"
  set scroll_by_page 0                -> Scrollear por líneas.
  set auto_mark_article_as_read 1     -> Automarcar como leído al verlo.
  set query_next_group 1
  set query_next_article 1
  set prompt_next_group 1
  set confirm_actions 0               -> No confirmar cosas.
  set author_display 2
  set display_author_realname 1
  set write_newsrc_flags 0
  set cc_followup   1
  set cc_followup_string "[Este msg ha sido tb publicado en las news]"
  set use_tilde 1
  set save_posts "News/My_Posts"
  set save_replies "News/My_Replies"  -> Donde almacenar respuestas.
  scorefile "News/Score"              -> Fichero de puntuaciones.
  set min_high_score 1
  set max_low_score 0
  set kill_score -9999
  set abort_unmodified_edits 0
  set editor_command "vim +%d '%s'"   -> Vuestro editor favorito.
  set use_tmpdir 0                    -> No usar tmp.
  set sorting_method 11               -> Ordenar por thread/date.
  set display_score 1                 -> Ver puntuaciones de artículos.
  set new_subject_breaks_threads 0
  set uncollapse_threads 1
  set read_active 0
  set wrap_flags 4
  set query_read_group_cutoff 0
  set use_mime 1                      -> Soporte MIME
  set mime_charset "iso-8859-1"       -> Nuestro character set.
  set use_metamail 1
  set metamail_command "metamail"
  set use_header_numbers 1
  set query_reconnect 1
  set spoiler_char '*'
  set spoiler_display_mode 1
  set decode_directory "News"         -> Dónde decodificar mensajes.
  set save_directory "News"           -> Dónde salvar mensajes.
  set postpone_directory "News/postponed"
  set followup_string "El %d, %r escribió:"
  set reply_string "En %n, escribiste:"
  color header_number   "lightgray"    "black"
  color header_name     "green"        "black"
  color normal          "lightgray"    "black"
  color error           "red"          "black"
  color status          "yellow"       "blue"
  color group           "yellow"       "black"
  color article         "default"      "black"
  color cursor          "black"        "lightgray"
  color author          "brightred"    "black"
  color subject         "lightgray"    "black"
  color headers         "brightcyan"   "black"
  color menu            "yellow"       "blue"
  color menu_press      "blue"         "yellow"
  color tree            "red"          "black"
  color quotes          "cyan"         "black"
  color thread_number   "blue"         "black"
  color high_score      "red"          "black"
  color signature       "red"          "black"
  color description     "blue"         "black"
  color tilde           "green"        "black"
  color response_char   "green"        "black"
  setkey group   post_postponed "\eP"
  setkey group   add_group   "A"
  setkey group   bob      "\e<"
  setkey group   bob      "^K\eOA"
  setkey group   bob      "^K\e[A"
  setkey group   catchup     "C"
  setkey group   down     "\eOB"
  setkey group   down     "\e[B"
  setkey group   down     "^N"
  setkey group   eob      "\e>"
  setkey group   eob      "^K\eOB"
  setkey group   eob      "^K\e[B"
  setkey group   group_search_forward "/"
  setkey group   help     "?"
  setkey group   pagedown "^D"
  setkey group   pagedown "\e[6~"
  setkey group   pagedown "^V"
  setkey group   pageup      "\eV"
  setkey group   pageup      "^U"
  setkey group   pageup      "\e[5~"
  setkey group   post     "P"
  setkey group   quit     "Q"
  setkey group   redraw      "^L"
  setkey group   redraw      "^R"
  setkey group   refresh_groups "G"
  setkey group   save_newsrc "X"
  setkey group   select_group   "\r"
  setkey group   select_group   " "
  setkey group   subscribe   "S"
  setkey group   suspend     "^Z"
  setkey group   toggle_group_display "\033A"
  setkey group   toggle_scoring "K"
  setkey group   toggle_hidden  "l"
  setkey group   toggle_list_all   "L"
  setkey group   unsubscribe "U"
  setkey group   up    "\eOA"
  setkey group   up    "\e[A"
  setkey group   up    "^P"
  setkey article  post_postponed "\eP"
  setkey article  goto_article   "j"
  setkey article  pipe_article   "|"
  setkey article  skip_quotes "\t"
  setkey article  article_pageup    "^U"
  setkey article  article_pageup    "\e[5~"
  setkey article  article_pageup    "\eV"
  setkey article  article_pagedn    "\e[6~"
  setkey article  article_pagedn    "^D"
  setkey article  article_pagedn    "^V"
  setkey article  post "P"
  setkey article  toggle_show_author "\ea"
  setkey article  get_parent_header "\ep"
  setkey article  catchup_all "c"
  setkey article  catchup_all "\ec"
  setkey article  uncatchup_all  "\eu"
  setkey article  catchup     "\eC"
  setkey article  uncatchup   "\eU"
  setkey article  scroll_dn   " "
  setkey article  scroll_up   "^?"
  setkey article  scroll_up   "b"
  setkey article  article_lineup      "^P"
  setkey article  article_lineup      "\eOA"
  setkey article  article_lineup      "\e[A"
  setkey article  article_linedn  "\r"
  setkey article  article_linedn      "^N"
  setkey article  article_linedn      "\e[B"
  setkey article  article_linedn      "\eOB"
  setkey article  article_search   "/"
  setkey article  author_search_forward  "a"
  setkey article  author_search_backward "A"
  setkey article  cancel     "\e^C"
  setkey article  delete     "d"
  setkey article  down "\e\e[B"
  setkey article  down "\e\eOB"
  setkey article  mark_spot  ";"
  setkey article  exchange_mark ","
  setkey article  followup   "f"
  setkey article  forward    "F"
  setkey article  help    "?"
  setkey article  hide_article  "H"
  setkey article  zoom_article_window  "z"
  setkey article  art_eob    ">"
  setkey article  left    "\eOD"
  setkey article  left    "\e[D"
  setkey article  next    "n"
  setkey article  skip_to_next_group  "N"
  setkey article  prev    "p"
  setkey article  quit    "q"
  setkey article  redraw     "^L"
  setkey article  redraw     "^R"
  setkey article  reply      "r"
  setkey article  art_bob    "<"
  setkey article  right      "\e[C"
  setkey article  right      "\eOC"
  setkey article  save    "O"
  setkey article  subject_search_forward "s"
  setkey article  subject_search_backward   "S"
  setkey article  suspend    "^Z"
  setkey article  toggle_collapse_threads "\et"
  setkey article  toggle_rot13   "\eR"
  setkey article  toggle_sort "\eS"
  setkey article  toggle_headers   "t"
  setkey article  toggle_quotes "T"
  setkey article  up   "\e\e[A"
  setkey article  up   "\e\eOA"
  setkey article  header_bob  "\e<"
  setkey article  header_eob  "\e>"
  setkey article  shrink_window  "^^"
  setkey article  enlarge_window "^"
  setkey article  next_high_score  "!"

NOTA: Unas teclas interesantes para hacer SLRN compatible con las teclas de MUTT son las siguientes:

  setkey article  followup      "r"     % Followup on the article
  setkey article  forward       "f"     % Forward the article to someone
  setkey article  reply         "m"     % Reply to the author

Cambiad arriba las teclas indicadas por estas 3 que veis ahí.

Como podeis ver, es posible cambiar los colores de cualquier campo de las noticias: texto quoteado (quotes), texto normal, etc. Esto nos permitirá configurar los colores como más nos guste. Las teclas son también totalmente configurables. Yo en concreto he cambiado sólo 4 de ellas.

Inicialmente cuando pulsas INTRO en tu lista de grupos se te pregunta cuantos mensajes quieres recoger (si excede el límite de mensajes expuestos) y si no hay límite se recogen automáticamente las cabeceras de los nuevos y os aparece una lista en pantalla (lista de mensajes). Mediante ARRIBA y ABAJO de los cursores os moveis por la lista de mensajes, y con ENTER se visualiza el mensaje actual (se parte la pantalla para ver cabeceras y mensaje simultáneamente). Con ALT+ABAJO y ALT+ARRIBA se baja y sube una línea en el texto del mensaje. Con ESPACIO se avanza una página, etc.

Netscape tiene las teclas totalmente al revés, es decir: con las teclas ALT+ARRIBA y ALT+ABAJO te mueves por la lista de mensajes y con ARRIBA y ABAJO te mueves por el mensaje en sí. Como me gusta más estos keybindings los cambién en el fichero de configuración (.slrnrc) para usarlas. Así dándole a abajo se visualiza el mensaje, sólo hay que tener las manos en los cursores y ALT y soltar ALT cuando interese. Las líneas que indican estas teclas son:

  setkey article  up   "\e\e[A"
  setkey article  up   "\e\eOA"
  setkey article  down "\e\e[B"
  setkey article  down "\e\eOB"
  setkey article  article_lineup      "\eOA"
  setkey article  article_lineup      "\e[A"
  setkey article  article_linedn      "\e[B"
  setkey article  article_linedn      "\eOB"

Podeis no especificar estas líneas y dejar los valores por defecto, o bien especificar los valores que prefirais (recordad que en VIM se usa CTRL+V en modo inserción para meter carácteres especiales). De todas formas, en SLRN pronto os acostumbrareis a usar 'n' y 'p' para moveros al siguiente (n) y anterior (p) artículo no leído. También podeis utilizar el ratón para ver los artículos (en X).

Una vez visto el fichero de configuración, ya sabemos entrar en slrn (con slrn -n), salir de él con 'q' y borrar la lista de grupos y añadir sólo los que nos interesen. Salimos de slrn para que se grabe esta lista de grupos interesados (ver nota) y nos preparamos para ver la lista de teclas más comunes en slrn.

NOTA: aunque nos suscribamos en un grupo, si usamos un server local necesitaremos que dicho server, como leafnode o inn, marquen ese grupo para bajarse las news de allí. Normalmente basta con consultar el grupo en el slrn (que inicialmente estará vacío) para que leafnode o inn se enteren de la petición.

Teclas de SLRN (diferenciar mayúsculas y minúsculas):

En la lista de grupos:

   a             Añadir un nuevo grupo.
   SPACE/ENTER   Entrar en el grupo actual.
   s             Suscribirse a grupo.
   u             Desuscribirse de grupo.
   G             Coger nuevas news.
   ESC 1 INTRO   Ver TODOS los mensajes de un grupo (tb los leídos).

Dentro de un grupo:

Comandos de artículo:

    SPACE        Seleccionar artículo.
    W            Wrap o Unwrap artículo (si se sale de pantalla).
    T            On/OFF líneas quoteadas.
    t            Ver cabeceras del mensaje.
    TAB          Empezar bajo el texto quoteado (útil!).
    ESC Ctrl-C   Cancelar artículo (si eres el autor).
    ESC Ctrl-S   Editar texto original.
    0            Asignar rating al artículo.
    h            Esconder ventana de cuerpo del mensaje.
        z                        Ampliar/Esconder ventana de mensaje actual.
    k            Dar una puntuación a un artículo, thread, o autor.
                 Con puntuaciones positivas podreis ver los artículos
                 de estos autores/temas los primeros, o bien con -9999
                 no recoger ni uno sólo más de estas personas/temas.

Búsqueda:

    /            Buscar hacia adelante en el artículo.
    a            Buscar autor hacia adelante.
    A            Buscar autor hacia atrás.
    s            Buscar subject hacia adelante.
    S            Buscar subject hacia atrás.

Responder, replicar, imprimir, etc:

    y            Enviar artículo a la impresora.
    P            Postear un artículo nuevo.
    ESC P        Postear un artículo postpuesto.
    f            Responder (Re:) al artículo actual.
                 Nos preguntará si queremos hacer CC (copia) al autor.
    F            Forward del artículo a una dirección.
    r            Responder (por email, no news) al autor.
    o            Añadir el artículo o thread a un fichero (si es
                 muy interesante lo guardamos :).
    #            Marcar artículo para acciones sobre varios.
    ESC #        Desmarcar artículos.
    :            Decodificar artículo o thread (o grupos de mensajes).
    |            Pipear el artículo a un comando externo
                 (extraer URLs, etc.)

Comandos aplicables a la ventana de cabeceras:

    d            Marcar artículo como leído y avanzar.
    u            Marcar artículo como no leído y avanzar.
    p            Mover al anterior artículo no leído.
    n            Mover al siguiente artículo no leído
                 (y al siguiente grupo si es necesario).
    L            Ir al último artículo leído.
    N            Saltar al siguiente grupo de news.
    ;            Marcar posición actual.
    ,            Volver a posición marcada.
    q            Volver a la lista de grupos.
    ESC t        Des/plegar thread.
    ESC >        Ir al último articulo del grupo.
    ESC <        Ir al primer thread.
    Ctrl-U       Retroceder Página en las cabeceras.
    Ctrl-D       Avanzar página en las cabeceras.
    ESC-a        Cambiar modo de visualización de cabeceras.
    ESC-s        Elegir modo de ordenación.
    ESC-p        Encontrar mensaje padre.
    ESC 1 ESC p  Reconstruir thread.
    c            Marcar todos los artículos como leídos.
    ESC-u        Marcar todos los artículos como no leídos.
    C            Marcar artículos hasta el actual como leídos.
    ESC-U        Marcar artículos hasta el actual como no leídos.
    ESC 1 K      Editar fichero de scores.
    *            Marcar cabecera como inafectable por comandos catchup.
    ESC 1 *      Desmarcar todos los '*'.
    x            Borrar todos los artículos leídos de la lista..
    .            Repetir última secuencia de teclas.
    U            Buscar alguna URL en el mensaje y saltar a ella.
    SHIFT+6      Ampliar ventana de mensajes.
    CTRL+6               Reducir ventana de mensajes.

Cread también el directorio News y News/postponed en vuestro home.

Fichero de configuración: .jnewsrc

Fichero de grupos. Creado por el programa (no hace falta tocarlo). Hay que acordarse de arrancar el programa siempre con slrn -n para que nos mantenga solo suscritos a lo grupos deseados.

Utilizar SLRN

Bueno, veamos un dia normal en el uso de slrn a título de ejemplo si tanta tecla te parece algo abrumador…

Entramos en slrn con "slrn -n" (en mi caso con sólo slrn porque tengo un alias en el .bashrc). En pantalla aparecen sólo 7 grupos:

 -> es.comp.os.linux.misc
    es.comp.os.linux.redes
    es.comp.os.linux.instalacion
    es.comp.os.linux.programacion
    es.ciencia.electronica
    es.comp.sistemas.sinclair
    comp.sys.sinclair

Me apetece leer es.comp.os.linux.programacion, así que con abajos y enter me meto en el grupo… Aparecen todos los mensajes. Pulso ENTER (o abajo con mi actual configuración de teclas) y la pantalla se parte en 2 (cabeceras y abajo el primer mensaje). No me interesa, paso al siguiente con la tecla 'n' (y así ademas se marca como leído). Paso bastantes mensajes ('n', 'n', 'n', etc :), hasta que veo uno que me interesa responder… le doy a la tecla 'f' (followup = responder). Me pregunta si quiero dirigir el mensaje TAMBIÉN al autor. Le digo N. Aparece el vim con el texto quoteado: escribo el mensaje y salgo grabando con :x . En la línea de abajo se me pregunta si estoy seguro de querer postearlo. Como no he dicho ninguna barbaridad (ya vereis como no os arrepentireis de que lo pregunte) le doy a Y (sí). Mensaje enviado. Ahora quiero enviar una pregunta nueva. Le doy a 'P' (en mayúsculas) y sigo los mismos pasos. Cuando encuentro uno que quiero responder personalmente (sólo al autor) uso la 'r' (reply). Por cierto, como habeis podido ver, todas estas teclas son configurables, de hecho yo uso teclas diferentes para slrn (uso las mismas que mutt).

Sigo leyendo con 'n' … um, acabo de encontrar un mensaje que quiero mantener como no leído porque me interesa leerlo más tarde. Me pongo sobre él y le doy a la 'u' (unread).

Sigo ('n') leyendo mensajes (en la barra central aparece cuantos faltan, el porcentaje de leídos, etc.) y encuentro uno que quiero guardar: le doy a la 'o' y escribo que lo guarde en el fichero "prog".

¡Vaya! ¡El siguiente mensaje es de un impresentable! A este no quiero leerlo más en un mes o dos. Me pongo sobre su mensaje y le doy a la k (score), me pregunta de qué tipo (le digo FROM, no me interesa el tío ORIGEN del mensaje), me pregunta el score: -9999 (adios!), le digo que lo aplique al grupo actual y que expire dentro de un mes (aunque puedes decirle que para siempre). Adios al susodicho personaje ya que no le volveremos a leer hasta que expire el score. El siguiente thread no me interesa, así que el score lo aplicaré (k) al SUBJECT y no volveré a ver los mensajes "Tal cosa" ni "Re: Tal cosa"… Sigo leyendo ('n') hasta que se acaba el grupo. Hago lo mismo con los otros grupos :)

Bueno, ya he terminado el grupo. Salgo con 'q' y… otro dia más.


<Volver a la sección de GNU/Linux>