Fact-checked by Grok 2 weeks ago

freedesktop.org

freedesktop.org is a collaborative open-source initiative that hosts the development of libraries, tools, and specifications to promote and shared base technologies for graphical desktop environments on and other systems, particularly those utilizing the . Founded in March 2000 by developer Pennington, the project originated as the X Desktop Group (XDG) to foster cooperation among competing desktop environments like and , addressing fragmentation in standards for file management, application launching, and . Unlike projects that build complete desktop environments, freedesktop.org focuses on providing foundational infrastructure—such as messaging systems, device management, and multimedia frameworks—that desktop developers can adopt to ensure consistent user experiences across distributions.

Key Components

Organization and Impact

Operated as part of the X.Org Foundation, fiscally sponsored by the Software Freedom Conservancy, freedesktop.org receives no direct corporate funding and depends on community contributions, sponsorships from entities like Hetzner Online GmbH, and academic support from institutions such as Portland State University. Since its inception, it has significantly influenced the evolution of Linux desktops by enabling cross-project compatibility, reducing duplication of effort, and supporting modern features like Wayland protocol integration alongside X11, thereby underpinning tens of millions of desktop installations worldwide as of 2025.

History and Background

Founding and Early Years

freedesktop.org was founded in March 2000 by Havoc Pennington, a developer at , initially under the name X Desktop Group (XDG). The project emerged to foster collaboration among open-source desktop environments on the , particularly addressing interoperability challenges between competing projects like and . Pennington initiated the effort as a shared and CVS for developers to standardize libraries, protocols, and documentation, formalizing ongoing ad-hoc progress rather than starting entirely anew. The early focus centered on developing shared technologies essential for cross-desktop compatibility in X11 environments. Key initial activities included advancing the XDND drag-and-drop protocol, which aimed to provide a unified standard for data exchange between applications, with updates and type specifications refined in 2000 and 2002. Additionally, the project standardized string handling in desktop components, ensuring consistent text encoding across tools and interfaces to support in Unix/ desktops. These efforts built on contributions from developers at TrollTech, GTK+, and other groups, emphasizing low-level over high-level features. Between 2000 and 2002, freedesktop.org released foundational specifications and tools, including the initial versions of desktop entry formats that unified configuration files for applications, menus, and links previously handled separately by and . These formats, encoded in , enabled consistent launching and categorization of software across environments. The project also documented MIME associations and type registries, incorporating existing practices from applications like and to create a . By , infrastructure for coordination was in place, with mailing such as xdg-list facilitating discussions on specifications and implementations, and a providing centralized and collaboration space. This setup supported steady progress, including window manager hints and URI handling, involving maintainers from , , and the (LSB). In later years, the project transitioned toward broader hosting of initiatives.

Key Milestones and Evolution

In 2006, freedesktop.org played a pivotal role in standardizing desktop integration tools through the release of 1.0, also known as xdg-utils 1.0, on October 11. This suite of utilities provided essential functions for application launching, type handling, and interoperability, enabling smoother cross-desktop compatibility for applications. Following this milestone, freedesktop.org expanded its scope by hosting and maturing key open-source projects that underpin Linux desktop ecosystems. , initially developed in 2002 as an mechanism, saw significant post-2006 evolution under freedesktop.org's infrastructure, with releases like version 0.91 in July 2006 enhancing its role in coordinating desktop services across applications. Similarly, the Cairo graphics library, focused on 2D vector rendering, became a cornerstone project hosted on the platform, with ongoing development post-2006 supporting hardware-accelerated rendering in toolkits like and . By 2018, freedesktop.org modernized its collaboration tools with the introduction of a self-hosted instance on August 20, facilitating , issue tracking, and for its hosted projects. This migration streamlined workflows for developers, replacing older systems and enabling features like integrated pipelines to accelerate project maintenance. In 2019, freedesktop.org approved its merger with the on April 11, integrating its operations under the umbrella of Software in the Public Interest, Inc. () until 2025. In May 2023, the approved joining the (SFC) for fiscal sponsorship, with formal removal from in April 2025. These affiliations strengthened resource sharing and governance alignment, allowing freedesktop.org to leverage nonprofit infrastructure while continuing to focus on desktop standards and . A notable expansion occurred in November 2025, when freedesktop.org assumed hosting and maintenance of the (FHS) on November 6, providing a centralized platform for this POSIX-aligned specification that defines file and directory structures in systems. This move ensures ongoing updates to FHS, promoting consistency in distributions and aligning desktop conventions with broader system standards. However, this effort is part of competing initiatives to update the FHS, with the UAPI Group also maintaining a version and no consensus yet on the official successor as of November 2025. Throughout its evolution, freedesktop.org has advanced support for modern display protocols like , with the project hosting the Wayland compositor and protocol releases, including version 1.23.91 (RC1 for 1.24) in May 2025, to replace legacy X11 systems with more efficient, secure rendering. Complementing this, multimedia initiatives progressed through events such as the Conference held October 23-24, 2025, in , , which gathered developers to discuss pipeline enhancements and hardware integration under freedesktop.org's hosted framework.

Organization and Infrastructure

Governance and Affiliations

Freedesktop.org operates as a community-driven initiative under the oversight of the since 2019, when the two entities formally merged to enhance collaboration on open-source desktop technologies. The , in turn, functions as a member project of Software in the Public Interest, Inc. (), a 501(c)(3) non-profit organization that manages , asset holding, and administrative tasks to support open-source development without corporate backing. This structure emphasizes volunteer contributions and open-source collaboration, with no formal membership requirements or centralized corporate funding streams. Administrative oversight is provided by a team of maintainers drawn from various open-source projects, including contributors associated with , , and , who coordinate through dedicated channels to ensure interoperability across desktop environments. Decisions on infrastructure, policies, and project hosting are made collaboratively via the sitewranglers for service maintenance and GitLab issues for broader planning and discussions. The project's servers, excluding GitLab services, are hosted on a fleet of machines at , with additional support from for other needs. Freedesktop.org maintains affiliations with upstream open-source projects and distributions, facilitating integration of its hosted tools and specifications into broader ecosystems without enforcing compliance. It does not serve as an official standards body, instead relying on voluntary community adoption to promote . In this capacity, it contributes to POSIX-like standards by hosting the (FHS), which defines file and directory conventions for systems.

