Gestor de ventanas por defecto en GNOME

sábado, marzo 21, 2009

Casi siempre me la paso jugando con gestores de ventanas (léase Compiz, Metacity, Openbox, etc) y resulta bastante incómodo que para hacer que uno de ellos arranque al inicio de la sesión tengamos que agregarlo en los programas de inicio de GNOME. Al hacerlo así, GNOME inicia primero su gestor de ventanas por defecto (metacity) y después inicia el que nosotros queremos. Obviamente tenemos que esperar casi el doble del tiempo para tener un escritorio usable.

Eso me motivó a leer e investigar para dar con el paradero del @#!=&%$ fulano gestor de ventanas predeterminado, hasta que por fin lo encontré!

Basta con crear un archivo .gnomerc (si no existe) en nuestro directorio personal y dentro del archivo escribimos la siguiente línea indicando la ruta del gestor de ventanas que nosotros queremos como predeterminado:

export WINDOW_MANAGER=/usr/bin/compiz

La ruta /usr/bin/compiz podemos reemplazarla por cualquier otra, como por ejemplo
/usr/bin/openbox-gnome-session para correr GNOME usando Openbox como gestor de ventanas ;)

Shoes, Cairo y PyGTK

jueves, febrero 26, 2009

Estuve conversando ayer con un amigo sobre toolkits sencillos y rápidos para desarrollar aplicaciones gráficas multiplataforma. Hablamos de FLTK, de ETK, de murgaLua, obviamente del GTK+ y Qt4 y hasta del mismísimo infame Gambas. Es ahí cuando el pana me presenta a "Shoes" <fanfarria con bombos platillos>.

Shoes (a.k.a alfombra, media, chancleta o como te provoque llamarlo =P) es un toolkit muy pequeño y que por sí solo puede hacer cosas realmente impresionantes. Según su creador "... puedes hacer aplicaciones realmente colorídas..." y se lo creo. Para muestra un botón



Está hecho en Ruby pero su sintaxis es tan simple que parece HTML con CSS (claro gracias en parte a los bloques de código Ruby). La cuestión me llamó tanto la atención que decidí probarlo y mi conclusión: es sencillamente maravilloso. El código es tan limpio, tan simple y tan intuitivo que dan ganas de poner a volar la imaginación para desarrollar cuanta cosa se te ocurra.

Y es que el simple hecho de que pueda hacer una ventana con un fondo degradado con tan solo 7 miserables líneas de código me hace sangrar la nariz.
Shoes.app do
background "#F3F".."#F90"
title "Shoooes", :top => 60,
:align => "center",
:font => "Trebuchet MS",
:stroke => white
end

Sin embargo me surgió una pregunta: ¿Por qué Ruby? y e instantáneamente surgió otra: ¿No habrá un Shoes para Python? La respuesta a la segunda es NO. La respuesta a la primera aún la desconozco.

Si aún están leyendo se preguntarán: ¿Y que tiene que ver todo esto con Cairo y PyGTK? Pues muy simple, revisando el código fuente de Shoes me di cuenta que una ventana no es más que un lienzo (o canvas) y que ese lienzo _aparentemente_ lo crean y lo trabajan con Cairo. Suena muy simple, pero créanme... no lo es.

Fue ahí donde se me ocurrió la idea: ¿Por qué no hacer una implementación de Shoes para Python usando Cairo? y pues bueno aquí estoy, leyendo todo cuanto encuentro sobre Cairo y PyGTK. He leído un par de blogs donde dicen como trabajar con Cairo y PyGTK, además de la documentación de Cairo. Entre ellos:

http://blog.rastersoft.com/index.php/2007/06/20/trabajando-con-pycairo-y-gtk/

http://blog.eikke.com/index.php/ikke/2007/02/17/python_cairo_xshape_and_clocks

http://cairographics.org/documentation/pycairo/reference/index.html#reference-index

Apenas he corrido un par ejemplos y todo parece funcionar muy bien. Seguiré investigando y publicando mis progresos.

Cambio y fuera

Instalar IExplorer en GNU/Linux

domingo, febrero 08, 2009

Seguro les ha pasado más de una vez que una estúpida página no sirve si no es con iexplorer. A mi me sucedió con la página de mi banco preferido (Banco Mercantil) y es que para afiliar servicios, cuentas y otras cosas necesitaba generar una "e-Seguridad" que para mi desgracia sorpresa solo se podía generar con iexplorer.

