mailto y cuentas provistas por Google

A princípios de agosto del año pasado, la comunidad esDebian.org estuvo regalando cuentas de correo de Google a sus usuarios. (Para seguir la noticia: http://www.esdebian.org/foro/25345/cuentas-email-usuarioesdebianorg.)

Entonces me surgió la idea que podía usar dicho correo, o sea, el provisto por esDebian.org, para cuando aparece los famosos “mailto:alguien@dominio.com”.  (El tutorial para hacerlo con Gmail en: http://captchafobia.blogspot.com/2008/07/utilizar-gmail-como-cliente-mailto.html.)

Lo primero que hice fue ir al la barra de URL y abrir las opciones de configuración con “about:config” y prometer que sería cuidadoso :-).
Buscamos la entrada que dice:

gecko.handlerService.allowRegisterFromDifferentHost

y le cambiamos el valor por “True”
Más abajo esta la línea que dice:

gecko.handlerService.schemes.mailto.1.name

donde la cambiamos por el nombre de nuestro correo (en mi caso, esDebian).

Ahora viene lo importante. Abajo de la anterior línea se encuentra esta:

gecko.handlerService.schemes.mailto.1.uriTemplate

es aquí donde tenemos que definir el nombre de nuestro servicio de correo brindado por gmail. Por defecto, dice:

https://mail.google.com/mail/?extsrc=mailto&url=%s

Abrí en una pestaña del navegador mi cuenta de correo y, en la bandeja de entrada me encontré con esto:

https://mail.google.com/a/esdebian.org/#inbox

Cambié entre el .com/ y ?extsrc= por:

https://mail.google.com/a/esdebian.org?extsrc=mailto&url=%s

donde lo único que hice fue pasarle la dirección donde gmail debería abrir el nuevo correo.

Reiniciamos Firefox y listo. Ya tenemos nuestro cliente de correo -brindado por gmail- por defecto en los mailto.
Nota: Si no te abre por defecto el gmail (o sea, te abre algún cliente de correo como Evolution), fijate en “Editar —> Preferencias —> Aplicaciones —> mailto” y cambialo por el que agregaste.

Cómo crear un buscador para la barra de Iceweasel

Que Iceweasel tenga una barra de buscador al costado de la barra de url es genial. Nos ahorra muchísimo tiempo a la hora de buscar X elemento o contenido. Por desgracia, viene con algunos pocos buscadores y en el caso de Google es sólo .com y no .com.ar (como quisiera yo) o .com.mx o .es, etc., según lo quiera la persona.
Hay dos soluciones posibles: la primera es con un plugin y la segunda -en caso de fallar la primera- es tocando un poco algunos archivos.

En el primer caso, vamos a Firefox Add-ons e instalamos el plugin Add to search bar. Entramos al sitio donde queremos agregar el buscador y, una vez allí, hacemos click en el icono de los buscadores y al final se desplegará la opción para agregar dicho buscador.

Ahora, esto no funciona en la mayoría de los casos. Entonces la única opción es crear un buscador nuevo.
Pero primero, una aclarión: si nuestra computadora la usamos sólo nosotros, entonces da lo mismo donde crees el nuevo buscador; pero si es usada por varias personas -con diferentes usuarios, se entiende- entonces lo mejor será situar los buscadores en nuestro directorio personal. Por consiguiente, hay dos directorios a elegir dónde irán los archivos:

/usr/lib/iceweasel/searchplugins (todos los usuarios visualizan los buscadores creados)

o

/home/$(whoami)/.mozilla/firefox/is0s3gm3.default/searchplugins (para un solo usuario)

Personalmente, a la hora de crear nuevos buscadores, prefieros ponerlo en la segunda opción que, si bien es cierto que mi portatil la uso yo solamente, me es más cómo tener los archivos en el /home/$(whoami) que puedo editarlos sencillo y no por fuera donde tengo que entrar como root.
Así, lo mejor, es eliminar el viejo buscador de la barra y luego copiar el archivo -por ejemplo- google.xml en nuestro directorio:

cp  /usr/lib/iceweasel/searchplugins/google.xml /home/$(whoami)/.mozilla/firefox/is0s3gm3.default/searchplugins/

y cambiarle el nombre por alguno que querramos y nos sea útil.
(La guía fue hecha con el ejemplo del sitio Boardgame Geek.)

Abrimos el archivo con cualquier editor (personalmente, si va a ser en consola prefiero nano o si será usando las X11, entonces bluefish) y se verá esto:

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Google</ShortName>
<Description>Google Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,[cadena de caracteres muy larga]</Image>
<Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&qu={searchTerms}"/>
<Url type="text/html" method="GET" template="http://www.google.com/search">
<Param name="q" value="{searchTerms}"/>
<Param name="ie" value="utf-8"/>
<Param name="oe" value="utf-8"/>
<Param name="aq" value="t"/>
<!-- Dynamic parameters -->
<Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/>
<MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/>
</Url>
<SearchForm>http://www.google.com/firefox</SearchForm&gt;
</SearchPlugin>

Empezamos editando lo que esta entre el tag <ShortName> que es el nombre que se muestra en el buscador y en <Description>.
Como la gran mayoría de los sitios no ofrecen sugerencias mientras escribes, borra esta línea:

<Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&client=iceweasel&hl={moz:locale}&q={searchTerms}"/>

Y ahora viene el asunto difícil.

<Url type="text/html" method="GET" template="http://www.google.com/search">

Primero, hay dos métodos, “GET” y “POST”. Para averiguar cuál usa, hacemos una búsqueda de prueba. Si en la barra de direcciones del navegador aparece luego algo como http://dirección (sin ningún “?”) sería metódo POST, y si aparece algo como http://dirección?propiedad1=valor1&propiedad2=valor2… sería el método GET.
También podemos mirar el código fuente de la página que contiene la caja de búsqueday buscar algo como <form … method=”GET“… (asegúrate de que es el correcto mirando si el texto cercano a la caja de búsqueda aparece también cerca de aquí. En este caso es fácil, está justo después de “SEARCH”)
Ahora ponemos en method “GET” o “POST” y sustituimos template=”http://www.google.com/search&#8221; por template=”http://dirección&#8221; (si usa el método POST la dirección que sale al buscar, si usa el método GET la dirección que sale, pero sólo hasta la “?”, sin incluirla).
También puedes buscar en el código fuente si pone en <form… action=”http://dirección&#8221;. Si no pone http, pero sí algo como action=”/metasearch.php”, sustituye todo lo que esté tras la última barra “/” de la dirección por lo que aparezca en action, por ejemplo, si es action=”/metasearch.php” y estás en “http://www.boardgamegeek.com/profile.php?action=viewmine“, la dirección será http://www.boardgamegeek.com/ profile.php?action=viewminemetasearch.php = http://www.boardgamegeek.com/metasearch.php

<Param name="q" value="{searchTerms}"/>
<Param name="ie" value="utf-8"/>
<Param name="oe" value="utf-8"/>
<Param name="aq" value="t"/>

Hacer una búsqueda de prueba (sólo método GET):
Si usa el método GET, simplemente busca algo, y mira en la barra de direcciones los pares atributo=valor que necesitas (separados por &), por ejemplo:

http://www.boardgamegeek.com/metasearch.php ?searchtype=game&search=arkham&B1=Go

http://www.boardgamegeek.com/metasearch.php es la dirección que tenemos que poner en template en el paso anterior, y hay tres pares: searchtype=game, search=arkham y B1=Go. Uno de estos pares contiene lo que hemos buscado (en este caso he buscado “arkham”), y los otros tienen valor fijo. Sustituimos lo que hemos buscado por “{searchTerms}“, de forma que nos quedan los pares searchtype=game, search={searchTerms} y B1=Go. Ahora, tenemos que poner una linea por cada par, de este modo:

<Param name="(nombre atributo)" value="(valor del atributo)"/>

en nuestro caso:

<Param name="searchtype" value="game"/>
<Param name="search" value="{searchTerms} "/>
<Param name="B1" value="Go"/>

(da igual el orden) y borramos el resto de las líneas que empiecen por “<Param” en caso de que haya alguna de más.

Mirar el código fuente (sirve para método GET y POST):
Si usa el método POST, es lo mismo, pero los pares atributo=valor no aparecen en la barra de direcciones al hacer la búsqueda. No hay más remedio que ir al código de la página que contiene la barra de búsqueda y buscar entre las etiquetas “<form>” y “</form>” las etiquetas “<input” y <option, y anotar su nombre (name=…) y valor (value=…) recordando sustituir el valor de la que contiene los campos de búsqueda por “{searchTerms}” (normalmente será de tipo texto, y pondrá type=’text’). Solo para que no os asusteis, en nuestro caso:

<form method="GET" action="/metasearch.php" style='padding:0; margin:0;'>
...
<select name='searchtype' style='font-size:12px;'>
<option value='game' SELECTED>Games</option>

<option value='designer' >Designers</option>
<option value='publisher' >Publishers</option>
<option value='forum' >Forums</option>
<option value='geeklist' >GeekLists</option>
<option value='tag' >Tags</option>
<option value='wiki' >Wiki</option>
<option value='user' >Users</option>
</select>
</td>
<td valign='middle'><input size=25 type="text" name="search" style='border: 1px solid #B0B0B0; padding:2px; font-size:12px;'></td>

<td valign='middle'><input type='submit' name='B1' value='Go' style='font-size:12px;'></td>
...
</form>

Donde pone select es una lista desplegable. Name es el nombre del atributo, y para el valor, buscamos entre las opciones y anotamos el “value” que nos interesa. En este caso queremos buscar entre los juegos (games)

<option value='game' SELECTED>Games</option>

por lo que el par será searchtype (lo pone en name dentro de select) = game (lo pone en value dentro del option que nos interesa).

<input size=25 type="text" name="search"

Esta es la barra de busqueda. Como veis, se llama “search“, así que el par es search={searchTerms}.

input type='submit' name='B1' value='Go'

Este es el botón, creo que no es necesario, pero bueno, tiene value, así que el par es B1=Go.
Igual que en el sistema anterior, escribimos en el xml tantas líneas

<Param name="(nombre atributo)" value="(valor del atributo)"/>

como pares tengamos (el orden no importa) y borramos el resto de las líneas que comiencen por <Param.

Volviendo a nuestro xml, borramos la siguiente línea que funciona solamente en Google:

<!-- Dynamic parameters -->
<Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/>
<MozParam name="client" condition="defaultEngine" trueValue="iceweasel-a" falseValue="iceweasel"/>

Y por último, aquí se pone la página web de la búsqueda por si la prefieres en lugar de la barra. Yo he ido a la búsqueda avanzada en board game geek y he copiado la dirección que aparece en la barra de direcciones para sustituirla por esta:

<SearchForm>http://www.google.com.ar/</SearchForm&gt;

Entonces así nos ha quedado el xml:

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>BGG</ShortName>
<Description>BoardGame Geek</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon,[cadena larga de caracteres]</Image>
<Url type="text/html" method="GET" template="http://www.boardgamegeek.com/metasearch.php">
<Param name="search" value="{searchTerms}"/>
<Param name="searchtype" value="game"/>
<Param name="B1" value="go"/>

</Url>
<SearchForm>http://www.boardgamegeek.com/searchform.php3</SearchForm&gt;
</SearchPlugin>

Queda cambiar el icono que aparece en la barra. Para ello, ve a la línea que dice:

<Image width="16" height="16">data:image/x-icon;base64,[cadena de caracteres muy larga]</Image>

Si no la tienes, cópiala y pégala allí (después de <SearchPlugin> y antes de </SearchPlugin>, no se te ocurra pegarla al final). La cadena de caracteres es una imagen escrita en modo texto. Tenemos que sustituirla por la cadena que corresponde a nuestra imagen.
Obviamente, primero necesitamos una imagen. Para ello:

  • La página del buscador no tiene un iconito:

    Bueno, mala suerte. Necesitamos una imagen que represente a la página.
    Si tiene una imagen a propósito (algo representativo y no muy grande), dale a botón derecho y selecciona guardar imagen.
    Si no tiene una imagen a propósito, tendremos que crearnos una. Para ello, le damos al botón del teclado Impr Pant (Imprimir Pantalla) con la página abierta, abrimos el paint o similar, y le damos a pegar (si te pregunta que si quieres que crezca la imagen, dile que sí). Ahora selecciona una parte más o menos cuadrada (por ejemplo un logo o la inicial en el título) y copiala. Abre una imagen nueva y pega la selección que hemos hecho (si sobra fondo, en paint por lo menos puedes poner un tamaño de imagen muy pequeño, incluso de 1 pixel por 1 pixel y al pegar te crecerá lo justo, en otros programas te puede abrir incluso una nueva imagen con lo que tengas en el portapapeles y el tamaño adecuado). Guarda la imagen como jpg (si tiene muchos colores), gif o png.
    Una vez tengamos una imagen, tenemos que convertirla en un iconito. Hay páginas en internet como http://www.htmlkit.com/services/favicon/ que te permiten hacerlo. Dale a examinar, selecciona tu imagen y dale a generar.

Cuando ya tengamos el iconito, tenemos que generar la cadena de texto que le corresponda. Para ello vamos a  http://software.hixie.ch/utilities/cgi/data/data (la mencionaban en la ayuda de Firefox, si no funciona, busca algo como “image to base64“). En “upload a file” buscamos nuestra imagen y luego le damos a generar. Dará como resultado un enlace, cópialo (el texto y el contenido del enlace son idénticos). Si en lugar de eso sale una cadena de caracteres rara, copia la dirección de la barra de direcciones del navegador. Lo que necesitas empezará con algo como “data:text/plain” o “data:image/x-icon;base64” o algo similar…
Volvemos a nuestra linea en el fichero xml de descripción del buscador

<Image width="16" height="16">data:image/x-icon;base64,[cadena de caracteres muy larga]</Image>

Tenemos que sustituir todo lo que está entre <Image width=”16″ height=”16″> y </Image> por lo que hemos copiado ahora.

Queda guardar los cambios, reiniciar Iceweasel y ver los nuevos cambios. ;)

