HOW-TO: Script + Hotkey para activar/desactivar Touchpad

Hace ya tiempo que uso ubuntu, y poco a poco, te vas dando cuenta de alguno detalles que le faltan. Pero a la vez te das cuenta de que no es tan dificil ponerte manos a la obra y arreglar tu mismo esos pequeños detalles, que hacen que tu dia a dia sea mas agradable.

Hoy nos concierne un problema que tengo desde hace tiempo, y que se ha acentuado mas desde que he empezado a jugar a juegos con Wine bajo Ubuntu 8.04, el touchpad. Cuando usaba windows podia desactivar el touchpad con el HotKey asociado, pero esta tecla no funciona en mi Ubuntu desde hace ya tiempo.

Como supongo que habra muchos de vosotros en la misma sitiacion, he decidido crear este pequeño HOW-TO para hacer la vida un poco mas facil a los usuarios de ubuntu.

[ Manos a la obra ]

PASO 1, Activar SHMConfig
Investigando un poco nos damos cuenta de lo sencillo que es habilitar/deshabilitar el touchpad. Simplemente tenemos que ejecutar un comando con el valor 0 o 1. Pero antes de eso necesitamos habilitar una opcion del touchpad. Empezamos:
  1. Editar el archivo xorg.conf con el comando:
    sudo gedit /etc/X11/xorg.conf

  2. Ahora tenemos que buscar la seccion del Touchpad Synaptics, que deberia parecerse a esto:

    En esta seccion debemos añadir => Option "SHMConfig"
    de forma que se parezca a:

  3. Resetear el servidor X (Ctrl + Alt + Bcksp) o en su defecto el propio Ubuntu.

  4. Ya podemos habilitar/deshabilitar el touchpad por linea de commandos usando:
    synclient TouchpadOff=1  // Deshabilitado
    synclient TouchpadOff=0 // Habilitado
PASO 2, Activar HotKey + Script
Hasta aqui todo muy bien, pero realmente queremos abrir una consola cada vez que querramos desactivar el touchpad?? Ciertamente no, asi que ahora vamos a pasar a asignar esta accion a una HotKey, de forma que podamos hacerlo con un simple gesto de teclado. Para ellos nos hara falta convertir esto en un script, que cambie el estado de esa variable automaticamente. Asi que me he montado el siguiente script que consulta dicho valor y lo cambia. Tan facil como esto:
#!/bin/bash

state=`synclient -l | grep TouchpadOff | tail -c 2`

if [[ $state == "0" ]]
then
# Change value to 1
synclient TouchpadOff=1
else
# Change value to 0
synclient TouchpadOff=0
fi
Descargar script: aqui
  1. Guardar el script en una carpeta de tu home, por ejemplo:
    /home/username/Scripts

  2. Le damos permisos de ejecucion:
    sudo chmod u+x /home/username/Scripts/touchpad.sh

  3. Ahora para asignar este script a una combinacion de teclas hacemos los siguiente:

    Usando el Gnome Configuration Editor (gconf-editor)


    1. Ejecutad el programa gconf-editor

    2. Navegad hasta => apps \ metacity \ keybinding_commands

    3. Editad la primera clave libre que tengais (por ejemplo 'command_1')

    4. Despues navegad hasta: apps \ metacity \ global_keybindings

    5. Asignad la combinacion deseada a la correspondiente clave 'run_commandoanterior' en nuestro caso 'run_command_1'

    6. LISTO !! Ya podeis activar y desactivar el touchpad con la combinacion elegida.

Saludos y happy binding!

Scripts Avanzados: Un script que parsea un fichero de opciones

Una de scripts. Irá haciendo entradas sobre scripts, unas introductorias y otras más avanzadas. Hoy vamos a ver cómo hacer que nuestros scripts puedan configurar sus variables desde ficheros externos.

Ésto es especialmente útil cuando actualizamos nuestros scripts en distintas máquinas y no queremos alterar la configuración de cada uno.

Una práctica (extendida, pero no adecuada) Era hacer algo así:

copy.sh

#!/bin/bash
ruta_origen=/home/juanjo
ruta_destino=/mnt

function copiar{
cp -vr $ruta_origen $ruta_destino
}

Con lo que si cambiamos el script de ordenador, puede que /home/junajo no exista. Vamos a hacerlo bien. Crearos un fichero de propiedades, por ejemplo

copy.sh.properties

Y dentro colocad:
# Fichero de Propiedades de copy.sh
# propiedad=valor
origen=/home/juanjo
destino=/mnt

