# Hola mundo (Vala)

Susanna Huhtanen
ihmis.suski@gmail.com 2012
Tiffany Antopolski
tiffany.antopolski@gmail.com
Una aplicación «Hola mundo» básica
Daniel Mustieles
daniel.mustieles@gmail.com 2011 - 2019
Nicolás Satragno
nsatragno@gmail.com 2012 - 2013
Jorge González
jorgegonz@svn.gnome.org 2011

# Cómo construir, instalar y crear un tar.xz de un programa Hola mundo

          Este tutorial le demostrará cómo:

            crear una pequeña aplicación «Hola, mundo» usando GTK+
            hacer el archivo .desktop
            configurar el sistema de construcción

# Crear el programa

## Crear la ventana principal de la aplicación

class MyApplication : Gtk.Application { protected override void activate () { var window = new Gtk.ApplicationWindow (this); window.set_title ("Welcome to GNOME"); window.set_default_size (200, 100); window.show_all (); } }

«Gtk.Application» inicializa GTK+. También conecta el botón x, que se genera automáticamente junto con la ventana, a la señal «destroy».

Se puede empezar a construir la primera ventana. Esto se hace creando una variable llamada window y asignándole una «Gtk.ApplicationWindow».

Se le asignara una propiedad llamada `set_title`. El título puede ser la cadena que quiera pero, para estar seguro, es conveniente que tenga una codificación UTF-8.

Ya tiene una ventana que contiene un título y un botón «cerrar» que funciona. Ahora, añada el texto «Hola mundo».

## Etiqueta para la ventana

var label = new Gtk.Label ("Hello GNOME!"); window.add (label);

Por último, se crea y ejecuta la aplicación

int main (string[] args) { return new MyApplication ().run (args); }

«Gtk.ApplicationWindow» sólo puede contener un widget a la vez. Para construir programas más elaborados necesita crear un widget contenedor como «Gtk.Grid» dentro de la ventana, y después añadirle los otros.

## hello-world.vala

El archivo completo:

public class MyApplication : Gtk.Application { protected override void activate () { var window = new Gtk.ApplicationWindow (this); var label = new Gtk.Label ("Hello GNOME!"); window.add (label); window.set_title ("Welcome to GNOME"); window.set_default_size (200, 100); window.show_all (); } }

public int main (string[] args) { return new MyApplication ().run (args); }

## Ejecutar la aplicación desde la terminal

Para ejecutar esta aplicación, primero guárdela como hello-world.vala. Luego, vaya a la carpeta donde está la aplicación.

Compilar el programa:

    valac --pkg gtk+-3.0 hello-world.vala

Ejecutar el programa:

    ./hello-world

# El archivo .desktop.in

Ejecutar aplicaciones desde la terminal es útil al principio del proceso de crear la aplicación. Para tener una integración con la aplicación completa en GNOME 3, se necesita un lanzador en el escritorio. Para esto, necesita crear un archivo .desktop. El archivo «.desktop» describe el nombre de la aplicación, el icono que usa y varios campos de integración. Puede encontrar una descripción de los archivos .desktop aquí. El archivo .desktop.in creará el .desktop.

El ejemplo muestra los requerimientos mínimos de un archivo `.desktop.in`.

[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=Hello World Comment=Say Hello Exec=@prefix@/bin/hello-world Icon=application-default-icon Terminal=false Type=Application StartupNotify=true Categories=GNOME;GTK;Utility;

Ahora se verán algunas partes del archivo `.desktop.in`.

## Name

El nombre de la aplicación.

## Comment

Una descripción corta de la aplicación.

## Exec

Especifica un comando que ejecutar cuando se elige la aplicación en el menú. En este ejemplo, «exec» sólo indica dónde encontrar el archivo `hello-world` y el archivo se hace cargo del resto.

## Terminal

Especifica si el comando del campo «Exec» se ejecuta en una ventana de la terminal.

Para incluir su aplicación en la categoría correcta, debe añadir las categorías necesarias a la línea «Categories». Puede encontrar más información sobre las distintas categorías en la especificación del menú.

En este ejemplo se ha usado un icono existente. Para usar un icono personalizado, necesita un archivo «.svg» con su icono guardado en /usr/share/icons/hicolor/scalable/apps. Escriba el nombre del archivo del icono en el archivo «.desktop.in», en la línea 7. Puede obtener más información sobre los iconos en Instalar iconos para temas, Instalar iconos para temas y en freedesktop.org: especificaciones/icon-theme-spec.

# El sistema de construcción

Para que su aplicación forme parte realmente del sistema GNOME 3 debe instalarla con la ayuda de autotools. La construcción autotools instalará todos los archivos necesarios en las ubicaciones correctas.

Para esto deberá tener los siguientes archivos:

## autogen.sh

#!/bin/sh

set -e

test -n "$srcdir" || srcdir=`dirname "$0"` test -n "$srcdir" || srcdir=.

olddir=`pwd` cd "$srcdir"

# This will run autoconf, automake, etc. for us autoreconf --force --install

cd "$olddir"

if test -z "$NOCONFIGURE"; then "$srcdir"/configure "$@" fi

Una vez que el archivo autogen.sh esté listo y guardado, ejecute:

    $ chmod +x autogen.sh

## Makefile.am

# The actual runnable program is set to the SCRIPTS primitive. # # Prefix bin_ tells where to copy this bin_PROGRAMS = hello-world hello_world_CFLAGS = $(gtk_CFLAGS) hello_world_LDADD = $(gtk_LIBS) hello_world_VALAFLAGS = --pkg gtk+-3.0 hello_world_SOURCES = hello-world.vala

desktopdir = $(datadir)/applications desktop_DATA = \ hello-world.desktop

## configure.ac

# This file is processed by autoconf to create a configure script AC_INIT([Hello World], 1.0) AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip]) AC_PROG_CC AM_PROG_VALAC([0.16]) PKG_CHECK_MODULES(gtk, gtk+-3.0) AC_CONFIG_FILES([Makefile hello-world.desktop])

AC_OUTPUT

## README

Información que los usuarios deben leer primero. Este archivo puede estar vacío.

Cuando tenga los archivos hello-world, hello-world.desktop.in, Makefile.am, configure.ac y autogen.sh con la información y los permisos correctos, el archivo README puede incluir las siguientes instrucciones:

Para compilar e instalar este programa:

./autogen.sh --prefix=/home/usuario/.local make install

------------- Al ejecutar la primera línea se crean los siguientes archivos:

aclocal.m4 autom4te.cache config.log config.status configure helloWorld.desktop install-sh missing Makefile.in Makefile

Al ejecutar «make install», se instala la aplicación en /home/usuario/.local/bin y se instala el archivo helloWorld.desktop en /home/usuario/.local/share/applications

ahora puede ejecutar la aplicación escribiendo «Hello World» en la vista general.

---------------- Para desinstalarla, escriba:

make uninstall

---------------- Para crear un archivador tar, escriba:

make distcheck

Esto creará el archivo hello-world-1.0.tar.xz