FreeBSD Desktop: HAL
В качестве оконной системы я использую XFCE4. Xorg и приложения, которые при установке имели опцию включения поддержки HAL, собраны с его поддержкой.
Настройка устройств ввода
После первоначальной установки захотелось узнать, какие же "удобства" предоставляет HAL по сравнению с его отсутствием. И первое место, где я с ним столкнулся, был конфигурационный файл xorg.conf. Если у вас проблемы с опознованием мыши, тачпада или клавиатуры, значит вам необходимо настроить HAL. Либо сказать Xorg'у, чтобы он не обращал внимания на информацию, получаемую от HAL и использовал настройки из конфигурационного файла (для подробностей воспользуйтесь поиском по словам: xorg AllowEmptyInput).
Сначала я отключил настройку устройств ввода через HAL и сконфигурировал по-старинке. Но потом решил почитать документацию и настроить через HAL. Вот что у меня получилось. Выдержка из xorg.conf:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
# InputDevice "Mouse0" "CorePointer"
# InputDevice "Keyboard0" "CoreKeyboard"
# Option "AllowEmptyInput" "false"
Option "OffTime" "5"
Option "StandbyTime" "3"
EndSection
#Section "InputDevice"
# Identifier "Keyboard0"
# Driver "kbd"
# Option "AutoRepeat" "500 30"
# Option "XkbRules" "xorg"
# Option "XkbLayout" "us,ru"
# Option "XkbVariant" "winkeys"
# Option "XkbOptions" "grp:alt_shift_toggle"
#EndSection
#
#Section "InputDevice"
# Identifier "Mouse0"
# Driver "mouse"
# Option "Protocol" "auto"
# Option "Device" "/dev/ums0"
# Option "ZAxisMapping" "4 5 6 7"
#EndSection
Тут я закомментировал настройки клавиатуры и мыши. А вот этот файлик я добавил в каталог /usr/local/etc/hal/fdi/policy под именем 10-x11-input.fdi:
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_options.AutoRepeat" type="string">500 30</merge>
<merge key="input.x11_options.XkbRules" type="string">xorg</merge>
<merge key="input.x11_options.XkbVariant" type="string">winkeys</merge>
<merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp,grp:alt_shift_toggle</merge>
<merge key="input.x11_options.XkbLayout" type="string">us,ru</merge>
</match>
<match key="info.capabilities" contains="input.mouse">
<merge key="input.x11_options.ZSxisMapping" type="string">4 5 6 7</merge>
</match>
</device>
</deviceinfo>
Как можно заметить, эти настройки соответствуют тем, что закомментированы в xorg.conf (кстати говоря, полный список настроек для той же клавиатуры можно посмотреть тут: /usr/local/share/X11/xkb/rules/base.lst). Какой же смысл тогда переносить из одного файла в другой? Смысл в том, что HAL будет применять эти настройки ко всем подобным устройствам, подключаемым к системе. Т.е. если я подключу ещё одну мышь или клавиатуру, то настройки автоматически применятся к ним. "Подобность" же устройств определяется благодаря выделенным строчкам. Думаю, сейчас самое время запустить команду lshal и посмотреть на её вывод, тогда будет более понятно. Команда отображает устройства поддерживаемые HAL'ом вместе с их свойствами.
Настройка PolicyKit
Через PolicyKit возможна настройка различных действий, для которых необходимы права суперпользователя. Например перезагрузка, монтирование сменных устройств. Я выполнил настройку через /usr/local/etc/PolicyKit/PolicyKit.conf:
<config version="0.1">
<match user="root">
<return result="yes"/>
</match>
<match action="org.freedesktop.hal.power-management.reboot">
<return result="yes"/>
</match>
<match action="org.freedesktop.hal.power-management.shutdown">
<return result="yes"/>
</match>
<match user="butcher">
<match action="org.freedesktop.hal.storage.mount-removable">
<return result="yes"/>
</match>
<match action="org.freedesktop.hal.storage.mount-fixed">
<return result="yes"/>
</match>
<match action="org.freedesktop.hal.storage.eject">
<return result="yes"/>
</match>
<match action="org.freedesktop.hal.storage.unmount-others">
<return result="yes"/>
</match>
</match>
<define_admin_auth group="wheel"/>
</config>
Здесь, для примера, монтирование и отключение устройств разрешено только для пользователя butcher. Теперь при включении флэшки в компьютер, либо после закрытия лотка с компакт диском в XFCE автоматически появляется соответсвующий ярлычок на рабочем столе и в менеджере файлов. При клике на этот значок происходит автоматическое монтирование. Отключение же производится через контекстное меню на тех же ярлыках.