Ahora, en el fichero copy.sh añadid la funcion propiedad:

#!/bin/bash

function propiedad {
if test -r $0.properties
then
cat $0.properties | grep -v "#" |grep -i "$1" | cut -d "=" -f 2
else
echo "ERROR: Fichero de Propiedades no encontrado o no legible"
echo "Se sale del script."
exit 0
fi
}

ruta_origen=$(propiedad origen)
ruta_destino=$(propiedad destino)

function copiar{
cp -vr $ruta_origen $ruta_destino
}


De ésta forma, podemos cambiar los scripts conservando las configuraciones de cada equipo. Dejo para otro post (de scripts básicos) la explicación de cada línea.

A cuidarse!

Debate: Yo vs el Resto

Tras cuatro años de compartir vivencias, clases, prácticas y demás con mi PowerBook G4 de 12 pulgadas llegó la hora de tener más potencia. Tenia muy claro que mi próxima adquisición iba a ser un MacBook Pro, pero casualidades de la vida cuando lo fui a comprar salio el nuevo MacBook Pro (teclado negro) y este evento hizo que me pensase que modelo adquirir: El viejo MacBook Pro o el nuevo.

Todo esto hizo que se generase un debate en la oficina y que se formasen dos bandos al mas puro estilo Guerra Fría. Por una parte llamemoslos señor "X" y señor "Z", y por otra parte el señor "P" y por último yo.



Al señor "X" y el señor "Z" estaban escandalizados de que gastase 1749 en un portátil, argumentado que por ese precio tenia productos PC con mejores prestaciones en los cuales podría llegar incluso a instalar Leopard. Respecto a esto no tengo nada que decir, puesto que estoy de acuerdo con ellos. Otro de los argumentos que exponian era el famoso tema de los juegos para Mac. Que si los drivers gráficos están cerrados. Que si no podré jugar al Counter que si tal que si cual. Sobre este tema discrepabamos tanto el señor "P" como yo. Puesto que ambos no nos compramos un Mac para jugar (el señor "P" tambien tiene un MacBook Pro). Y aquí podemos abrir el siguiente debate: ¿Qué utilidad vas a darle a tu portátil?. Al final estos señores ("X" y "Z"), usuarios de ubuntu, tienen que recurrir a un emulador de aplicaciones para poder jugar en su ubuntu, al igual que yo en mi mac.

Mientras tanto en la otra parte de la oficina el señor "P" insistía en que comprase el MacBook Pro viejo, puesto que el nuevo dejaba de tener la esencia Apple añadiendo un teclado negro, borde de pantalla negro, pantalla de brillo "Glossy" y demás. Ciertamente, el señor "P" tenia razón. Otro de los argumente fue la poca innovación tecnología del producto (dos tarjetas gráficas, track pad sin botones, DDR3).

Finalmente tras una larga deliberacion con mi chica, la señora "A", y mucha paciencia por su parte, nos decidimos a comprar el MacBook Pro viejo, a lo que añadimos que tuvo un gran descuento por la salida del nuevo modelo y se quedaba en 1399€, este precio seguía siendo escandaloso para "X" y "Z".

El principal tema de discusión de todo esto para mi es el diseño, el diseño por parte de los ingenieros de Apple que intentan cuidar el mas mínimo detalle de cada producto, y ciertamente lo han conseguido hasta ahora. Sabemos que Apple no incluye toda la tecnología que existe en el mercado, prefiere centrarse en que ese producto sea ligero, pequeño, duradero, robusto, bonito, autónomo.

Yo esto lo comparo con los coches, por que se comprán coches mas caros que otros que tienen mejores prestaciones, pues por el diseño, exclusividad, belleza, detalles .....



Tampoco estamos descubriendo nada nuevo, esto en economía se llama Ventaja Estrategica (Si, señor "P" aquella economía que suspendiamos en la carrera ;)), en la que una empresa puede basarse en la diferenciacion (Apple) o en ser lider en costes. Después esta el comprador que es el que decide qué comprar. Quizás si compras algo de una empresa basada en la diferenciación no solo compres el producto, sino que formas parte de una filosofía que dichas empresas se encargan de construir a base de publicidad o a lo largo de la historia mediante las decisiones que han tomado.

Después de esta retahíla filosófica he de decir que la compra ha sido perfecta y que muchas gracias a todos los integrantes de esta historia en especial a mi chica, la señora "A".

Investigación: Instalar Debian etch en Pentium II con 64 Mb de RAM

