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.
Contents
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:
HighContrast
HighContrastInverse
HighContrastLargePrint
HighContrastLargePrintInverse
LargePrint
LowContrast
LowContrastLargePrint
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> |
|
Binaries to be run as root |
<sbindir> |
|
Binaries that are non-enduser and non-system administrator commands (daemons/helper utilities/etc.) |
<libexecdir> on Linux, <libdir> on Solaris |
|
Libraries |
<libdir> |
|
Man Pages |
<datadir>/man |
|
gtk-doc Interface Documentation |
<datadir>/gtk-doc |
Interface documentation built with gtk-doc |
aclocal files |
<datadir>/aclocal |
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