This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

Interface Table

This document is not yet official - it is a work in progress.

This inteface table should be kept up-to-date. Wherever possible, it should just link to automatically-generated documentation.

Refer to AddedDeprecatedInterfaces for information about interfaces added and deprecated from Platform modules.

FreeDesktop.org Desktop Integration Interfaces

FreeDesktop.org provide interfaces that are followed so that interface consumers may integrate applications into both the GNOME and KDE desktops.

The freedesktop.org Standards website highlights other specifications standards that are followed by the GNOME and KDE stacks.

File Type

Location

Reference

Icons

%{datadir}/icons

Icon Theme Specification

Mime Integration Files

%{datadir}/mime

Shared Mime Info Specification

Menu Integration

%{datadir}/applications

Desktop Menu Integration Specification

The following specifications are Stable, and the ones that interface consumers are encouraged to use:

Base Directory Specification

The basedir-spec Specification describes the meaning of environment variables that are used in the following specifications.

Desktop Menu Integration

The menu-spec Specification describes how to customize the GNOME menus and how to integrate an application into the GNOME Applications Menu.

The Desktop Entry Specification explains the desktop file format.

Shared Mime Info Specification

The shared-mime-info-spec Specification describes how to integrate into the desktop MIME database.

This specification was added in GNOME 2.8

Icon Theme Specification

The icon-theme-spec Specification describes how to integrate application icons into the GNOME desktop.

To support users with accessibility needs, application vendors should include appropriate accessibility icons for their applications into the following themes:

This specification was added in GNOME 2.2

Platform Software Developer Interfaces Intended For Use

All Platform GNOME modules follow GNOME API/ABI rules. The following modules include interfaces intended for general interface consumer use.

Interface

Header file Location

pkgconfig module

ATK

%{includedir}/atk-1.0

atk

Glib

%{includedir}/glib-2.0

glib-2.0, gobject-2.0, gmodule-2.0

gnome-mime-data

N/A

N/A

intltool

%{includedir}

N/A

GTK+

%{includedir}/gtk-2.0

gtk+-2.0, gdk-2.0, gdk-pixbuf-2.0

libxml2

%{includedir}/libxml2

libxml-2.0

libxslt

%{includedir}

libxslt

Pango

%{includedir}/pango-1.0

pango.pc, pangoft2.pc, pangox.pc

GConf

%{includedir}/gconf/2

gconf-2.0

gnome-vfs

{includedir}/gnome-vfs-2.0, %{includedir}/gnome-vfs-module-2.0

gnome-vfs-2.0, gnome-vfs-module-2.0

pkgconfig

N/A

N/A

ATK

ATK is the Accessibility ToolKit. These interfaces are intended to be used by AT (Accessible Technology) programs to provide services needed for users with accessibility needs. These interfaces are typically accessed via at-spi.

Glib/GObject/GModule

The Glib/GObject/GModule libraries provide core utility functions used by all GNOME programs. Interface consumers are encouraged to use interfaces as documented. These interfaces ensure a high degree of stability because running 'make check' is used to verify that the built libraries conform to an expected listing of symbols via the abicheck script.

The Glib/GObject/GModule build process includes explicit listings of the ABI (gtk.symbols, etc.) and running 'make check' verifies that the built libraries conform to that list of symbols. These tests currently only check function interfaces and not data interfaces. These tests help to verify interface stability for these libraries.

GTK+/GDK/!GdkPixbuf

The GTK+/GDK/!GdkPixbuf interfaces provide base widgets, drawing, and image processing functionality. Interface consumers are encouraged to use interfaces as documented. These interfaces ensure a high degree of stability because running 'make check' is used to verify that the built libraries conform to an expected listing of symbols via the abicheck script.

The GTK+/GDK/!GdkPixbuf build process includes explicit listings of the ABI (gtk.symbols, etc.) and running 'make check' verifies that the built libraries conform to that list of symbols. These tests currently only check function interfaces and not data interfaces. These tests help to verify interface stability for these libraries.

gnome-mime-data

The gnome-mime-data module contains interfaces exposed in the "Shared Mime Info Specification" freedesktop.org specification. It contains no binary API.

Refer to gnome-vfs-mime.5 man page.

intltool

Internationalization Tools. The intltool contains the intltool-extract, intltool-merge, intltool-prepare, intltool-update, and intltoolize programs that are used to support internationalized text for the GNOME stack.

libxml2

XML processing/

libxslt

XSL processing.

Pango

Pango provides a framework for the layout and rendering of internationalized text.

GConf

GConf is the GNOME Configuration library and is used to store system and user configuration data used by GNOME programs. Interface consumers may use GConf to store and access configuration data for their programs. Unless otherwise specified, the specific GConf keys used by various GNOME applications are not Stable interfaces. Therefore, interface consumers should not make their programs depend on GConf keys that are provided by the GNOME desktop.

gnome-vfs

gnome-vfs is the GNOME Virtual File System used by nautilus, and other programs to support URI (Universal Resource Indicator)

pkgconfig

In order to take advantage of the interface stability provided by the GNOME Software Developer interfaces, Interface consumers should ensure that they properly compile and link their programs against the GNOME libraries. Compiler include and link options should be acquired via the pkg-config utility.

Include: pkg-config --cflags modulename Linker: pkg-config --libs modulename

The modulename for each module is specified in the Interface Table.

File Installation Locations

File Type

Location

Reference

Binaries to be run as user

<bindir>

Filesystem Hierarchy Standard

Binaries to be run as root

<sbindir>

Filesystem Hierarchy Standard

Binaries that are non-enduser and non-system administrator commands (daemons/helper utilities/etc.)

<libexecdir> on Linux, <libdir> on Solaris

Filesystem Hierarchy Standard

Libraries

<libdir>

Filesystem Hierarchy Standard

Man Pages

<datadir>/man

Filesystem Hierarchy Standard

gtk-doc Interface Documentation

<datadir>/gtk-doc

Interface documentation built with gtk-doc

aclocal files

<datadir>/aclocal

Automake Documentation

Platform Software Developer Interfaces With Planned Deprecation

Refer to GNOME API Documentation Reference and the upcoming deprecations list for information about upcoming depcrecations.

Platform Software Developer Interfaces Not Intended For Use

BrianCameron: It would be great to list at-spi in the recommended section since it is needed to write an AT program. I left it here because there was so much confusion about whether GNOME supports bonobo/ORBit2 which at-spi requires and exposes in its headers.

Interface

Header file Location

pkgconfig module

at-spi

%{includedir}/at-spi-1.0

cspi-1.0, libspi-1.0

audiofile

%{includedir}

audiofile.pc

GAIL

%{includedir}/gail-1.0

gail and libgail-gnome

esound

%{includedir}

N/A

gtk-doc

N/A

N/A

libIDL

%{includedir}/libIDL-2.0

libIDL-2.0

audiofile

Low-level audio support.

at-spi

The at-spi library provides out-of-process access to the ATK interfaces, so that an AT (Accessibile Technology) program can access information concerning other running programs.

esound

Enlightened Sound Daemon

GAIL

GAIL is the GTK Accessibility Implementation Library. It provides a few helper interfaces for interface consumers who create custom widgets to more easily implement ATK interfaces. The bulk of this library contains private implementation of ATK interfaces for GNOME widgets which are not intended for interface consumer use.

libIDL

Interface Description Language. Used to support the GNOME component model. Intended only for use within the GNOME stack


2024-10-23 10:59