Y ya estamos otra vez!

¿Cuántos de nosotros no tenemos por casa un equipo viejo? Algo así como un PII con 64Mb de RAM del que no supimos deshacernos a tiempo y ahora sólo ocupa espacio... ¿Lo tirásteis a la basura? lástima, de haber leído ésto antes, quizás no lo hubiérais hecho.

Pues si, hoy veremos como reciclar nuestro viejo Pentium, para, por ejemplo, convertirlo en un media center.

Necesitamos una imágen de Debian etch 4.0 netboot, descargadla de Aquí. Tostadla en un CD e ir a vuestro viejo Pentium, iniciad desde el CD y tal.

Empezad la instalación como en una Debian Normal. No voy a poner los pasos obvios, sólo los que pueden ser críticos.

Elegid el diseño del teclado y vuestra localización:



Dejad un esquema de particiones parecido a éste:



Asumimos que el equipo tiene muy poquito disco duro, unos 4 Gb, así que podemos ponerlo todo en una partición. Una vez escritas las particiones en el disco y configuradas la red, los usuarios etc, debemos elegir un mirror del que descargarnos los paquetes.


Elegid es que mejor os vaya. Después, seleccionaremos los paquetes que queremos instalar, es decir, excepto el sistema estándar, ninguno. Hay que ahorrar espacio y... ¡memoria! No queremos que haya procesos siempre correteando por nuestra escasa RAM.


Una vez seleccionado sólo "standard system" se descargarán e instalarán los paquetes, por cierto, bastante rápido. Después nos pedirá que seleccionemos las resoluciones de pantalla, pero podemos dejarlo por defecto.


Se reinicia. Aparece:



Para la prueba, yo cree un usuario llamado debian con contraseña debian y puse como contraseña de root "debian" Así que ahora podré hacer login en mi nuevo sistema Debian :)

Lo primero que haremos será:

su root
aptitude install x-window-system-core fluxbox

Éso nos instalará el sistema x y el escritorio fluxbox. Fluxbox es un escritorio muy ligero y bastante potente, perfecto para un media center basado en un Pentium conectado a una tele y un ratón.

Para iniciar el entorno gráfico:

startx

Ahora, si queremos que el entorno gráfico inicie cuando se inicie el sistema, podemos editar el archivo /etc/init.d/rc.local:

Debajo de la línea "do_start" añadid:

startx

Ahora, podemos instalar los paquetes que creamos oportunos, por ejemplo:

Navegador web:

iceweasel


Explorador de Archivos:

thunar

Reproductor de audio y video:

gstreamer-plugins-ugly
gstreamer-plugins-bad
mplayer

Editor de documentos:

abiword

Gestor de paquetes:

synaptic


Y así, hasta lo que necesitéis. Ciertamente la lista puede ser larga.

A cuidarse!

Mapa interactivo: el kernel de Linux

Mapa-Interactivo-Linux

Interactive map of Linux kernel, un mapa detallado de «cómo funciona Linux por dentro», ideal para quienes están aprendiendo. Se puede navegar con el ratón (rueda = zoom) o mediante los controles de la ventana; los diferentes detalles están convenientemente hiperenlazados.

No es precisamente una entrada relacionada con la técnica, sino más bien con la teoría (aunque es de la que para programar para Linux es básica) pero es lo suficientemente interesante como para no desperdiciarlo.

Extraído de este enlace a Microsiervos:

http://www.microsiervos.com/archivo/ordenadores/mapa-interactivo-kernel-linux.html

Editar los scripts en el initrd

Y otra más!

Hoy vamos a ver cómo editar el initrd. Supongo que a vosotros se os ocurrirá alguna aplicación práctica para ésto. Bueno, ahí va:

Copiad el fichero initrd a una carpeta y:

Si es un gz:

sudo gunzip initrd.gz

Si lo que tenemos es un inird.img, haremos primero:

gunzip -S .img initrd-2.6.X.img


Y Después

sudo cpio -imdF initrd

Y listo, ya tenéis descomprido el initrd.

Volcar una Imágen de Qemu en una partición

Ya estamos otra vez

Hoy vamos a ver como volcar una imágen de qemu en una partición o directorio del equipo Host. Nos encontramos muchas veces con que, hemos hecho una imágen de qemu y queremos migrarla a un equipo de verdad, sin embargo, ésto se convierte en una tarea ardua cuando se trata de imágenes qcow o raw.

Hoy lo vamos a enfocar desde un punto de vista fácil, sencillo e independiente de los tipos de imágenes y sistemas de ficheros.

