Archivos para la categoría: Tips

Por estar intentando programar un PIC con el PICkit2 de Microchip en Ubuntu, tuve que meterme en la configuración de dispositivos mediante udev. Lo bueno es que aprendí un método para expulsar automáticamente el CD del instalador del módem Samsung B1100 (el método que usaba antes vía HAL ya no está disponible en Ubuntu 10.04).

Consta de un simple archivo que llamaremos 50-samsung-b1100.rules y que pondremos en /etc/udev/rules.d como root con el siguiente contenido:

ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="f000", RUN+="/usr/bin/eject /dev/sr1"

Luego de esto se puede desenchufar el módem y volver a enchufarlo para ver como se expulsa automáticamente el CD del instalador. Con esto aparece el dispositivo del módem y Network-Manager lo podrá utilizar inmediatamente.

La regla anterior aplica el comando eject sobre el dispositivo /dev/sr1, el cual en mi sistema corresponde a la unidad virtual que contiene el instalador del módem. La ruta del comando eject la pueden obtener ejecutando which eject en una consola.

Anuncios

Desde hace un tiempo atrás que estoy usando la fuente Inconsolata para visualizar los códigos fuentes de mis programas y scripts. Es una fuente muy bien lograda y hace que el texto sea agradable de leer, pero tiene el problema de no venir con las negritas. Por suerte, Ubuntu las crea “sintéticamente” mediante la biblioteca Fontconfig (Ver archivo /etc/fonts/conf.d/90-synthetic.conf, donde se activa la propiedad “embolden“), pero el resultado es que las fuentes negritas quedan más anchas que la fuente normal, haciendo que se pierda la característica monoespaciada que tiene esta fuente.

Después de varios fines de semana tratando de corregir esto mediante las configuraciones de Fontconfig (en /etc/fonts/conf-avail), por fin hoy pude dar con el código XML que me arregla este problema. La solución se basa en usar una matriz para aplicar una transformación fina a la fuente, pero restringiéndose sólo a la fuente en negrita. El siguiente listado se debe agregar en ~/.fonts.conf o como un archivo dentro de /etc/fonts/conf.d.

<match target="font">
    <test name="family" qual="any"><string>Inconsolata</string></test>
    <test target="pattern" name="weight" compare="more"><const>medium</const></test>
    <edit name="matrix" mode="assign">
        <times>
            <name>matrix</name>
            <matrix><double>0.951</double><double>0</double>
                <double>0</double><double>1</double>
            </matrix>
        </times>
    </edit>
</match>

El valor destacado en negritas en el listado anterior lo obtuve empíricamente, por lo que pueden modificarlo en caso que no consigan el efecto deseado en otros sistemas.

También yo desactivo el hinting para algunas fuentes y lo recomendaría para la fuente Inconsolata. Se hace así:

<match target="font">
    <test name="family" qual="any"><string>Inconsolata</string></test>
    <edit name="hinting" mode="assign"><bool>false</bool></edit>
</match>

Bonus: La fuente Droid Sans Mono, disponible también en Ubuntu, sufre este mismo problema, pero se puede corregir con el siguiente código XML:

<match target="font">
    <test name="family" qual="any"><string>Droid Sans Mono</string></test>
    <test target="pattern" name="weight" compare="more"><const>medium</const></test>
    <edit name="matrix" mode="assign">
        <times>
            <name>matrix</name>
            <matrix><double>0.9679</double><double>0</double>
                <double>0</double><double>1</double>
            </matrix>
        </times>
    </edit>
</match>

Nuevamente, el valor 0.9679 es puramente empírico.

Debo reconocer que soy un fan de las tipografías simples ya que me gusta que las aplicaciones se lean fácilmente. Con Ubuntu me he encontrado con bastantes fuentes que cumplen mis requerimientos y la que más me gusta de ellas es la FreeSans (perteneciente al paquete ttf-freefont), la cual es bastante similar a la fuente comercial Helvetica.

El problema es que como Ubuntu no viene con fuentes libres para la web que sean compatibles con las de Microsoft, uno se ve en la necesidad de instalar el paquete ttf-mscorefonts-installer, el cual descarga e instala las típicas fuentes de Windows como Arial, Times New Roman y Courier New. Esto hace que la mayoría de los sitios de Internet se vean de mejor forma, pero el renderizado que tienen estas fuentes no es de mi gusto, así que me decidí reemplazar Arial por mi querida FreeSans.

El reemplazo se tiene que hacer vía fontconfig usando el archivo XML llamado ~/.fonts.conf, ubicado en el directorio /home del usuario actual. En él tenemos que agregar los siguientes tags <match> marcados en negrita:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
    <!-- remplazar Arial con FreeSans -->
    <match target="pattern" name="family">
        <test name="family" qual="any">
            <string>Arial</string>
        </test>
        <edit binding="strong" mode="prepend" name="family">
            <string>FreeSans</string>
        </edit>
    </match>
    <match target="font">
        <test name="family" qual="any">
            <string>Arial</string>
        </test>
        <edit mode="assign" name="family">
            <string>FreeSans</string>
        </edit>
    </match>
