Guides & References
Vala for C# Programmers by GNOME
Gtk+ Kick-Start Tutorial for Vala by Alberto Ruiz
Vala Language Introduction by Andre Masella
Creating elementary OS apps with GTK & Vala
Learn Vala and Gtk+ from Scratch (Playlist)
Packages
Submitting API-Bugs and Patches
For all bindings where the status is not marked as external, and unless otherwise noted, bugs and pull-requests should be submitted to the Vala product in the GNOME GitLab instance.
Projects without VAPI files
Most GObject-instrospected projects are shipping their own bindings and Vala also ships with many of them. For many non-GObject introspected libraries, a repository is available in the vala-extra-vapis project in the GNOME GitLab instance.
GNOME & Friends
Core
Libgee is a collection library providing GObject-based interfaces and classes for commonly used data structures.
GIO provides a modern and easy-to-use VFS API. It provides a file system abstraction which allows applications to access local and remote files with a single consistent API.
GLib provides the core application building blocks for libraries and applications written in C. It provides the core object system used in GNOME, the main loop implementation, and a large set of utility functions for strings and common data structures.
libpeas is a gobject-based plugins engine, and is targetted at giving every application the chance to assume its own extensibility.
libpeas is a gobject-based plugins engine, and is targetted at giving every application the chance to assume its own extensibility.
User Interface
Clutter is a GObject based library for creating fast, visually rich, graphical user interfaces.
GooCanvas is a canvas widget for GTK+ that uses the cairo 2D library for drawing.
GTK+ is the primary library used to construct user interfaces in GNOME applications. It provides user interface controls and signal callbacks to control user interfaces.
GTK is the primary library used to construct user interfaces in GNOME applications. It provides user interface controls and signal callbacks to control user interfaces.
GtkSourceView is a portable C library that extends the standard GTK+ framework for multiline text editing with support for configurable syntax highlighting, unlimited undo/redo, search and replace, a completion framework, printing and other features typical of a source code editor.
GtkSourceView is a GNOME library that extends GtkTextView, the standard GTK+ widget for multiline text editing. GtkSourceView adds support for syntax highlighting, undo/redo, file loading and saving, search and replace, a completion system, printing, displaying line numbers, and other features typical of a source code editor.
GtkSourceView is a GNOME library that extends GtkTextView, the standard GTK+ widget for multiline text editing. GtkSourceView adds support for syntax highlighting, undo/redo, file loading and saving, search and replace, a completion system, printing, displaying line numbers, and other features typical of a source code editor.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers. This is the library to use to acces JavaScript from WebKitGTK.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers. This is the library to use to acces JavaScript from WebKitGTK.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers. This is the library to use to acces JavaScript from WebKitGTK.
The libdazzle library is a companion library to GObject and Gtk+. It provides various features that we wish were in the underlying library but cannot for various reasons. In most cases, they are wildly out of scope for those libraries. In other cases, our design isn't quite generic enough to work for everyone.
Libgda is a (relatively small) database access library. This package provides GTK+ widgets to database access.
Shumate is a library providing a widget to display maps in applications.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers. This is the library to use to build extensions running in the separated webprocess.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers. This is the library to use to build extensions running in the separated webprocess.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers.
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable for projects requiring any kind of web integration, from hybrid HTML/CSS applications to full-fledged web browsers. This is the library to use to build extensions running in the separated webprocess.
Multimedia
babl is pixel encoding and color space conversion engine in C. It allows converting between different methods of storing pixels known as pixel formats that have with different bitdepths and other data representations, color models, color spaces and component permutations. A vocabulary to formulate new pixel formats from existing primitives is provided as well as the framework to add new color models, spaces and data types.
GEGL (Generic Graphics Library) is a data flow based image processing framework, providing floating point processing and non-destructive image processing capabilities to GNU Image Manipulation Program and other projects (imgflo, GNOME Photos, gcut, iconographer, …)
GEGL (Generic Graphics Library) is a data flow based image processing framework, providing floating point processing and non-destructive image processing capabilities to GNU Image Manipulation Program and other projects (imgflo, GNOME Photos, gcut, iconographer, …)
gexiv2 is a GObject wrapper around the Exiv2 photo metadata library. It allows for GNOME applications to easily inspect and update EXIF, IPTC, and XMP metadata in photo and video files of various formats
Framework that provides access to various sources of multimedia content
GObject-based API for handling resource discovery and announcement over SSDP.
The GStreamer Editing Services (GES) aims to fill the gap between GStreamer/NLE and the application developer by offering a series of classes to simplify the creation of many kind of editing-related applications.
Powerful framework for creating multimedia applications. Supports both Audio and Video.
GStreamer Multimedia Framework Base plugin libraries.
Small utility library that aims to ease the handling and implementation of UPnP audio/video profiles
GUPnP DLNA is a set of utility APIs to simplify DLNA-specific bits of MediaServer implementations, such as DLNA media profile guessing.
A small and lightweight implementation of the XDG Sound Theme Specification.
Libcanberra-gtk provides a few functions that simplify libcanberra usage from Gtk+.
Librygel-core is a collection of classes useful to Rygel's server and renderer implementation libraries and useful to plugin implementors.
This library implements a generic database abstraction used by rygel and rygel plugins
This library may be used to create UPnP or DLNA Renderers. For instance, librygel-renderer-gst uses librygel-renderer with GStreamer to implement its RygelPlaybinRenderer renderer.
This library may be used to create UPnP or DLNA Renderers using GStreamer. The RygelPlaybinRenderer may wrap an existing GStreamer playbin or create its own. See the example.
This library implements the Remote User Interface Server protocol interfaces.
This library may be used to create UPnP or DLNA servers, Rygel Server plugins or Rygel Media Engines
Under the Hood
ATK provides the set of accessibility interfaces that are implemented by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and control running applications.
AT-SPI2 is a D-Bus based accessibility framework. It defines a D-Bus protocol for providing and accessing application accessibility information. The project includes a library for bridging the D-Bus protocol to the ATK API, allowing Gtk based applications to be made accessible.
Cairo is a 2D graphics library with support for multiple output devices like the X Window System (via both Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG.
COGL is a low level OpenGL abstraction library developed for (and part of) Clutter. It is used primarily by Clutter to provide a common rendering API that works transparently across OpenGL >=1.4, OpenGL ES 1.1 and OpenGL ES 2.0.
An intermediate layer which isolates GTK+ from the details of the windowing system.
GdkPixbuf is a library for image loading and manipulation. The GdkPixbuf documentation contains both the programmer's guide and the API reference.
Pango is the core text and font handling library used in GNOME applications. It has extensive support for the different writing systems used throughout the world.
Data Storage
Camel is a generic messaging library. It supports the standard messaging system for receiving and sending messages. It is the messaging backend for Evolution.
Libfolks is a library that aggregates people from multiple sources (eg, Telepathy connection managers and eventually evolution data server, Facebook, etc.) to create metacontacts.