Hosting Services and Tools

freedesktop.org provides a suite of technical platforms and resources to facilitate development and collaboration among open-source contributors focused on desktop technologies. Central to these offerings is its instance, launched in 2018 as a modern replacement for legacy infrastructure and hosted on (us-east1) using , which supports , issue tracking, and / (CI/CD) pipelines. This instance hosts a wide array of projects, enabling streamlined workflows for , merge requests, and automated testing across diverse environments. Complementing GitLab are mailing lists hosted at lists.freedesktop.org, which serve as primary forums for technical discussions, announcements, and community coordination; for instance, the xorg list addresses X Window System-related topics. The organization's further supports documentation efforts and project coordination, offering collaborative spaces for specifications, guides, and contributor . Bug tracking has transitioned primarily to GitLab's integrated issue trackers, with earlier tools like Gitweb now archived and deprecated in favor of the more robust platform. Additional infrastructure includes support for software translations via integrated tools in hosted projects, autotooling for build configuration (such as conversions), and modularization practices that promote component-based development. For , freedesktop.org utilizes pipelines with dedicated runners hosted on Metal (EWR1, SJC1) and (), sponsored by Metal and the Foundation, to automate build monitoring and testing across multiple platforms and ensure project stability. Community resources, including news feeds aggregated through Planet freedesktop.org, keep participants informed of updates, events, and contributions from across the ecosystem. Recent enhancements have bolstered support for compositing and multimedia workflows, notably through improved integration with for video rendering and pipeline efficiency in Wayland environments, as seen in the framework's 1.26 release series. These developments, governed under the , enhance collaborative tools for emerging desktop standards.

Stated Aims and Principles

Core Objectives

freedesktop.org's primary goal is to host the development of focused on and shared technology for open-source graphical and desktop systems, particularly supporting free-software desktop environments on the (X11) and . This involves creating and maintaining shared base technologies, such as libraries and services, that enable consistent functionality across diverse desktop environments without the organization itself producing end-user desktops. The emphasis is on fostering seamless integration, allowing components to work uniformly in environments like , , and , thereby enhancing user experience through compatible building blocks. A key objective is to facilitate community collaboration on essential areas including graphics, input handling, and , encouraging contributions from developers worldwide via platforms like . This collaborative approach promotes the reuse of , drivers, and protocols, ensuring that advancements in one project benefit others without proprietary restrictions. By prioritizing open-source principles, freedesktop.org avoids direct development but supports the broader ecosystem, as stated in its mission: "We do not ourselves produce a , but we aim to help others to do so." The organization actively promotes the adoption of open standards to achieve consistent user experiences, notably through initiatives like the X Desktop Group (XDG), which originated as a focus on X11 but has evolved to support modern protocols like , developing specifications addressing low-level desktop interoperability issues such as file type identification, application launching, and data exchange between applications and desktops. These efforts aim to reduce fragmentation in Unix-like systems by providing reusable, standardized components that minimize duplication and enhance cross-environment compatibility. Over time, this has contributed to a more unified landscape for free-software desktops, originating from early motivations to consolidate scattered efforts in the open-source community.

Operational Guidelines

freedesktop.org operates as a community-driven initiative without a formal standards enforcement mechanism, where hosted specifications serve as proposals intended for voluntary adoption by developers and projects to enhance interoperability across open-source desktop environments. This model emphasizes collaboration among volunteers, with no centralized authority imposing compliance, allowing implementations to evolve based on practical needs and community consensus rather than mandatory certification. Contributions to freedesktop.org projects occur primarily through GitLab merge requests for code changes, discussions on project-specific mailing lists for technical decisions, and edits to the shared wiki for documentation updates, promoting a modular and upstream-friendly development approach that prioritizes integration with broader open-source ecosystems. Project hosting guidelines restrict acceptance to interoperability-focused technologies under open-source licenses compliant with the Debian Free Software Guidelines, such as MIT or GPL, explicitly prohibiting proprietary dependencies to maintain accessibility and freedom for all contributors. Maintenance practices involve bug reporting and feature requests via project-specific GitLab issue trackers, with releases managed periodically by maintainers on a per-project basis to ensure ongoing stability and relevance. Obsolete specifications may be deprecated or retracted as community needs evolve, preventing the perpetuation of outdated standards. Inclusivity principles are enforced through the Contributor Covenant , which encourages participation from diverse contributors regardless of background and provides resources for translations and accessibility improvements to broaden engagement across global communities. However, as of 2025, the enforcement of the has faced significant controversies, including criticisms of overreach, allegations of harassment by enforcement teams, and resulting community divisions and project migrations.

Hosted Software Projects

Graphics and Windowing Systems

freedesktop.org hosts several key open-source projects that form the backbone of graphics rendering and windowing systems in and environments, enabling efficient display management, and acceleration, and protocol interoperability for applications. These projects emphasize modularity, , and cross-platform compatibility, supporting everything from traditional X11-based desktops to modern architectures. The provides the reference implementation of the (X11) protocol, serving as the core display server for managing windows, input devices, and graphical output on systems. It features a modular architecture with device-specific drivers for graphics hardware and extensions such as RandR (Resize and Rotate), which allows dynamic management of screen resolutions, rotations, and multi-monitor configurations without restarting the server. Developed in collaboration with the freedesktop.org community, the supports a wide range of hardware through its extensible design, including integration with the (DRI) for accelerated rendering. Wayland represents a modern alternative to X11, offering a lightweight display server protocol designed to improve security, performance, and simplicity by delegating rendering responsibilities directly to clients rather than the server. Hosted on freedesktop.org, includes the core protocol specification and libraries like libwayland-client and libwayland-server, which facilitate communication between compositors and applications. Compositors such as , the reference implementation, leverage Wayland for efficient buffer management and direct scanning out to displays, reducing latency and overhead compared to X11's networked model. This protocol has gained adoption in major desktop environments like and , promoting a more integrated and hardware-accelerated windowing ecosystem. Mesa, the open-source 3D graphics library, implements specifications for , , , and related APIs, providing cross-platform drivers for GPU acceleration without relying on . Integrated with freedesktop.org's infrastructure, Mesa utilizes the DRI to enable direct rendering from user-space applications to graphics hardware, supporting features like , , and compute operations essential for 3D applications and games. Its drivers cover a broad array of hardware vendors, including , , and , ensuring open-source alternatives for accelerated graphics in desktop and embedded systems. Cairo serves as a 2D vector graphics library that abstracts rendering across multiple backends, including X11, PDF, , and image surfaces, to deliver high-quality, anti-aliased output for user interfaces and documents. Developed under the freedesktop.org umbrella, Cairo supports operations like path drawing, text rendering, and gradient fills, making it a foundational tool for toolkits such as and . Its design prioritizes device independence and subpixel accuracy, allowing consistent visual results across diverse output targets while leveraging underlying acceleration where available. Pixman underpins low-level pixel manipulation for projects like and the , offering optimized routines for image compositing, scaling, and trapezoid rasterization using SIMD instructions for performance. As a core library hosted on freedesktop.org, Pixman handles fundamental tasks such as alpha blending and bit-blitting, ensuring efficient pixel-level operations that scale with hardware capabilities. It provides the building blocks for higher-level graphics APIs, enabling fast software fallbacks when is unavailable. Glamor extends the with 2D acceleration via , allowing the use of GPU hardware for traditional X11 rendering operations like drawing primitives and compositing. Integrated into freedesktop.org's X.Org development, Glamor acts as a common driver layer that offloads software rendering paths to the GPU, improving performance on modern hardware without altering the X11 protocol. It supports chipsets from various vendors through Mesa's implementation, bridging legacy windowing with contemporary graphics acceleration.

