Writing GUI Applications with Gtk+

GTK+ was originally developed for GIMP photo editing software of GENOME project. Where as nowadays it is very popular cross platform GUI toolkit. The core of GTK+ is written with C Programming language.

Here I am going to show you how you can start working with GTK on Linux.

Installation

 $ sudo apt-get install libgtk-3-dev

This will install the GTK+ version 3 toolkit on your Linux PC.

Writing Code

GTK+ based applications can be written using C,C++,Python or Java. Let’s start with simple program with c only with Text Label on a window.

Filename : helloworld.c

#include <gtk/gtk.h>

int main (int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *label;

    gtk_init(&argc, &argv);

    /* Create the main, top level window */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    /* Give it the title */
    gtk_window_set_title(GTK_WINDOW(window), "Hello, world!");

    /* Center the window */
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

    /* Set the window's default size */
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 100);

    /*
    ** Map the destroy signal of the window to gtk_main_quit;
    ** When the window is about to be destroyed, we get a notification and
    ** stop the main GTK+ loop by returning 0
    */
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    /*
    ** Assign the variable "label" to a new GTK label,
    ** with the text "Hello, world!"
    */
    label = gtk_label_new("Hello, GTK+!");

    /* Plot the label onto the main window */
    gtk_container_add(GTK_CONTAINER(window), label);

    /* Make sure that everything, window and label, are visible */
    gtk_widget_show_all(window);

    /*
    ** Start the main loop, and do nothing (block) until
    ** the application is closed
    */
    gtk_main();

    return 0;

}

How to Compile

$ gcc helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-3.0`

pkg-config --cflags --libs gtk+-3.0 is a bash command that outputs the flags for gtk application compilation.

How to Execute

It’s same as you execute binary executables in UNIX.

./helloworld

For further learning I found that GENOME Tutorial for GTK and This Youtube Playlist is very good.

happy GTK+ coding