One of the features being worked on for X Server 1.8
is the removal of HAL support
. The FreeDesktop.org Hardware Abstraction Layer project is nice in that is multi-platform, but the HAL project has largely been abandoned and is being replaced by UDisks
and similar projects.
HAL is currently being used by the X Server for input device detection with hot-plugging support, mapping, and device option handling, but all of that is in the process of being gutted. Instead the X Server will revert to using platform-specific libraries and code for handling these responsibilities. To replace the device option handling that was previously done through HAL FDI files, the X Server is picking up support for reading configuration files from a directory rather than just the conventional /etc/X11/xorg.conf
Being worked on right now (with the patches already having gone through multiple iterations) is support for storing .conf
files within /etc/X11/xorg.conf.d
. The X Server will continue to support reading options from the traditional xorg.conf
and these options will take precedent over any values set within xorg.conf.d
, where the other options can be stored. Within the xorg.conf.d
directory could be a file for your mouse, a file for your input tablet, joystick, and any other devices. If there is no xorg.conf
or any configuration files within this new directory, the X Server will fall-back to its usual auto-detection routines.
The latest version of the xorg.conf.d patch can be found on xorg-devel
, but it should end up being merged into the X Server shortly.
HAL FDIs support matching a configuration file to a specific device that's installed or to not load the configuration at all if the device isn't found. This works by matching the FDI file to either the manufacturer/product ID, device path, or a string. Through other patches, the xorg.conf.d
files will gain similar support. Dan Nicholson (who also wrote the xorg.conf.d
support) has submitted patches that introduce InputAttributes and InputClass configuration options.
InputAttributes stores the product/vendor name, device path, and also some device attributes -- such as whether the device has a pointer and/or input keys. The InputClass support then exposes this to the X configuration options so that configuration options can be set for specific vendors/products, a path-name pattern, or specific types of devices (keyboard, pointer, joystick, tablet, touch-pad, or touch-screen). This then allows X.Org input drivers to install their own configuration file within /etc/X11/xorg.conf.d
, but these options will only be applied by the X Server if the actual device is present.
The InputAttributes and InputClass patches can be found here