</fontconfig>

El cambio es casi inmediato en el sistema al guardar el archivo, pero puede ser necesario reiniciar Firefox para ver los cambios en las páginas.

Como bonus se puede hacer que el sistema reemplace la fuente Helvetica (que probablemente no exista en nuestro sistema Ubuntu) con FreeSans. En este caso se utiliza un bloque XML similar al anterior.

    <!-- remplazar Helvetica con FreeSans -->
    <match target="pattern" name="family">
        <test name="family" qual="any">
            <string>Helvetica</string>
        </test>
        <edit binding="strong" mode="prepend" name="family">
            <string>FreeSans</string>
        </edit>
    </match>
    <match target="font">
        <test name="family" qual="any">
            <string>Helvetica</string>
        </test>
        <edit mode="assign" name="family">
            <string>FreeSans</string>
        </edit>
    </match>

Ahora los sitios de Google, que usan por defecto la fuente Arial, se ven mejor con FreeSans.

Al montar particiones según el método mostrado en mi blog, los archivos aparecen montados con el usuario root y esto inhabilita el uso de la papelera al usarlo en Gnome.

Se resuelve haciendo que se monte como el usuario con que estamos trabajando, por lo que la línea completa para montar la partición debiera ser:

gnome-mount -p VISTA -o uid=1000,gid=1000

Esta entrada es una ampliación del tema que publiqué hace varios meses cuando hice funcionar mi conexión 3G de Entel con Ubuntu. La idea ahora es hacer que el mismo sistema expulse el CD B1100 INSTALL que aparece cuando se inserta el módem, ya que a la larga resultó ser tedioso hacerlo manualmente (sobretodo cuando el módem se desconecta solo).

Originalmente tenía la impresión que con UBS_ModeSwitch podría resolver este problema, pero después de varios intentos infructuosos, me dispuse a intentar resolverlo con HAL, ya que GNOME monta y desmonta las unidades con este sistema. Lo bueno es que llegué a un método que funciona:

En el directorio /etc/hal/fdi/policy crear el archivo b1100.fdi:

gksu gedit /etc/hal/fdi/policy/b1100.fdi

El contenido de este archivo debe ser el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
  <device>
    <match key="volume.label" string="B1100">
      <append key="info.callouts.add" type="strlist">gnome-eject -p B1100</append>
    </match>
  </device>
</deviceinfo>

Lo que hace este archivo es crear una especie de disparador que revisa la etiqueta de las unidades montadas y si descubre que se llama B1100, entonces agrega un comando para eyectar esa unidad (gnome-eject -p B1100).

Luego de esto, reiniciar HAL usando (no estoy seguro de si esto es necesario, pero por si las moscas, háganlo)

sudo /etc/init.d/hald restart

Finalmente, sólo basta con enchufar el módem para ver que Network-Manager se conectará sin necesidad de que estemos interviniendo nosotros.

Hoy he descubierto por qué mi notebook pasaba el gobernador de la frecuencia de la CPU a OnDemand a pesar que lo tenía configurado con laptop-mode para que siempre estuviera en Performance. Esto era algo que me tenía molesto ya que mi notebook se cuelga si lo tengo en un modo en que la frecuencia de la CPU varía mucho, por lo que el modo Performance era perfecto.

Tenía configurado el laptop-mode para que me mantuviera el modo, pero cuando actualicé a Jaunty me dí cuenta que había algo que me cambiaba el modo. Siempre pensé que era un problema de alguna aplicación de GNOME, pero al final el culpable resultó ser un maldito script ubicado en /etc/init.d/ondemand.

Lo quité del inicio con sudo update-rc.d -f ondemand remove ya que no es recomendable remover el paquete initscripts al cual pertenece.

Ahora controlo la frecuencia sólo con el cpufreq-applet de GNOME y todo funciona como debe ser.

Este tip usa el comando gnome-mount para montar las particiones de Windows vía HAL, permitiendo montar con FUSE los discos para que el usuario pueda modificarlos a su gusto.

Primero se debe conocer la etiqueta que tiene el disco o partición (se puede ver en Lugares -> Equipo) y luego se debe agregar una entrada en Sistema -> Preferencias -> Sesiones usando como comando:

gnome-mount -p ETIQUETA

En las imágenes de más abajo se puede ver como aparece la entrada y cuáles son los parámetros usados para una partición etiquetada como “OS”.

pantallazo-preferencias-de-la-sesion

pantallazo-preferencias-de-la-sesion

pantallazo-editar-programa-al-inicio

pantallazo-editar-programa-al-inicio

No hay que olvidarse de que debe quedar tiqueada la entrada nueva en las Preferencias de la sesión.