System Services and Utilities

freedesktop.org hosts several key projects that provide essential system services and utilities for Linux and Unix-like environments, focusing on inter-process communication, service management, authorization, package handling, audio processing, and mobile broadband control. These tools emphasize modularity, cross-desktop compatibility, and integration via standards like D-Bus, enabling seamless operation in diverse desktop ecosystems such as GNOME and KDE. D-Bus serves as a message bus system designed for inter-process communication (IPC) and process lifecycle coordination, allowing applications to exchange messages and launch services on demand. It operates through a system-wide daemon for hardware and system events, alongside per-user session daemons, supporting one-to-one messaging for direct application interactions. The protocol includes specifications for method calls and signals, with a stable low-level library (libdbus) that requires minimal dependencies like an XML parser. D-Bus facilitates integrations across freedesktop.org projects, including brief graphics coordination via its API. It is portable across Linux, Unix, and Windows variants, with bindings for languages like Python, Qt, and GLib. systemd, formerly hosted on freedesktop.org, functions as a comprehensive system and service manager for operating systems, running as the first process ( 1) to initialize and supervise the system during boot. It replaces traditional init systems like SysVinit with features such as aggressive parallelization of service startups, on-demand activation via sockets and , and transactional dependency resolution for robust service control. The suite includes tools for logging through a dedicated daemon, resource management using control groups (), and support for legacy SysV and LSB scripts. systemd handles boot processes by parallelizing tasks like file system mounting and starting core services such as the and , while providing network configuration and time synchronization capabilities. Licensed under the GNU Lesser General Public License v2.1 or later, it forms a foundational building block for modern distributions; primary development has moved to since 2015. Polkit (formerly PolicyKit), formerly hosted on freedesktop.org, is an framework that enables unprivileged processes to request and perform privileged operations by mediating access through a system daemon. The polkitd daemon implements the core , processing authorization requests based on defined actions—specific operations described via in PolkitActionDescription files—and policies configured in dedicated files. It assigns administrative roles by evaluating identities (users, groups) and subjects (processes, sessions), allowing fine-grained control over privileges without requiring full root access. Polkit integrates with desktop environments to handle tasks like device mounting or system configuration securely. The framework, at version 0.126 as of January 2025, uses interfaces such as org.freedesktop.PolicyKit1.Authority for communication; development is now on . PackageKit, formerly hosted on freedesktop.org, provides a cross-distribution for software installation, updates, and management, simplifying package handling across variants without replacing native tools like apt or dnf. It operates via a D-Bus-activated daemon (packagekitd) that activates only when needed, minimizing resource use, and employs for secure, fine-grained authentication during operations such as installing or removing packages. The framework supports searching repositories, checking for updates, and resolving dependencies through a unified , enabling graphical tools like gnome-software and command-line utilities like pkcon. PackageKit ensures compatibility across architectures and distributions by wrapping backend-specific package managers, promoting consistent user experiences in desktop environments; active maintenance has been limited since around 2014 and is now on . PulseAudio acts as a for operating systems, proxying audio streams between applications and hardware while providing advanced mixing and routing capabilities. It supports software-based mixing of multiple audio sources into unified outputs, overcoming hardware limitations, and offers per-application control with flexible sample rate and format conversions. allows streaming audio to remote machines via protocols like RTP, facilitating playback and recording across devices. PulseAudio integrates deeply with desktop environments through a C library for embedding and auxiliary tools for management, serving as a core component in modern distributions and mobile platforms. ModemManager is a D-Bus-activated daemon dedicated to managing (WWAN) devices, including /// modems in forms like USB dongles, built-in hardware, or Bluetooth-paired phones. It handles device detection, configuration, and connection setup for voice and data services, abstracting low-level protocols through libraries such as libqmi and libmbim. ModemManager integrates with to provide seamless mobile connectivity in GNU/Linux distributions like and , as well as embedded systems like OpenWRT routers and devices. The stable 1.x series exposes a unified under /org/freedesktop/ModemManager1 for modem control and bearer management.

Input, Accessibility, and Other Tools