Le di mil vueltas al asunto, consulté con algunos amigos que tenían el mismo problema y todos coincidíamos en lo mismo; no había manera de hacerlo desde Firefox/Iceweasel/Opera/Safari. Mi PC ni siquiera sabe lo que es Windows (ni lo sabrá =P), así que la solución de instalar Windows en una pequeña partición o en una máquina virtual solo para hacer una transferencia está descartada. Mi último recurso era Wine y el famoso IEs4Linux.

IEs4Linux es un script que te descarga el instalador (y todos los archivos necesarios) de Internet Explorer desde la página de Microsoft y lo instala en una especie de sandbox con Wine. A pesar de que parece muy simple, me dió varios errores durante la instalación así que voy a explicar los pasos que seguí para instalarlo sin problemas.

Antes de continuar debo aclarar lo siguiente: Microsoft pide una licencia original de Windows para instalar cualquier programa (incluso para la basura de Internet Explorer) aunque sea bajo GNU/Linux. Si no tienes la fulana licencia estas cometiendo un delito al igual que yo.

Continuemos; primero nos descargamos el cabextract y por supuesto el wine (como root):
# aptitude install cabextract wine

Luego descargamos el ies4linux, en una terminal escribimos (como usuario normal):
$ wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz
$ tar zxvf ies4linux-latest.tar.gz
$ cd ies4linux-*


Ahora para que funcione correctamente, debemos copiar el cabextract dentro de una carpeta llamada tmp (dentro de la carpeta de instalación del ies4linux). Para eso ejecutamos lo siguiente en la terminal anterior:
$ mkdir tmp
$ cp /usr/bin/cabextract tmp/


Finalmente ejecutamos el script:
$ ./ies4linux

Cuando aparezca el asistente seleccionamos la versión de iexplorer que deseamos instalar, el idioma en inglés (EN-US) y quitamos la instalación del flash (puesto que el flash 9 da algunos problemitas).



Hacemos click en "Aceptar" y comenzará la instalación.





Cuando el instalador termine tendremos el iexplorer listo para usar, solo faltaría instalar el flash player (en caso de que sea necesario) y para eso basta con visitar la página de Adobe http://get.adobe.com/es/flashplayer/, descargar y ejecutar.



Ojala y pronto esas páginas dejen de estar casadas con Microsoft para que podamos ser completamente libres de elegir nuestro navegador preferido sin tener que infringir la ley recurrir a métodos oscuros para hacer nuestras tareas cotidianas =D.


La Aventura de Ruby on Rails (Parte 2): El entorno de desarrollo

miércoles, enero 14, 2009

En la entrega pasada instalamos Ruby y Rails con todos los complementos necesarios para crear una aplicación web. Ahora vamos a configurar nuestro entorno de desarrollo para empezar a echar las primeras líneas de código.

Para aquellos que adoran las funcionalidades de un IDE como eclipse entonces les dejo este link. Desde allí pueden descargar EasyEclipse; un entorno basado en Eclipse pero viene listo para programar en Ruby on Rails (trae muchas otras funcionalidades pero no me he tomado la molestia de revisarlo al detalle).

A mi, sin embargo, me gusta más la simplicidad y siempre he pensado que los IDE consumen muchos recursos, es por eso que un simple editor de textos es la solución perfecta a mis necesidades. A partir de este punto explicaré como transformar al Gedit (el editor por defecto de GNOME) en una poderosa herramienta de desarrollo.

La siguiente receta está basada en un trabajo del amigo Joselo en su blog NationCode: Gedit como Textmate mejorado para GNU/Linux pero adaptada para cubrir mis necesidades. Todos los archivos necesarios para aplicarla puedes descargarlos de aquí

Dentro del archivo comprimido está un script que realiza la instalación por sí solo, lo único que debes hacer es descomprimirlo, entrar a la carpeta y ejecutarlo con permisos de súper usuario; algo más o menos así:
tar -xzf gedit-dev-1.2.tar.gz
cd gedit-dev
sudo sh gedit-dev-sh


Si quieres instalarlo uno a uno tú mismo entones continúa leyendo la receta :D

A partir de este punto ejecutaremos las instrucciones como súper usuario. Lo primero que haremos será instalar los plugins extra de Gedit
# aptitude install gedit-plugins

