FreeBSD Desktop: HAL

Материал из OpenWiki
Перейти к: навигация, поиск

В качестве оконной системы я использую 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 автоматически появляется соответсвующий ярлычок на рабочем столе и в менеджере файлов. При клике на этот значок происходит автоматическое монтирование. Отключение же производится через контекстное меню на тех же ярлыках.

Фильтрация ATAPI устройств