Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ENTORNOS GNU/LINUX
El inclinarnos hacia un lenguaje de programación 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 gráfica, hacerlo con C es un proceso bastante difícil,
pero podemos optar por GTK+ (GIMP toolkit) como nuestro toolkit gráfico para realizar esta tarea.
La documentación para trabajar con GTK+ y C, en mi opinión es muy escasa y más 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 guía de referencia.
A lo largo de este libro, trataremos de cubrir con ejemplos cada capítulo. Recomiendo que tengas en
mente un proyecto en específico, 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 gráfica que
puedas compartir con la comunidad Linuxera :) . Yo quise empezar a desarrollar este libro, por que
quiero darle una interfaz gráfica a varios programas que tengo en mente, uno es un generador de
diccionarios para análisis de seguridad, el cual compartiré con ustedes y mostraré el procedimiento
mediante el cual le generé su interfaz gráfica.
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
más con este libro consideraré que la misión fue todo un éxito.
¿Por qué?
Yo he aprendido mucho de los artículos que he encontrado en Internet y se de lo importante que es el
que siempre se estén generando nuevas fuentes de información. Aparte que como ya comenté, veo muy
escasa la documentación en mi idioma y para las personas que no hablan inglés esto puede ser un gran
obstáculo. 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 más al desarrollo
web, páginas en PHP y AJAX.
Junto con unos amigos formé una empresa de desarrollo de software, nos ubicamos en León,
Guanajuato, México, pueden visitar nuestra página en: www.quanaxoft.com
Quisiera estar al pendiente de los comentarios que pudieran salir de las personas que vayan leyendo
este libro, si encuentras algún error o simplemente quieres platicar sobre algún tema de programación
te agradecería me dejaras un mensaje en mi blog: http://www.quanaxoft.com/blog , abriré un Post
donde vaya dándole 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
gráficas de usuario (GUI), principalmente para los entornos gráficos GNOME, XFCE y ROX aunque
también se puede usar en el escritorio de Windows, MacOS y otros.
Inicialmente fueron creadas para desarrollar el programa de edición 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 más populares para X Window System.
GTK+ se ha diseñado para permitir programar con lenguajes como C, C++, C#, Java, Ruby, Perl, PHP
o Python.
Licenciado bajo los términos 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 características 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 están 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+ también puede ejecutarse en Microsoft Windows, es utilizado por algunas
aplicaciones populares multiplataforma como Pidgin y el GIMP. wxWidgets, un toolkit gráfico
multiplataforma usa GTK+ en sistemas tipo Unix.[1] Algunos de los ports más inusuales incluyen
directfb y ncurses.
Aplicaciones
X Window System (en español sistema de ventanas X) es un software que fue desarrollado a
mediados de los años 1980 en el MIT para dotar de una interfaz gráfica a los sistemas Unix. Este
protocolo permite la interacción gráfica en red entre un usuario y una o más computadoras haciendo
transparente la red para éste. Generalmente se refiere a la versión 11 de este protocolo, X11, el que
está en uso actualmente. X es el encargado de mostrar la información gráfica de forma totalmente
independiente del sistema operativo.
X fue diseñado primariamente para implementar clientes ligeros, donde mucha gente usaba
simultáneamente la capacidad de procesamiento de un mismo computador trabajando en tiempo
compartido. Cada persona usaba un terminal en red que tenía 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 gráfica
virtual.
Bueno, mostraré en este capítulo el método para instalar las aplicaciones y librerías que necesitamos.
Estoy trabajando en Ubuntu 9.10 pero la forma de instalación 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 también los
paquetes de desarrollo, los podemos reconocer por que tienen terminación -dev, o -devel para
distribuciones como Fedora Core (RPM).
Para instalar GTK+ necesitaremos Glib, Pango y algunos paquetes GTK+. Podemos descargarlos de la
página 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 rápida 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
parámetros, 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 versión que tenemos es
inferior a la que necesita gtk para funcionar.
Entonces tenemos que bajar una versión de atk más 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 versión 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 faltaría 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
código es el siguiente:
/************************************/
/* MI PRIMER PROGRAMA CON GTK+ */
/************************************/
#include <gtk/gtk.h>
Empezaré a hablar a detalle sobre cada línea respectiva al código, pero primero veremos como
compilar este código (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