freedesktop.org hosts several projects that address handling, features, and utility tools essential for desktop environments on and systems. These initiatives focus on standardizing interactions with hardware and software to enhance usability and interoperability. libinput serves as a comprehensive input stack for processing events from devices such as mice, keyboards, touchpads, touchscreens, and graphics tablets. It abstracts low-level kernel events into a higher-level suitable for compositors and X.Org drivers, including support for gestures like tapping, scrolling, and pinching on touchpads. The library handles device detection, configuration, and event filtering to ensure consistent behavior across different hardware, reducing the need for custom input code in applications. libinput integrates with windowing systems by providing a unified event stream that compositors can consume directly. Complementing libinput at a lower level, libevdev provides a wrapper for evdev interfaces, simplifying the handling of input events from /dev/input devices. It offers type-safe functions for querying device capabilities, reading events, and modifying device states, such as enabling or disabling LEDs on keyboards. This library abstracts calls and manages event buffering, making it easier for applications to interact with raw input hardware without directly parsing kernel structures. For accessibility, at-spi2 (Assistive Technology Service Provider Interface version 2), formerly hosted on , implements a D-Bus-based that enables assistive technologies, such as screen readers, to access and interact with elements in applications. Toolkit widgets expose their structure and content through this interface, allowing tools like to query text, navigate components, and perform actions like clicking buttons. at-spi2 replaces the older CORBA-based AT-SPI, offering better performance and integration with modern desktop buses; it is now maintained under the project. Fontconfig is a designed for system-wide font configuration, selection, and caching to optimize rendering in graphical applications. It scans font directories, matches fonts based on user-specified criteria like family, style, and language, and generates pattern caches to avoid repeated computations during font lookups. Configuration occurs via XML files that define priorities and substitutions, ensuring consistent typography across environments like X11 and . Colord, formerly hosted on freedesktop.org, operates as a system daemon for , facilitating the installation, generation, and application of profiles for input and output devices such as monitors, printers, and scanners. It provides for querying device capabilities, calibrating hardware, and applying color transformations to maintain accurate color reproduction. By centralizing profile handling, colord enables applications to access calibrated color spaces without individual device-specific implementations; development is now on . Avahi implements the Zeroconf networking protocols mDNS and DNS-SD for automatic on networks, allowing devices to advertise and locate services like printing or without manual . Originally hosted on freedesktop.org, it has become increasingly independent while retaining with environments for seamless peer-to-peer connectivity.

Interoperability Specifications

Desktop Integration Standards

The Desktop Integration Standards developed under freedesktop.org provide essential protocols for seamless application launching, menu organization, and startup behaviors across environments, promoting consistency in user interactions. These specifications, primarily building on the Desktop Entry format, enable applications to integrate uniformly with environments like , , and others by defining how programs are described, discovered, and initiated. By standardizing metadata and behaviors, they reduce fragmentation and enhance interoperability without dictating specific UI implementations. The Desktop Entry Specification outlines the format for .desktop files, which serve as the foundational unit for describing applications. These files, typically located in system-wide or user-specific , contain key-value pairs in a simple INI-like structure to specify such as the application name, generic name, (), icon path, and categories for placement. Launch commands are defined via the Exec key, which supports variable expansion for arguments like file paths (%f for a single ), ensuring flexible invocation from menus or file managers. Value types include strings, booleans, and lists, with support for localization through language-specific encodings. The current , 1.5, emphasizes conformance for broad adoption, with recognized keys like Type (, , or ) dictating file usage. Complementing this, the Menu Specification establishes a hierarchical structure for organizing applications into user-visible menus, often rendered as cascading lists in panels. It extends the Desktop Entry format with additional keys like OnlyShowIn and NotShowIn to control visibility across environments, and defines .menu files in XML format for layout configuration. These files specify elements with identifiers (e.g., "Applications-Internet") and entries for icons and titles, while and tags allow dynamic inclusion based on categories from .desktop files. The merging process combines multiple .menu files—prioritizing user overrides over system defaults—to generate the final menu tree, supporting legacy compatibility through optional layout hints. Version 1.1 of this specification facilitates admin-managed and third-party menu extensions without disrupting core layouts. For automatic startup, the Autostart Specification leverages .desktop files to define applications that launch upon user login or desktop session initialization. It designates specific directories, such as ~/.config/autostart/ for user preferences and /etc/xdg/autostart/ for system-wide entries, following the XDG Base Directory conventions for location precedence. Files here inherit standard Desktop Entry keys like Exec and (to disable startup), with extensions for conditions: OnlyShowIn/NotShowIn limits to certain environments (e.g., ), and TryExec verifies executable availability before launch. This allows users to override system autostarts by placing a matching .desktop file in their directory with =true, ensuring personalized control. Released in version 0.5, it integrates with session managers to execute entries after login but before full desktop rendering. To provide visual feedback during launches, the Startup Notification Protocol enables applications to communicate progress to the via event messages. Launchers set the DESKTOP_STARTUP_ID and send X11 messages (using _NET_STARTUP_INFO atoms on the root window) or equivalent signals, targeting specific screens in setups. Key messages include NewStartupSequence (initiating with ID, name, , and screen details), ChangeState (updating progress subsets like description or icon), and Complete (signaling success or failure, optionally with a reason). The launchee application detects and removes the sequence upon mapping its window, or the launcher can mark it silent to suppress feedback. This protocol, version 0.2, improves user experience by displaying progress indicators, such as bouncing icons, across compliant environments. The Recent Files Specification standardizes tracking and displaying recently used files to enhance application . Originally defining an XML-based in ~/.recently-used.xbel (using XBEL format) for URIs, timestamps, and types, it allowed applications to append entries and notify changes via or polling. However, this has been superseded by the Desktop Bookmark Specification, which unifies recent files with user in the same $XDG_DATA_HOME/recently-used.xbel file. Under the updated approach, recent files are stored as bookmark elements with mandatory types, optional private flags, and per-application usage counts (via subelements tracking exec commands and modification times). Applications update the list on file access, enabling cross-app menus to show shared history while respecting privacy through configurable limits (e.g., 50 items). This evolution, building on version 0.2 of the original, ensures and integrates with handling for consistent display.

File and System Management Standards

