freedesktop.org (fd.o), formerly X Desktop Group (XDG), is a project to work on interoperability and shared base technology for free-software desktop environments for the X Window System (X11) and Wayland on Linux and other Unix-like operating systems. Although freedesktop.org produces specifications for interoperability, it is not a formal standards body.
The project was founded by Havoc Pennington, a GNOME developer working for Red Hat in March 2000. Widely used open-source X-based desktop projects, such as GNOME, KDE's Plasma Desktop, and Xfce, are collaborating with the freedesktop.org project. In 2006, the project released Portland 1.0 (xdg-utils), a set of common interfaces for desktop environments. freedesktop.org joined the X.Org Foundation in 2019. Some of the project's servers are hosted by Portland State University.
Hosted projects
freedesktop.org provides hosting for a number of relevant projects. These include:
Windowing system and graphics
Software related to windowing systems and graphics in general
Cairo, a vector graphics library with cross-device output support
Direct Rendering Infrastructure (DRI), Linux API to access the graphics hardware, used by X11, Wayland compositors, Mesa 3D, etc. 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 implementation of several graphics API such as Vulkan and OpenGL 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 reference implementation of the X11 protocol XCB, an Xlib replacement. Xephyr is a display server
Other
D-Bus, a message bus akin to DCOP (KDE 3) and Bonobo (GNOME 2) Elektra, a library for reading and writing configuration FreeType, a text rendering library. fontconfig is a library for font discovery, name substitution, etc. fprint, a library for the consumer fingerprint reader devices Geoclue, a geoinformation service. GStreamer is a cross-platform multimedia framework. GTK-Qt engine, a GTK+ 2 engine which uses Qt to draw the graphical control elements, providing the same look and feel of KDE applications to GTK+2 applications. HAL (Hardware Abstraction Layer) is a consistent cross-operating system 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. PipeWire is a low-latency server for handling sandbox-friendly audio and video streams on Linux, which provides an implementation of PulseAudio, JACK, and ALSA as well as secure methods for screenshotting and screencasting on Wayland compositors. systemd is a comprehensive init framework to start and manage services and sessions meant to replace older init models. Xft, anti-aliased fonts using the FreeType library, 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. Also, Avahi (a free Zeroconf implementation) started as a fd.o project but has since become a separate project.
Base Directory Specification
XDG Base Directory Specification (XDG BDS) introduces a range of variables where user-specific files used by programs should be found. Many tools and applications utilize these variables by default.
User directories
Besides the variables mentioned below, XDG BDS also specifies that users' local binary files may be installed into . Systems compliant with the spec are expected to make this directory available in their CLI's environment variable.