Vamos a imaginar que tenemos qemu cargado en su imágen raw o qcow y que está funcionando con linux.

Primero, montaríamos nuestra partición de destino, en el equipo host, por ejemplo en /mnt

sudo mount /dev/sdxx /mnt

Después, en el equipo host, con permisos de root, escribiríamos:

nc -l -p 6000 | tar xvf - -C /mnt

Es decir, abrimos un socket en el puerto 6000 y lo que entre, lo descomprimiremos y enviaremos a /mnt.

Ahora, se deja a la espera y pasamos al equipo Guest (qemu) y con permisos de root ejecutaríamos:

tar cvp --same-owner --exclude=/home/error.log --exclude=/proc/* --exclude=/mnt/* --exclude=/sys/* --exclude=/tmp/* --exclude=/var/run/* --exclude=/var/run/* --exclude=/var/lock/* --exclude=/dev/* / | nc IP_DEL_EQUIPO_HOST 6000

De ésta forma, lo que hacemos es comprimir todo el sistema (excepto lo que excluímos, que cambia en cada máquina) y lo canalizamos, en lugar de a un archivo a la salida estándar, de ahí lo pasamos al socket que tenemos abierto hacia nuestra propia máquina.

No se ha probado, pero es muy posible que ésto funcione también para otras máquinas en la red, es decir, volcar nuestro qemu en otra máquina en red ¿genial no?

Os dejo un pantallazo de la copia en acción... a cuidarse!


Basado en
http://linuxclues.blogspot.com/2007/07/backup-your-system-using-tar.html

Investigación: Haciendo Nuestro Propio Netbook en Ubuntu 8.04 con KDE 4.1

Hola! Hemos vuelto!

Lo que vamos a hacer hoy es montar nuestra propia distro para Netbook, naturalmente estará basada en ubuntu 8.04 Hardy.

Después de ver el trabajo de los chicos de ubuntu con su netbook-remix, por lo menos a mi, se me ocurren otros caminos para éstos pequeños portátiles. El ume-launcher parece una aplicación maximizada que se queda detrás de las aplicaciones que vamos lanzando, pero hay (desde mi punto de vista) un problema. El ume-launcher es muy grande y el panel (que por cierto, no se puede quitar) muy pequeño, además del consumo de memoria adicional.

Entonces pensé que el menú kickoff de KDE 4.1, maximizado, quizás sería una alternativa más "económica" y visualmente más atractiva.

Después de ver el Limpus Linux y la manera que tiene de organizar el contenido, KDE no parece una idea tan descabellada.

Bien, basta de palabrería, lo primero nos bajamos la imágen mínima de ubuntu aquí.

Haced una partición de 3,8 Gb con 256 Mb de SWAP, bien en una imágen de qemu o bien en vuestro disco duro.

Una vez hecha la partición, instalad ubuntu con la opción "cli" en el boot de la imágen, de ésta forma instalaremos sólo lo que vamos a necesitar.

Cuando termine de instalar, añadiremos los siguientes repositorios:

deb http://ppa.launchpad.net/netbook-remix-team/ubuntu hardy main

deb http://ppa.launchpad.net/kubuntu-members-kde4/ubuntu hardy main

Instalaremos KDE 4.1:

sudo aptitude install kde4-core

Daremos permisos al usuario. Si no hacemos éste paso, KDE no arrancará.

sudo chown -R usuario /home/usuario
sudo chgrp -R usuario /home/usuario

Ya podemos reiniciar para ver nuestro KDE funcionando. Para obtener una sensación parecida a la de un Netbook, quizás debiéramos maximizar el menú de Kde.

Si queremos que se parezca a un netbook, podemos instalar el paquete "maximus", de forma que cada vez se abra una aplicación, por defecto aparecerá maximizada.

Para que se abra por defecto en KDE, id al menú Máquina, Preferencias del Sistema, Autoarranque y añadid el programa "maximus" pero no hagáis que se ejecute en terminal.

Os dejo algunos pantallazos de cómo lo he dejado, cuidaros!








Activar protocolos XDMCP y VNC en Cliente de Terminal Server Ubuntu

El cliente de terminal server que trae ubuntu tiene soporte para varios protocolos, entre ellos el XDMCP y VNC, pero no está activados por defecto.

Para poder activar y usar éstos dos protocolos, tenemos que instalar los siguientes paquetes:

xnest
xtightvncviewer

Poned ésto en la consola:

sudo aptitude install xnest xtightvncviewer