The File and System Management Standards section of freedesktop.org encompasses specifications that standardize directory structures, file type identification, deletion mechanisms, and application associations in free desktop environments, promoting consistency across distributions and desktop systems. These standards build on principles while addressing modern desktop needs, such as user-specific data separation and type handling, to enhance without relying on conventions. The XDG Base Directory Specification defines environment variables for organizing user-specific files, separating them from system-wide data to avoid clutter in the home directory and improve application portability. It establishes a single base directory relative to which user-specific data files are stored, along with preference-ordered sets for searching additional data and configuration files, ensuring absolute paths for all locations to prevent relative path ambiguities. Key variables include $XDG_DATA_HOME (default: $HOME/.local/share) for non-essential data like icons and fonts, $XDG_CONFIG_HOME (default: $HOME/.config) for configuration files, $XDG_STATE_HOME (default: $HOME/.local/state) for non-essential state data such as command history, $XDG_CACHE_HOME (default: $HOME/.cache) for cached data that can be regenerated, and $XDG_RUNTIME_DIR for runtime files like sockets, which must be user-owned with 0700 permissions and cleared on logout. System directories are searched via $XDG_DATA_DIRS (default: /usr/local/share/:/usr/share/) and $XDG_CONFIG_DIRS (default: /etc/xdg), while executables may use $HOME/.local/bin if added to $PATH. This specification, version 0.8 from May 8, 2021, was authored by Waldo Bastian, Allison Karlitskaya, Lennart Poettering, and Johannes Löthberg. The Shared MIME-info Database Specification provides a unified format for storing MIME type information, enabling applications to identify file types based on names, extensions, or contents and associate them with descriptions and compatible applications. It uses an extensible XML-based database that applications install in standard locations per the XDG Base Directory Specification, such as $XDG_DATA_HOME/mime/packages/ for user overrides and system-wide paths like /usr/share/mime/packages/, compiled into binary .mime files for efficient querying via tools like update-mime-database. The database supports magic rules for content-based detection, glob patterns for filename matching, and textual comments in multiple languages, but excludes user-specific preferences like default applications. This version 0.21, last updated October 2, 2018, was primarily authored by Thomas Leonard to unify prior systems from , , and ROX. The Specification outlines a for moving deleted s to a virtual trash can instead of permanent removal, using per-filesystem .Trash directories to handle volume-specific storage and prevent cross-device issues. For the volume, files are moved to $XDG_DATA_HOME/[Trash](/page/Trash)/files/ with corresponding in $XDG_DATA_HOME/[Trash](/page/Trash)/info/, where each entry is a .trashinfo containing the original , deletion in format (e.g., DeletionDate=2025-11-10T12:00:00.000000Z), and permissions. On other volumes, a .Trash-$[UID](/page/UID) directory (e.g., .Trash-1000) is created at the if the filesystem supports sticky bits; otherwise, implementation must ensure security. Files are renamed if duplicates exist by appending numbers (e.g., file (1)), and the specification requires checking for symbolic links and permissions to avoid unauthorized access. Undeletion restores files to their original paths if possible, or prompts for alternatives. Version 1.0, released January 2, 2014, was authored by Mikhail Ramendik and David Faure. The (FHS) defines a POSIX-compliant for systems, specifying purposes for top-level directories to ensure consistent file placement across distributions and applications. It organizes the filesystem into shareable, read-only (/usr), variable (/var), and essential root (/bin, /sbin) components, with /bin holding user command binaries like ls and cp that must be available in , and /usr containing most user utilities (/usr/bin), libraries (/usr/lib), and shareable data (/usr/share). The standard supports interoperability for system administration, tools, and scripts, with guidelines for optional directories like /home for user directories. Originally from the FSSTND in 1994, version 3.0 was published November 10, 2025, and hosted on freedesktop.org by the and FHS Project. The Applications Specification governs the association of MIME types with default applications, using mimeapps.list files to specify user and system preferences for opening files. Located in XDG-compliant paths like $XDG_CONFIG_HOME/mimeapps.list for user overrides, $XDG_CONFIG_DIRS/mimeapps.list for sysadmin settings, and $XDG_DATA_DIRS/applications/mimeapps.list for distribution defaults, the file features sections such as [Default Applications] for preferred desktop entry IDs (e.g., text/plain=gedit.desktop;) and [Added Associations]/[Removed Associations] for modifying MIME-to-application mappings. It integrates with the Desktop Entry Specification by referencing .desktop files in /usr/share/applications/ or $XDG_DATA_HOME/applications/, preserving preference order and supporting desktop-specific variants like kde-mimeapps.list. Version 1.0.1, from September 7, 2014, was authored by David Faure and Ryan Lortie.

User Interface and Interaction Standards

The Icon Theme Specification defines a format for organizing scalable icon sets across desktop environments, enabling consistent visual representation of applications and actions. It structures icons into themes, which are named collections of icon files stored in directories such as scalable/apps for vector-based SVGs or size-specific folders like 48x48/apps for raster images in or XPM formats. Themes are described by an index.theme file in an INI-style format, specifying metadata like theme name, directories, and size ranges (e.g., MinSize=1, MaxSize=256), while supporting scalable icons through a 1000x1000 coordinate space in SVGs. Theme inheritance allows one theme to extend another via the Inherits key in index.theme (e.g., Inherits=hicolor), enabling recursive fallback where missing icons are sought in parent themes before defaulting to the "hicolor" theme or unthemed icons in base directories like /usr/share/pixmaps. The icon lookup mechanism proceeds in phases: first matching the requested size in the current theme, then any available size, and finally unthemed fallbacks, ensuring robust resolution across varying system configurations. This integrates with base directories for icon storage as defined in the , providing a prioritized search path starting from user-specific locations. The Notification Specification outlines a D-Bus-based protocol for delivering passive pop-up notifications from applications to users, managed by a central notification daemon to avoid overlaps and ensure asynchronous display. Applications invoke the Notify method on the org.freedesktop.Notifications interface, supplying parameters such as application name, icon, summary, body text, actions (e.g., clickable buttons), hints (key-value pairs for customization), and timeout; the daemon returns a unique ID for subsequent updates or closures via CloseNotification. Notifications support categories like email or chat for filtering and urgency levels—Low (0) for minor updates, Normal (1) for standard alerts, and Critical (2) for urgent interruptions that may persist until dismissed. Actions are presented as buttons or icons (if the action-icons hint is set), allowing user interactions to trigger application-specific responses. Updated August 18, 2024. The System Tray Protocol standardizes the embedding of small status icons into panels or docks on X11 screens, providing a mechanism for applications to display transient indicators like network status or volume controls without intrusive dialogs. Tray icons, owned by applications, dock into a system tray window via XEmbed embedding, where the tray acts as the embedder reparenting the icon's window and handling opcodes for events like showing or hiding; location is determined by selecting the _NET_SYSTEM_TRAY_S atom on the root window. Hints such as _NET_SYSTEM_TRAY_ORIENTATION guide icon orientation (horizontal or vertical), and balloon messages offer tooltip-like notifications, configurable for user preferences. As a extension, the Status Notifier Item protocol enhances this via , defining interfaces like org.kde.StatusNotifierItem for richer items (e.g., or media controls) with properties for icons, titles, and attention requests, registered on the session bus for enumeration by a watcher service. This protocol, version 0.3, improves user experience by displaying progress indicators, such as bouncing icons, across compliant environments. The XEmbed Specification provides a lightweight protocol for embedding child windows, such as dialogs or applets, into parent applications on X11, leveraging client messages and window reparenting for cross-toolkit compatibility. An embedder (parent) registers the site window and forwards events like key presses to the client (child), which responds with XEmbed messages (e.g., _XEMBED_WINDOW_ACTIVATE for focus requests) sent as ClientMessage events with the _XEMBED type. The lifecycle includes embedding via reparenting the client's window into the embedder's, followed by synchronization messages to handle visibility, focus, and modality; techniques ensure proper event routing, such as modifying the window field in forwarded events. This enables seamless integration, as implemented in toolkits like GTK+ and Qt, without requiring proprietary extensions. The Clipboard Specification establishes a for clipboard operations in X11, ensuring interoperability for copy-paste between GTK+ and applications by handling multiple data targets and selection types like PRIMARY, SECONDARY, and . Applications offer data via selection ownership, supporting incremental transfers for large items and multiple formats (e.g., text/plain, image/png) through targets like TIMESTAMP or types; when pasting, clients request conversion to preferred targets, with fallbacks to text if unavailable. This avoids toolkit-specific behaviors, such as Qt's use of XA_CUT_BUFFER0, by standardizing on ICCCM-compliant mechanisms extended for multi-target support. The Window Manager Specification extends the ICCCM with standardized hints for modern desktop behaviors, including focus stealing prevention to maintain user control over active windows. Key properties like _NET_WM_STATE define window states (e.g., maximized, modal), while _NET_ACTIVE_WINDOW requests activation with a timestamp to detect and prevent unauthorized focus changes from background apps. Protocols such as _NET_WM_PING allow pagers and taskbars to query window responsiveness, and root window properties like _NET_SUPPORTED list supported atoms for negotiation. The focus model prioritizes user-initiated activations, using hints like _NET_WM_USER_TIME to compare timestamps and block steals, with implementations in environments like GNOME and KDE ensuring consistent behavior across X11 desktops.