(La guía original fue publicadad en No pienso arreglar tu ordenadorcreación del archivo xml, cambiar el icono en la barra– y tiene algunas modificaciones propias para este blog.)

ScribeFire: una extensión ideal para nuestros blogs

ScribeFire es una de esas fantásticas extensiones que hacen que queramos más a nuestro Iceweasel / IceCat / Firefox. ScribeFire sirve para todo aquel que tengo uno o varios blogs.
Para instalarla basta con ir aquí.

¿Y por qué usar ScribeFire en lugar de abrir una sesión en nuestro blog?
Lo primero que me gusto fue eso, sin necesidad de ir a mi blog puedo subir todo el contenido que quiero. Cuando iniciamos sesión por vez primera nos pide algunos datos de nuestra cuenta para agregar (y luego podemos ir sumando más cuentas). Lo interesante es que contamos con montón de opciones a la hora de editar un texto. (Muchas de las cuales no existe en los blogs y nos quedaba subirlas editando el código en cada nuevo post.)

Voy a nombrar las cosas que me gustaron:

  • Manejo múltiple de cuentas en diferentes blogs.
  • Visualización de los artículos en cada blog (con la posibilidad de volver a reeditar).
  • Miles de opciones para la edición del diseño del post.
  • Presionando un simple “F8” abrimos el editor (yo configuré el mío para que sea en una nueva pestaña).
  • Se puede, una vez publicado el post, compartilo en distintas redes sociales.
  • Manejo de archivos por FTP.
  • Previsualización del post.

Y, como es de esperarse, este post fue elevorado con mi nueva herramienta llamada ScribeFire. :)