Posteriormente editamos el archivo /etc/mime.types y agregamos estas líneas al final:
text/x-ruby-source                           rhtml html.erb
text/x-eruby rjs
text/x-yaml yml


A continuación actualizamos las extensiones mime types:
update-mime-database /usr/share/mime

Nos posicionamos en la carpeta descomprimida de gedit-dev y copiamos el archivo x-rhtml.xml a la carpeta /usr/share/mime/packages:
cp mime/x-rhtml.xml /usr/share/mime/packages

Copiamos las definiciones de rhtml, ruby, rjs y yml a la carpeta /usr/share/gtksourceview-2.0/language-specs:
cp langs/*.lang /usr/share/gtksourceview-2.0/language-specs

Ahora salimos del modo súper usuario (pero nos quedamos dentro de la carpeta gedit-dev) y nos devolvemos a nuestro usuario regular. Instalamos los otros plugins de Gedit:
mkdir -p ~/.gnome2/gedit/plugins/
cp -R plugins/* ~/.gnome2/gedit/plugins/


Instalamos los recortes para el Gedit
mkdir -p ~/.gnome2/gedit/snippets/
cp -R snippets/* ~/.gnome2/gedit/snippets/


Y luego instalamos los estilos o temas de colores para el resaltado de la sintaxis:
mkdir -p ~/.gnome2/gedit/styles/
cp styles/* ~/.gnome2/gedit/styles/


Ahora configuramos el Gedit. En el menú Editar->Preferencias, pestaña Ver debemos desactivar el ajuste de texto, mostramos los números de línea, la línea actual y el margen derecho; establecemos el margen en la columna 80 y resaltamos la pareja del corchete.



En la pestaña Editor establecemos el ancho del tabulador a 2, insertamos espacios en lugar de tabuladores, activamos la sangría automática, desactivamos la copia de respaldo y autoguardamos cada 10min.



En la pestaña Tipografía seleccionamos el tema Serious y en Complementos activamos:
  • Dibujar espacios

  • Panel del examinador de archivos

  • Recortes

  • Salvasesiones

  • Snap Open


El resultado un simple pero poderoso editor listo para Ruby on Rails :)

La Aventura de Ruby on Rails (Parte 1): El inicio

viernes, diciembre 26, 2008

Este post es el inicio de una serie en la que pretendo ilustrar mis experiencias e impresiones en el mundo de Ruby on Rails. Debo decir que al momento de escribir esto conozco realmente poco (por no decir nada) sobre Ruby, Rails y afines, así que empezaré desde cero. Vamos con un poco de teoría

  • ¿Qué es Ruby?
    Ruby es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el programador japonés Yukihiro Matsumoto y distribuido bajo licencias libres. Combina una sintaxis inspirada en Python y Perl, con características de programación orientada a objetos similares a Smalltalk. Comparte también funcionalidad con otros lenguajes de programación como Lisp, Lua, Dylan y CLU

  • ¿Qué es Ruby on Rails?
    Ruby on Rails (RoR o Rails) es un entorno de desarrollo web de código abierto escrito en Ruby y optimizado para satisfacción de los programadores y de la productividad. Te permite escribir aplicaciones web siguiendo el paradigma de la arquitectura Modelo Vista Controlador (MVC) y su filosofía principal es: Favorecer la convención antes que la configuración

  • ¿Qué son las Gemas de Ruby o Ruby Gems?
    Las Gemas son paquetes autocontenidos utilizados por Ruby oficialmente para distribuir librerías y aplicaciones. Son empleadas por Rails para la instalación de su entorno

  • ¿En qué consiste la arquitectura MVC?
    En pocas palabras podemos decir que la arquitectura MVC separa una aplicación en 3 capas: el Modelo, la Vista y el Controlador. El Modelo trabaja directamente con las fuentes de datos (bases de datos, sockets, etc) y es el encargado de la integridad de la información. La Vista es la interfaz que usará la aplicación para interactuar con el usuario y la que se usará para mostrar los datos del modelo. La Vista debe ser "tonta" en el sentido de que no debe tener conocimiento alguno sobre las fuentes de datos, los eventos u otros, solo debe mostrar la información que se le indique. Por último, el controlador es quien maneja los eventos de la aplicación, digamos que es la "pega" entre el Modelo y la Vista; puede interactuar con las funciones del modelo y envía información a la Vista.

Dicho esto empecemos con la instalación del ambiente Ruby on Rails. Las siguientes instrucciones están hechas para Debian Lenny 5.0 e instalarán Ruby 1.8 y Rails 1.2.6.

Instalamos Ruby y todos los paquetes necesarios (como super usuario):
# aptitude update
# aptitude install build-essential ruby ruby1.8-dev ri ri1.8 rdoc rdoc1.8 irb irb1.8 ruby1.8-examples libreadline-ruby libopenssl-ruby libdbi-ruby libdbd-mysql-ruby libdbd-pg-ruby libdbd-odbc-ruby libdbd-sqlite3-ruby libpgsql-ruby libmysql-ruby mysql-server mysql-client


Descargamos los paquetes necesarios para Ruby si no los tenemos (ver la página de RubyForge para más información):
$ wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
$ wget http://rubyforge.org/frs/download.php/26547/activesupport-1.4.4.gem
$ wget http://rubyforge.org/frs/download.php/28328/actionpack-1.13.6.gem
$ wget http://rubyforge.org/frs/download.php/28331/actionmailer-1.3.6.gem
$ wget http://rubyforge.org/frs/download.php/28325/activerecord-1.15.6.gem
$ wget http://rubyforge.org/frs/download.php/28334/actionwebservice-1.2.6.gem
$ wget http://rubyforge.org/frs/download.php/19878/rake-0.7.3.gem
$ wget http://rubyforge.org/frs/download.php/28337/rails-1.2.6.gem


Instalamos el manejador de paquetes de Ruby (RubyGems):
# tar -xvzf rubygems-1.2.0.tgz
# cd rubygems-1.2.0
# ruby setup.rb
# ln -s /usr/bin/gem1.8 /usr/bin/gem


Y por último instalamos las gemas que acabamos de descargar:
# gem install activesupport-1.4.4.gem
# gem install actionpack-1.13.6.gem
# gem install actionmailer-1.3.6.gem
# gem install activerecord-1.15.6.gem
# gem install actionwebservice-1.2.6.gem
# gem install rake-0.7.3.gem
# gem install rails-1.2.6.gem


Es importante destacar que se deben instalar las versiones tal cual como aparecen aquí y en el mismo orden pues son las que funcionan correctamente entre sí.

Para comprobar que todo ha ido bien basta con hacer:
$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
$ rails --version
Rails 1.2.6


Con esto ya podemos empezar a crear aplicaciones en Rails :D pero dejaremos esa parte para la próxima entrega.

Acá dejaré un script que se puede utilizar para instalar Ruby on Rails al toque, solo basta ejecutarlo como super usuario y él se encargará de hacer el resto ;)
#!/bin/bash
#===================================================
#
# ruby_instalacion.sh - Script en bash que permite instalar Ruby On Rails
# al vuelo
#
# Copyright (C) 2008: Wil Alvarez
#
#===================================================

# Instalar Ruby
aptitude update
aptitude install -y build-essential ruby ruby1.8-dev ri ri1.8 rdoc rdoc1.8 irb irb1.8 ruby1.8-examples libreadline-ruby libopenssl-ruby libdbi-ruby libdbd-mysql-ruby libdbd-pg-ruby libdbd-odbc-ruby libdbd-sqlite3-ruby libpgsql-ruby libmysql-ruby

# Instalar RubyGems
wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
tar -xvzf rubygems-1.2.0.tgz
cd rubygems-1.2.0
ruby setup.rb
GEM=/usr/bin/gem
if [ -n $GEM ]; then
rm -f /usr/bin/gem
fi
ln -s /usr/bin/gem1.8 /usr/bin/gem
cd ..
rm -rf rubygems-1.2.0/

# Instalar Rails
wget http://rubyforge.org/frs/download.php/26547/activesupport-1.4.4.gem
wget http://rubyforge.org/frs/download.php/28328/actionpack-1.13.6.gem
wget http://rubyforge.org/frs/download.php/28331/actionmailer-1.3.6.gem
wget http://rubyforge.org/frs/download.php/28325/activerecord-1.15.6.gem
wget http://rubyforge.org/frs/download.php/28334/actionwebservice-1.2.6.gem
wget http://rubyforge.org/frs/download.php/19878/rake-0.7.3.gem
wget http://rubyforge.org/frs/download.php/28337/rails-1.2.6.gem

gem install activesupport-1.4.4.gem
gem install actionpack-1.13.6.gem
gem install actionmailer-1.3.6.gem
gem install activerecord-1.15.6.gem
gem install actionwebservice-1.2.6.gem
gem install rake-0.7.3.gem
gem install rails-1.2.6.gem

rm activesupport-1.4.4.gem actionpack-1.13.6.gem actionmailer-1.3.6.gem activerecord-1.15.6.gem actionwebservice-1.2.6.gem rake-0.7.3.gem rails-1.2.6.gem


Primera Cayapa Tećnica de Canaima 2.0

Los días 05 y 06 de diciembre del presente año (2008 por si acaso :p) se celebró en la Península de Paraguaná el primer BSP (Bug Squash Party) sobre la distribución venezolana GNU/Linux Canaima 2.0; evento que fue bautizado como Cayapa Técnica. Para aquellos que no sean de Venezuela o no conozcan el significado, "Cayapa" es el nombre que le dan los campesinos venezolanos al trabajo mancomunado, realizado de manera cooperativa. Así que de ahí sale el nombre tan original ;)

La planta Venezolana de Industria Tecnológica (VIT) fue la sede anfitriona de tan importante evento al cual tuve la suerte ser invitado como miembro de la Comunidad de Software Libre y donde tuve el honor de compartir con otros compañeros de la comunidad y de instituciones gubernamentales como el Centro Nacional de Tecnologías de Información (CNTI), la Fundación para el Desarrollo de la Ciencia y la Tecnología (FUNDACITE) y el Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL), entre otros.

De más está decir que el evento fue netamente técnico (claro, con sus respectivos ratos de recreación y curda... ejmmm... perdón ocio xD) centrado en la búsqueda y resolución de errores en el proyecto Canaima. El equipo se dividió en 2 grupos; uno orientado a la parte técnica de la distribución y otro a la plataforma colaborativa. Al final de la jornada se reportaron 36 fallas y sugerencias sobre el sistema y la plataforma colaborativa, así como algunas ideas para su futura corrección.

El evento también sirvió para realizar pruebas de funcionamiento del sistema operativo sobre los equipos de escritorio y portátiles de VIT, por lo que se espera que para el 2009 estos equipos ya vengan con Canaima 2.0 pre-instalado y corriendo de la mejor manera posible.

A continuación dejo un álbum con unas pocas fotos de las instalaciones de la planta de VIT y del grupo de trabajo de la Cayapa :D

Canaima BSP 1

Instalar Compiz Fusion en Debian Lenny

En estos días me dispuse a instalar de nuevo Compiz en mi Debian Lenny y me encontré con la sorpresa de que los repositorios que pululan por ahí en internet ya no estaban disponibles así que decidí hacer una búsqueda y publicar mis resultados. Acá está el enlace del repositorio que encontré y a continuación explico como hacer la instalación.

Compiz Fusion solo funcionará si tienes una tarjeta gráfica con soporte OpenGL y si tienes instalado correctamente el driver de vídeo. Si tu tarjeta gráfica es NVIDIA puedes leer este post para instalar el driver de vídeo correctamente.

Dicho esto, entonces procedamos... Primero agregamos las siguientes líneas a nuestro archivo /etc/apt/sources.list:
deb http://download.tuxfamily.org/osrdebian unstable compiz-fusion-git
deb-src http://download.tuxfamily.org/osrdebian unstable compiz-fusion-git


Agregamos la llave GPG ejecutando en la consola (como super usuario):
# wget http://download.tuxfamily.org/osrdebian/61B8DB62.gpg -O- | apt-key add -

Y actualizamos la lista de paquetes:
# aptitude update

Luego instalamos:
# aptitude install compiz compiz-gnome

Para ejecutarlo basta con correr en la consola:
$ compiz --replace &

Y para configurarlo vamos al menú Sistema->Preferencias->Administrador de Opciones CompizConfig



Si queremos añadirle más funcionalidad al asunto podemos instalar el decorador de ventanas emerald:
# aptitude install emerald emerald-themes

Y entonces ejecutar el compiz con la siguiente instrucción:
$ compiz --replace -c emerald &

Eso nos dará como resultado un escritorio muy cool xD