References

  1. [1]
    Freedesktop.org
    May 2, 2025 · freedesktop.org hosts the development of free and open source software, focused on interoperability and shared technology for open-source graphical and desktop ...Software · Specifications · Wiki/www · Mailing Lists
  2. [2]
    MissionStatement - Freedesktop.org
    May 7, 2021 · freedesktop.org was originally formed in March 2000 to encourage cooperation among open source desktops for the X Window System by developing interoperability ...
  3. [3]
    www
    ### Summary of freedesktop.org
  4. [4]
    Software - Freedesktop.org
    Oct 31, 2021 · xdg-utils is a set of command line utilities to simplify integration with a Free Desktop. It has simple functions for creating menus, opening ...Missing: objectives | Show results with:objectives
  5. [5]
    Freedesktop GitLab - Freedesktop.org
    No information is available for this page. · Learn whyMissing: 2018 | Show results with:2018
  6. [6]
    Interoperability specifications - Freedesktop.org
    May 7, 2021 · Below are some of the specifications we have produced, many under the banner of 'XDG', which stands for the Cross-Desktop Group. Some of these ...Missing: early 2000-2002
  7. [7]
    Freedesktop.org Specifications
    Freedesktop.org is a project to work on interoperability and shared base technology for free-software desktop environments for the X Window System (X11) and ...
  8. [8]
    d/freedesktop - LWN.net
    ... XDG is more an attempt to formalize this existing progress than it is a new project. www.freedesktop.org is a place where we can store the results of our ...Missing: history founding
  9. [9]
    The Big freedesktop.org Interview - OSnews
    Nov 24, 2003 · In the article, we discuss about general freedesktop.org goals, status and issues, the role of KDE/Qt in the road to interoperability with ...
  10. [10]
    XDND - Freedesktop.org
    XDND is a drag-and-drop protocol for the X Window System, aiming to provide a single standard for data exchange between programs.Missing: UTF- | Show results with:UTF-
  11. [11]
    Desktop Entry Specification
    Apr 27, 2020 · Desktop entry files are encoded in UTF-8. A file is interpreted as a series of lines that are separated by linefeed characters. Case is ...Missing: drag- 2000-2002
  12. [12]
    Portland 1.0 Released - OSnews
    Oct 11, 2006 · The Open Source Development Labs and Freedesktop.org announced the 1.0 release of the Portland common desktop interfaces today, ...
  13. [13]
    Index of /releases/dbus - Freedesktop.org
    Index of /releases/dbus ; dbus-0.91.tar.gz, 2006-07-24 17:50, 1.3M.
  14. [14]
    Welcome to GitLab, freedesktop.org!
    Aug 20, 2018 · Freedesktop.org, the home of open source desktop technology development, has migrated to GitLab to improve their workflow and modernize ...
  15. [15]
    Resolution 2019-05-02.jrk.1: Freedesktop.org merger into X.org
    May 2, 2019 · SPI currently recognizes Freedesktop.org and X.org as SPI associated projects. Freedesktop.org and X.org decided to merge, with X.org as the ...Missing: joins Foundation
  16. [16]
  17. [17]
    Release News - Wayland
    May 22, 2025. The RC1 for Wayland 1.24 (version 1.23.91) has been released. Note, starting from Wayland 1.24, alphas and betas will no ...
  18. [18]
    GStreamer Conference 2025
    We're thrilled to announce that the 13th GStreamer Conference is now confirmed to take place on Thursday and Friday 23-24 October 2025 in London, UK.
  19. [19]
    X.Org To Join Forces With FreeDesktop.org While Foundation ...
    Apr 11, 2019 · X.Org To Join Forces With FreeDesktop.org While Foundation Elections Hit A Snag. Written by Michael Larabel in X.Org on 11 April 2019 at 08:02 ...Missing: Interest | Show results with:Interest
  20. [20]
    Software in the Public Interest (SPI)
    Feb 27, 2025 · SPI is a non-profit that acts as a fiscal sponsor for open source projects, handling non-technical tasks, and is a 501(c)(3) non-profit.SPI associated projects · Contact · Donations · Corporate
  21. [21]
    freedesktop.org infrastructure
    Sep 5, 2021 · All the other services are run on a small fleet of machines hosted at Portland State University. These machines all run Debian. They are all ...
  22. [22]
    sitewranglers Info Page - Mailing Lists - Freedesktop.org
    Subscribe to sitewranglers by filling out the following form. Use of all freedesktop.org lists is subject to our Code of Conduct.Missing: governance | Show results with:governance
  23. [23]
    Filesystem Hierarchy Standard
    ### Summary of Filesystem Hierarchy Standard (FHS)
  24. [24]
    FreeDesktop.org Migrating To GitLab - Phoronix
    May 7, 2018 · The GitLab instance is also run using the Google Compute Engine as a replacement to the FreeDesktop.org's aging server infrastructure. Besides ...Missing: launched | Show results with:launched
  25. [25]
    Introducing freedesktop.org GitLab - Daniel Stone
    Jul 29, 2018 · Founded by Havoc Pennington in 2000, freedesktop.org is now old enough to vote. From the initial development of the cross-desktop XDG specs, to ...
  26. [26]
    lists.freedesktop.org Mailing Lists
    This page lists public mailing lists on lists.freedesktop.org. Click a list name for info or to subscribe. Contact mailman@lists.freedesktop.org for help.Missing: wiki establishment 2002
  27. [27]
    xorg - Freedesktop.org
    Apr 30, 2025 · Mailing Lists. On XorgMailingLists you can find a list of X-related mailing lists hosted on lists.freedesktop.org. More mailing lists on X ...
  28. [28]
    GettingInvolved - Freedesktop.org
    May 26, 2021 · Mailing lists. You can browse all our mailing lists. Most projects have their own mailing list, or specifications are mostly discussed on the ...
  29. [29]
    Bugzilla Main Page - Freedesktop.org
    Most projects formerly using this service are now using the freedesktop.org GitLab for bug tracking. Please go there and find the project you are interested in.Missing: Gitweb | Show results with:Gitweb
  30. [30]
    freedesktop.org git repository browser
    wiki/sitewranglers · Wiki for Freedesktop.org sitewrangling · ikiwiki, 14 months, summarylogtree · wiki/swfdec · Wiki for the swfdec project · ikiwiki, 12 years ...Missing: governance | Show results with:governance
  31. [31]
    FreedesktopProjects - Freedesktop.org
    May 7, 2021 · The sitewranglers at freedesktop.org mailing list is used for discussions. Project, Type, Description, Diff / Size, Comp. Tinderbox, web ...Missing: governance | Show results with:governance
  32. [32]
    Modularization Proposal - X.Org
    Sep 14, 2013 · Autotools (http://sources.redhat.com/autobook/) will be used to build the modular sources individually, and with the help of jhbuild and other ...Missing: translations | Show results with:translations
  33. [33]
    TinderboxWiki
    May 18, 2013 · Freedesktop.org tinderboxes. New tinderboxes are easy to establish via the admin interface and tinderbox.anholt.net is the current tinderbox ...Missing: continuous | Show results with:continuous
  34. [34]
    planet.freedesktop.org
    planet.freedesktop.org is powered by Venus, and the freedesktop.org community. RSS 1.0 Feed · RSS 2.0 Feed · FOAF Subscriptions · OPML Subscriptions · Hacker.
  35. [35]
    GStreamer 1.26 release notes - Freedesktop.org
    Mar 11, 2025 · The GStreamer team is proud to announce a new major feature release in the stable 1.x API series of your favourite cross-platform multimedia framework!
  36. [36]
    GStreamer: news - Freedesktop.org
    waylandsink: Parse and set the HDR10 metadata and other color management improvements ... GStreamer Conference 2025 to take place 23-24 October 2025 in London, UK.<|separator|>
  37. [37]
    X.Org Foundation
    ### Summary of X.Org Foundation
  38. [38]
  39. [39]
    NewProject - Freedesktop.org
    Aug 3, 2021 · We provide hosting and infrastructure support as well as community oversight. In return for the freedom and support we provide, we ask that you ...Missing: news feeds
  40. [40]
  41. [41]
    Contributor Covenant Code of Conduct - Freedesktop.org
    Sep 8, 2025 · This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.Missing: governance structure affiliations
  42. [42]
    X.Org
    May 4, 2023 · The X.Org project provides an open source implementation of the X Window System. The development work is being done in conjunction with the freedesktop.org ...Download · X.Org Foundation · Documentation · Releases/7.7
  43. [43]
    Xserver - Freedesktop.org
    May 7, 2021 · X Server. The X server is now developed as a module of the X.Org system. Much more documentation can be found at http://www.x.org/ ...
  44. [44]
    Wayland
    Wayland is a replacement for the X11 window system protocol and architecture with the aim to be easier to develop, extend, and maintain.Wayland architecture · Documentation · Releases · Chapter 1. Introduction
  45. [45]
    Home — The Mesa 3D Graphics Library
    The Mesa 3D Graphics Library. Open source implementations of OpenGL, OpenGL ES, Vulkan, OpenCL, and more!
  46. [46]
    cairographics.org
    Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System.
  47. [47]
    Pixman
    Pixman is a low-level software library for pixel manipulation, providing features such as image compositing and trapezoid rasterization.
  48. [48]
    Glamor - Freedesktop.org
    May 7, 2021 · The glamor module is an open-source 2D graphics common driver for the X Window System as implemented by X.org. It supports a variety of graphics chipsets.
  49. [49]
    dbus - Freedesktop.org
    Feb 27, 2025 · D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process ...Tutorial · API documented · D-Bus FAQ · Python bindings for D-Bus
  50. [50]
    D-Bus Specification - Freedesktop.org
    D-Bus has a type system, in which values of various types can be serialized into a sequence of bytes referred to as the wire format in a standard way.
  51. [51]
    systemd System and Service Manager - Freedesktop.org
    Feb 22, 2024 · systemd is a suite of basic building blocks for a Linux system. It provides a system and service manager that runs as PID 1 and starts the rest of the system.The D-Bus API of systemd/PID 1 · Systemd-boot · Multi-Seat on Linux · Logind
  52. [52]
    systemd - Freedesktop.org
    systemd is a system and service manager for Linux operating systems. When run as first process on boot (as PID 1), it acts as init system that brings up and ...Missing: overview | Show results with:overview
  53. [53]
  54. [54]
    polkitd: polkit Reference Manual - Freedesktop.org
    polkitd provides the org.freedesktop.PolicyKit1 D-Bus service on the system message bus. Users or administrators should never need to start this daemon.<|separator|>
  55. [55]
    Part I. polkit Overview: polkit Reference Manual - Freedesktop.org
    polkit Overview. Table of Contents. Introduction · Writing polkit applications · Writing polkit Authentication Agents. Generated by GTK-Doc V1.28.
  56. [56]
    What is PackageKit? - Freedesktop.org
    PackageKit is a system designed to make installing and updating software easier, using a D-Bus abstraction layer for secure package management.
  57. [57]
    PackageKit - Main Page - Freedesktop.org
    What is PackageKit? How do I use PackageKit? Where can I download it? Typical User Profiles · Who uses PackageKit? Reporting bugs · How can. I help?What is PackageKit? · How do I use PackageKit? · Who uses PackageKit?
  58. [58]
    PulseAudio - Freedesktop.org
    PulseAudio is a sound server system for POSIX OSes, meaning that it is a proxy for your sound applications. It is an integral part of all relevant modern Linux ...Download · Documentation · PulseAudio/Apps/FlashPlayer9 · FAQ
  59. [59]
    About – PulseAudio
    ### Summary of PulseAudio Features
  60. [60]
    ModemManager
    **Summary of ModemManager:**
  61. [61]
    ModemManager - Freedesktop.org
    May 7, 2021 · What is ModemManager? ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections.
  62. [62]
    What is libinput? - Wayland
    libinput is an input stack for processes that need to provide events from commonly used input devices. That includes mice, keyboards, touchpads, touchscreens ...
  63. [63]
    libinput - Freedesktop.org
    Apr 20, 2022 · WARNING: Future releses will not be listed here. As of 1.20.0 libinput now uses GitLab releases and all future releases will be available there.
  64. [64]
    libinput 1.29.901 documentation - Wayland
    libinput is a library that provides a full input stack for display servers and other applications that need to handle input devices provided by the kernel.What is libinput? · Libinput Features · Contributing to libinput · Libinput test suite
  65. [65]
    libevdev - Freedesktop.org
    Feb 28, 2024 · libevdev is a wrapper library for evdev devices. it moves the common tasks when dealing with evdev devices into a library and provides a library interface to ...
  66. [66]
    libevdev - Freedesktop.org
    libevdev is a library for handling evdev kernel devices. It abstracts the evdev ioctls through type-safe interfaces and provides functions to change the ...
  67. [67]
    AT-SPI2 - Freedesktop.org
    Jan 12, 2023 · At-Spi2 is a protocol over DBus, toolkit widgets use it to provide their content to screen readers such as Orca.
  68. [68]
    fontconfig - Freedesktop.org
    Jul 3, 2025 · Fontconfig is a library for configuring and customizing font access. About Fontconfig. Fontconfig can: discover new fonts when installed ...About Fontconfig · Fontconfig To Do List · Fonts-conf · Wiki for www.freedesktop.org
  69. [69]
    fonts-conf - Freedesktop.org
    Fontconfig is a library designed to provide system-wide font configuration, customization and application access. Functional Overview. Fontconfig contains two ...
  70. [70]
    What is colord? - Freedesktop.org
    colord is a system service that makes it easy to manage, install and generate color profiles to accurately color manage input and output devices.
  71. [71]
    colord - Makes color managed hardware work - Freedesktop.org
    What is colord? How do I use colord? Where can I download it? Screenshots · Typical User Profiles · How it works · Reporting bugs · Frequently asked questions ...
  72. [72]
    avahi - mDNS/DNS-SD
    Avahi is a system which facilitates service discovery on a local network via the mDNS/DNS-SD protocol suite. This enables you to plug your laptop or computer ...
  73. [73]
  74. [74]
    Recognized desktop entry keys - Freedesktop.org Specifications
    Version of the Desktop Entry Specification that the desktop entry conforms with. Entries that confirm with this version of the specification should use 1.5 ...
  75. [75]
  76. [76]
    Startup notification protocol - Freedesktop.org Specifications
    Feb 25, 2010 · Startup notification protocol # ... This document specifies a mechanism allowing a desktop environment to track application startup, to provide ...
  77. [77]
    recent-file-spec - Freedesktop.org
    May 7, 2021 · This specification aims to do the following things: Provide a standard mechanism for storing a list of recently used files (really, URIs) ...
  78. [78]
    desktop-bookmark-spec - Freedesktop.org
    May 7, 2021 · Replace the Recent Files Storage Specification, providing a single specification for both bookmarks and recent files; Applications implementing ...
  79. [79]
    XDG Base Directory Specification
    May 8, 2021 · The XDG Base Directory Specification is based on the following concepts: There is a single base directory relative to which user-specific data ...
  80. [80]
    Shared MIME-info Database - Freedesktop.org Specifications
    Oct 2, 2018 · 1.1 Version #. This is version 0.21 of the Shared MIME-info Database specification, last updated 2 October 2018.
  81. [81]
    Trash Specification v1.0
    Trash Specification v1.0¶. Release: 1.0. Date: 2014-01-02. Authors: Mikhail Ramendik (mr@ramendik.ru). David Faure (faure@kde.org).
  82. [82]
    Association between MIME types and applications
    Sep 7, 2014 · The freedesktop.org Desktop Entry specification allows applications to announce which MIME types they support.
  83. [83]
    Icon Theme Specification
    Jul 2, 2013 · An icon theme is a named set of icons. It is used to map from an iconname and size to a file. Themes may inherit from other themes as a way to ...Directory Layout · File Formats · Icon Lookup · Installing Application Icons
  84. [84]
  85. [85]
  86. [86]
    StatusNotifierItem - Freedesktop.org
    May 7, 2021 · This specification defines the management of visual items, usually icons used for reporting the status of an application to the user.
  87. [87]
  88. [88]
    clipboards-spec - Freedesktop.org
    Clipboards. This is not a formal specification, but explains our consensus on how the X clipboard works. Qt and GTK+ both follow this ...