Some time ago, when I packaged treeline, I wanted to make the package configure the environment so that .trl files would be automatically open with the program. That meant that the package had to configure the MIME types in the desktop to handle that, and assign the new MIME type the selected program. I tried a dozen of things at the time, based on a lot of howto’s that I found, without any success, so I decided to forget about it.
This week I started packaging a new program: Löve, a 2D game development framework based in Lua and OpenGL. Many of the games developed for this platform are distributed as a zip file with the extension .love, so I decided I wanted to try again the MIME stuff. After many unsuccessful tries, I found a package that gave me some hints on how to do it: chemical-mime-data. After having a look at it, I was able to prepare a proof of concept that did what I wanted. It is supposed to work, at least, in GNOME, KDE and ROX. In case someone else is interested, here is the code:
Wouter Verhelst escribe en su bitácora un artículo, respondiendo a otro de Sami Haahtinen, en el que describe muy claramente cuales son las variables de entorno que se pueden usar para definir la localización del sistema, y que me ha parecido oportuno traducir. Existen 4 tipos de variables:
- LANGUAGE: Esta es una extensión específica de GNU que permite que se use por defecto un lenguaje diferente de “C” (equivalente a deshabilitar completamente la traducción) en el caso de que no exista traducción para algo. GNU gettext da preferencia a LANGUAGE sobre LC_ALL y LANG para el manejo de los mensajes, pero aún es necesario tener especificado LANG (o LC_ALL) para definir el lenguaje prioritario. Esta variable permite definir una lista ordenada de lenguajes preferidos, separados por “:”. De alguna forma invalida LC_ALL, pero al mismo tiempo no lo hace. Tiene un comportamiento extraño. Si quieres saber más sobre esta variable, pon “info gettext” y busca por LANGUAGE.
- LC_ALL: Esta variable existe para anular (temporalmente) cualquier variable relacionada con la localización. Por ejemplo, si se quiere enviar un informe de bug, y se quiere tener la seguridad de que la salida va a ser inteligible para el o la desarrolladora, se puede hacer LC_ALL=C grep –broken-parameter para deshabilitar temporalmente la localización. Usar LC_ALL anula completa y totalmente cualquier otra variable, por lo que es probable que no quieras asignarla globalmente.
- LC_NUMERIC, LC_PAPER, LC_MESSAGES,…: Estas variables están pensadas para divergir de la localización por defecto. Por ejemplo, una persona puede querer tener los mensajes en en_US, pero mantener las fechas, tamaños de papel, etc. como los comunes en fi_FI. En ese caso, se puede poner como valor por defecto fi_FI pero asignar LC_MESSAGES (que especifica el lenguaje en el que se muestran los mensajes) a en_US.
- LANG: Esta variable es la que especifica la localización por defecto u omisión. Si no se ha especificado LC_ALL ni ninguna otra variable LC_* que sea relevante, se usará el valor de LANG para lo que sea que estés intentando hacer.