Freedesktop.org
lastmod 2026-02-18created 2017-01-1814 edits
freedesktop.org is a site that documents specifications for interoperability and shared technologies in information processing related to the X Window System and desktops built on it, and hosts open-source software projects that use those components.
Categories
Specifications
X Desktop Group
xdg originally stood for the X Desktop Group, now known as freedesktop.org, which developed a set of common standards across various desktop environments such as GNOME, KDE, and LXDE.
These standards are important because they mean that xdg-open can be used in a standards-compliant desktop environment to open a file with the default application.
For example, you can just type the following.
Regardless of the running desktop environment, the default opener such as gnome-open is invoked.
Hosted Projects
Windowing system and graphics
Software related to windowing systems and graphics in general
- Cairo, a vector graphics library that supports cross-device output
- Direct Rendering Infrastructure (DRI), an interface that lets users safely access video hardware without sending any data to the X server
- Glamor, 2D graphics common driver for X server, it supports a variety of graphics chipsets which have supports for OpenGL/EGL/GBM APIs
- Mesa 3D, an OpenGL implementation
- Pixman, is a low-level software library for pixel manipulation, providing features such as image compositing and trapezoid rasterization. Important users of pixman are the cairo graphics library and the X.Org Server
- Poppler, a PDF rendering library
- Video Acceleration API
- Wayland, protocol to replace X11; features: no tearing, lag, redrawing or flicker
- X.Org Server: The official implementation of the official X11 specification. The current version is derived from the XFree86 version just before its license change.
- XCB, a replacement for Xlib
- Xephyr is a display server
Other
- D-Bus, a message bus that plays a role similar to DCOP in KDE3 and Bonobo in GNOME2.
- Elektra, a library for reading and writing configuration
- fontconfig A library that performs font-related tasks such as font lookup and font name substitution
- fprint, a library for the consumer fingerprint reader devices
- Geoclue, a geoinformation service.
- GStreamer is a cross-platform multimedia framework.
- GTK-Qt engine, an engine for GTK+ that draws widgets through Qt to reduce the visual mismatch between Qt applications and GTK+ applications
- Hardware Abstraction Layer (HAL): a consistent cross-OS layer; it has been deprecated and replaced by udev.
- kmscon, userspace virtual console to replace Linux console, uses KMS driver and supports Unicode
- luit, a tool used by terminal emulators
- libinput a library to handle input devices in Wayland compositors and to provide a generic X.Org input driver. It provides device detection, device handling, input device event processing and abstraction to * minimize the amount of custom input code compositors need to provide the common set of functionality that users expect
- PulseAudio is a sound server frontend meant to provide software mixing, network audio, and per application volume control.
- systemd is a comprehensive init framework to start and manage services and sessions meant to replace older init models.
- Xft, anti-aliased fonts using FreeType, rather than the old X core fonts.
- pkg-config is a helper program used to generate flags for compiler and linker to include necessary libraries.
- PolicyKit: a system-wide authorization management tool
- notify-send - A command-line tool that sends desktop notifications via freedesktop.
XDG Base Directory Specification
- XDG_CONFIG_HOME
- Where user-specific configurations should be written (analogous to
/etc). - Should default to
$HOME/.config.
- XDG_CACHE_HOME
- Where user-specific non-essential (cached) data should be written (analogous to
/var/cache). - Should default to
$HOME/.cache.
- XDG_DATA_HOME
- Where user-specific data files should be written (analogous to
/usr/share). - Should default to
$HOME/.local/share.
- XDG_STATE_HOME
- Where user-specific state files should be written (analogous to
/var/lib). - Should default to
$HOME/.local/state.
- XDG_RUNTIME_DIR
- Used for non-essential, user-specific data files such as sockets, named pipes, etc.
- Not required to have a default value; warnings should be issued if not set or equivalents provided.
- Must be owned by the user with an access mode of
0700. - Filesystem fully featured by standards of OS.
- Must be on the local filesystem.
- May be subject to periodic cleanup.
- Modified every 6 hours or set sticky bit if persistence is desired.
- Can only exist for the duration of the user's login.
- Should not store large files as it may be mounted as a tmpfs.
- pam_systemd sets this to
/run/user/$UID.
XDG user directories
Both the local ~/.config/user-dirs.dirs and global /etc/xdg/user-dirs.defaults configuration files use the following environment variable format to point to user directories:
XDG_DIRNAME_DIR="$HOME/directory_name"
An example of the local one (~/.config/user-dirs.dirs) is as follows (all template directories):
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_VIDEOS_DIR="$HOME/Videos"
Desktop entry
See Desktop Entry for details.