Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ENTORNOS GNU/LINUX
El inclinarnos hacia un lenguaje de programacin para hacer una tarea determinada es una tarea algo
complicada, con tantas opciones que hay. Sin embargo, al trabajar en Linux veo muy poderoso el
utilizar como lenguaje el C. Con el tenemos un amplio repertorio de posibilidades. El problema es
cuando queremos realizar programas con interfaz grfica, hacerlo con C es un proceso bastante difcil,
pero podemos optar por GTK+ (GIMP toolkit) como nuestro toolkit grfico para realizar esta tarea.
La documentacin para trabajar con GTK+ y C, en mi opinin es muy escasa y ms para los
hispanohablantes. Es por eso que he decidido crear este documento, intentando apoyar un poco a la
comunidad con lo que espero pueda ser una interesante gua de referencia.
A lo largo de este libro, trataremos de cubrir con ejemplos cada captulo. Recomiendo que tengas en
mente un proyecto en especfico, en el cual puedas ir aplicando todos los conocimientos que vayamos
aprendiendo a lo largo del libro, para que al final tengas un buen programa con su interfaz grfica que
puedas compartir con la comunidad Linuxera :) . Yo quise empezar a desarrollar este libro, por que
quiero darle una interfaz grfica a varios programas que tengo en mente, uno es un generador de
diccionarios para anlisis de seguridad, el cual compartir con ustedes y mostrar el procedimiento
mediante el cual le gener su interfaz grfica.
SOBRE EL AUTOR
No hay mucho que decir sobre mi, solo soy un programador mexicano que ltimamente tiene mucho
tiempo libre. Es por eso que quiero invertir este tiempo en algo productivo y si puedo ayudar a alguien
ms con este libro considerar que la misin fue todo un xito.
Por qu?
Yo he aprendido mucho de los artculos que he encontrado en Internet y se de lo importante que es el
que siempre se estn generando nuevas fuentes de informacin. Aparte que como ya coment, veo muy
escasa la documentacin en mi idioma y para las personas que no hablan ingls esto puede ser un gran
obstculo. Quiero aprovechar mi tiempo ayudando, por que a mi me sirve como programador para
reafirmar y mejorar mis conocimientos y habilidades.
En mis tiempos libres me gusta mucho programar en C, sin embargo llevo algo de tiempo que no he
podido realizar un programa por el simple hecho de amor al arte. Me he dedicado ms al desarrollo
web, pginas en PHP y AJAX.
Junto con unos amigos form una empresa de desarrollo de software, nos ubicamos en Len,
Guanajuato, Mxico, pueden visitar nuestra pgina en: www.quanaxoft.com
Quisiera estar al pendiente de los comentarios que pudieran salir de las personas que vayan leyendo
este libro, si encuentras algn error o simplemente quieres platicar sobre algn tema de programacin
te agradecera me dejaras un mensaje en mi blog: http://www.quanaxoft.com/blog , abrir un Post
donde vaya dndole seguimiento al libro y a los comentarios de los usuarios.
ANTES DE EMPEZAR
Conocimientos previos
Requerimientos
Este libro est orientado a la comunidad linuxera. Necesitamos tener GNU/Linux instalado, en mi caso
yo estoy trabajando con Ubuntu 9.10 (Karmic Koala). Necesitaremos tener instalado:
ACERCA DE GTK+
GTK+ o The GIMP Toolkit es un conjunto de bibliotecas multiplataforma para desarrollar interfaces
grficas de usuario (GUI), principalmente para los entornos grficos GNOME, XFCE y ROX aunque
tambin se puede usar en el escritorio de Windows, MacOS y otros.
Inicialmente fueron creadas para desarrollar el programa de edicin de imagen GIMP, sin embargo
actualmente se usan bastante por muchos otros programas en los sistemas GNU/Linux. Junto a Qt es
una de las bibliotecas ms populares para X Window System.
GTK+ se ha diseado para permitir programar con lenguajes como C, C++, C#, Java, Ruby, Perl, PHP
o Python.
Licenciado bajo los trminos de LGPL, GTK+ es software libre y es parte del proyecto GNU.
* GNOME est basado en GTK+, lo que significa que los programas de GNOME usan GTK+
* Xfce est basado en GTK+
* LXDE est basado en GTK+, significa "Lightweight X11 Desktop Environment"
* ROX Desktop un escritorio ligero, con caractersticas de la GUI de RISC OS
* GPE Palmtop Environment
* Maemo (Nokia's Internet-tablet framework)
* Access Linux Platform (sucesor de la plataforma Palm OS PDA)
* One Laptop Per Child usa GTK+ y PyGTK
Los entornos de escritorio no son necesarios para ejecutar los programas GTK+. Si las bibliotecas que
requiere el programa estn instaladas, un programa GTK+ puede ser ejecutado por encima de otros
entornos basadas en X11 como KDE o cualquier otro entorno, lo que incluye Mac OS X, si X11.app
est instalado. GTK+ tambin puede ejecutarse en Microsoft Windows, es utilizado por algunas
aplicaciones populares multiplataforma como Pidgin y el GIMP. wxWidgets, un toolkit grfico
multiplataforma usa GTK+ en sistemas tipo Unix.[1] Algunos de los ports ms inusuales incluyen
directfb y ncurses.
Aplicaciones
X Window System (en espaol sistema de ventanas X) es un software que fue desarrollado a
mediados de los aos 1980 en el MIT para dotar de una interfaz grfica a los sistemas Unix. Este
protocolo permite la interaccin grfica en red entre un usuario y una o ms computadoras haciendo
transparente la red para ste. Generalmente se refiere a la versin 11 de este protocolo, X11, el que
est en uso actualmente. X es el encargado de mostrar la informacin grfica de forma totalmente
independiente del sistema operativo.
X fue diseado primariamente para implementar clientes ligeros, donde mucha gente usaba
simultneamente la capacidad de procesamiento de un mismo computador trabajando en tiempo
compartido. Cada persona usaba un terminal en red que tena capacidades limitadas para dibujar la
pantalla y aceptar la entrada del usuario. Debido a la ubicuidad del soporte para el software X en
Unix, es usado en los computadores personales incluso cuando no hay necesidad del tiempo
compartido.
Debido a este esquema cliente-servidor, se puede decir que X se comporta como una terminal grfica
virtual.
Bueno, mostrar en este captulo el mtodo para instalar las aplicaciones y libreras que necesitamos.
Estoy trabajando en Ubuntu 9.10 pero la forma de instalacin creo que puede ser aplicable de igual
manera a otras distribuciones.
Necesitamos instalar GTK+ y sus dependencias, la ventaja de trabajar con distribuciones derivadas de
Debian es que podemos utilizar el package manager y facilitarnos las cosas. Necesitaremos tambin los
paquetes de desarrollo, los podemos reconocer por que tienen terminacin -dev, o -devel para
distribuciones como Fedora Core (RPM).
Para instalar GTK+ necesitaremos Glib, Pango y algunos paquetes GTK+. Podemos descargarlos de la
pgina oficial de gtk: http://www.gtk.org/download-linux.html
Las versiones pueden cambiar con el paso del tiempo, pero en mi caso estos son los archivos que
descargu:
gtk+-2.22.0.tar.gz
Podemos instalar las dependencias de una manera rpida aprovechando que estamos en Ubuntu:
De preferencia crearemos una nueva carpeta donde guardaremos el archivo de gtk que descargamos.
Los pasos a seguir son ejecutar los siguientes comandos desde la terminal, vamos a descomprimir el
archivo que bajamos:
En esta carpeta tenemos un shell script llamado configure , el cual debemos correr para que se vayan
creando los Makefiles necesarios para instalar el programa. El script configure puede recibir varios
parmetros, pero solo le indicaremos que instale gtk en la ruta /opt/gtk y confiaremos en las opciones
por default, ejecutamos entonces:
$ ./configure --prefix=/opt/gtk
Eso quiere decir que en el primer paso si se instal atk y gdk-pixbuf pero la versin que tenemos es
inferior a la que necesita gtk para funcionar.
Entonces tenemos que bajar una versin de atk ms reciente, la podemos encontrar buscando en
google, yo la encontr en: http://www.icewalkers.com/Linux/Software/514330/ATK.html
Ok, ahora buscamos para gdk-pixbuf una versin mas reciente, la podemos encontrar en:
http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.21/
Descomprimimos:
Ok, entonces ya solucionamos el problema de las dependencias faltantes, nos faltara nadamas ir otra
vez a la carpeta donde descomprimimos el gtk y volvemos al paso en que nos quedamos:
$ ./configure --prefix=/opt/gtk
$ make
$ sudo make install
Empezaremos creando una ventana sencilla, la cual estar a la espera del evento donde la cerremos. El
cdigo es el siguiente:
/************************************/
/* MI PRIMER PROGRAMA CON GTK+ */
/************************************/
#include <gtk/gtk.h>
Empezar a hablar a detalle sobre cada lnea respectiva al cdigo, pero primero veremos como
compilar este cdigo (sirve que verificamos que realmente hayamos instalado bien GTK+).
Guardaremos el archivo como prueba.c, abriremos una terminal y ejecutaremos en el directorio donde
tengamos a prueba.c:
$ ./prueba