IvmConfigActions.xml − действия, производимые ivman(8)
IvmConfigActions.xml указывает, какие действия должен произвести ivman(8) при вставке/подключении устройства к системе, где действиями могут быть монтирование устройства или выполнение программы.
IvmConfigActions.xml обрабатывается как файл XML. Общий вид этого файла следующий:
<?xml version="1.0" encoding="UTF−8"?>
<ivm:ActionsConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm">
<ivm:Match name="matchname" value="matchvalue">
<ivm:Option name="optionname1" value="optionvalue1" />
<ivm:Option name="optionname2" value="optionvalue2" />
...
</ivm:Match>
...
</ivm:ActionsConfig>
При каждом добавлении устройства в систему обрабатывается этот файл. Если в элементе Match для нового устройства выполняется условие matchname=matchvalue, то обрабатываются элементы Match или Option внутри данного элемента Match.
Элемент Match может иметь одно из следующих имён:
ivm.mountable
Указывает может ли и должно ли быть смонтировано данное устройство HAL. Должно принимать значение "true" (истина) или "false" (ложь).
hal.anything
Строка на месте "anything" будет использована в качестве имени строки свойства устройства HAL, а значение этого свойства может быть сравнено с указанной строкой. Запустите ’lshal’, чтобы увидеть список свойств HAL, которые можно здесь использовать.
* |
Совпадает с любым устройством. Соблюдайте осторожность! |
Элемент Option может иметь любое из следующих имён:
checkOnInit
Если задано ’true’, IvmConfigActions.xml будет обрабатываться при запуске Ivman и правила будут применены ко всем устройствам, подключенным к системе в настоящее время. Это можно использовать, например, для монтирования любых съёмных устройств, подключенных к системе до запуска Ivman. Эта опция должна быть указана вне какой−либо конструкции элемента ’match’.
mount |
Указывает монтировать ли устройство или нет. Должно принимать значение "true" (истина) или "false" (ложь). Если к устройству применяется больше одного значения, то используется то из них, которое ближе к концу файла. |
||
exec |
Команда, которая будет выполнена при вставке устройства или диска. Количество команд для устройства не ограничено. |
||
execun |
Команда, выполняемая при изъятии устройства или диска. Количество команд для устройства не ограничено. Отметим, что для execun подстановки свойств HAL ограничены; поскольку устройство более не существует при выполнении команды, мы не можем получить из HAL информацию о нём, и поэтому любые подстановки будут произведены со значениями свойств, которые были получены при вставке (или монтировании, если Ivman смонтировал их), а НЕ при удалении. |
execdvd
Команда, выполняемая при вставке устройства, если том содержит видео в формате DVD. Общее количество команд для устроства не ограничено. ЗАМЕЧАНИЕ: execdvd устарела! Теперь существует свойство HAL, которое указывает на то, содержит или нет диск видео в формате DVD − volume.disc.is_videodvd.
exec, execdvd и execun поддерживает подстановку свойств устройства HAL. Это делается помещением имени свойства между символами $. Например, если в команде указано $hal.volume.mount_point$, то оно будет заменено на точку монтирования до выполнения команды. При подстановке не выполняется экранирования символов, но символы ’ и " заменяются на ?, поэтому вы без опаски можете заключить подстановку в кавычки.
Помните, что это файл XML, поэтому символы, имеющие особое значение в XML должны быть заэкранированы. Некоторые символы, популярные при использовании в оболочке (&, <, >) являются этими специальными символами. В качестве краткой инструкции: & заменяется на & , < заменяется на < , > заменяется на > , ’ заменяется на ' а " заменяется на " .
Элементы Match и Options могут быть вложены настолько глубоко, насколько может потребоваться. Это, наряду с возможностью проверять свойства HAL, делает Ivman весьма гибким; см. примеры ниже.
<!−− автовоспроизведение видео с дисков DVD −−>
<ivm:Match name="hal.volume.disc.type" value="dvd_rom">
<ivm:Option name="execdvd" value="xine −f −g −D dvd:$hal.block.device$" />
</ivm:Match>
<!−− автовоспроизведение музыкальных дисков CD −−>
<ivm:Match name="hal.volume.disc.type" value="cd_rom">
<ivm:Match name="hal.volume.disc.has_audio" value="true">
<ivm:Match name="hal.volume.disc.has_data" value="false">
<ivm:Option name="exec" value="cdplay −d $hal.block.device$ −c" />
</ivm:Match>
</ivm:Match>
</ivm:Match>
<!−− отмена монтирования некоторых разделов, которые мы не хотим монтировать −−>
<ivm:Match name="hal.block.device" value="/dev/hda5">
<ivm:Option name="mount" value="false" />
</ivm:Match>
<ivm:Match name="hal.block.device" value="/dev/hda2">
<ivm:Option name="mount" value="false" />
</ivm:Match>
Дополнительные примеры вы можете найти в файле, по умолчанию поставляемом в комплекте с Ivman.
ivman(8), IvmConfigBase.xml(5), IvmConfigProperties.xml(5), IvmConfigConditions.xml(5)
Перевод на русский язык выполнил Владимир Ступин <vladimir@stupin.su>.