Шаблоны выполняются на каждое событие начиная от синхронизации портежей и заканчивая входом в сеанс. При этом дерево шаблонов едино, а имена файлов и директорий могут быть произвольными. О том какие шаблоны должны быть выполнены прописано через условные выражения. Элементарная проверка на наличие переменной действия позволяет подловить неправильно составленные шаблоны. Созданные внутри templates директории (client/my_templates/Desktop) по умолчанию будут перенесены в корень систему как есть. Чтобы этого не произошло, для каждой директории в файле .calculate_directory можно описать её свойства.
Для примера лучше взять шаблоны из новой ветки 3.5, которые поддерживаются начиная с CL17. Вначале нужно просмотреть условия до директории “MATE-1.8” относительно директории шаблонов /var/lib/layman/calculate/profiles/templates/
:
3.5/
.calculate_directory
# Calculate append=skip cl_name==calculate-core&&cl_ver>=3.5.0_alpha44
3.5/6_ac_desktop_profile/
.calculate_directory
# Calculate env=desktop path=~ name= chown=#-main.ur_login-#:#-main.ur_group-# ac_desktop_profile==on
3.5/6_ac_desktop_profile/2-user/
.calculate_directory
# Calculate append=skip ur_login!=root&&ini(main.update)!=off
3.5/6_ac_desktop_profile/2-user/mate-base/
.calculate_directory
# Calculate append=skip
3.5/6_ac_desktop_profile/2-user/mate-base/MATE-1.8/
.calculate_directory
# Calculate append=skip mergepkg(mate-base/mate-session-manager)>=1.8&&ini(update.mate)!=off&&ini(ver.mate)==&&exists(~/.config/mate)==
3.5/6_ac_desktop_profile/2-user/mate-base/MATE-1.8/Desktop/
.calculate_directory
# Calculate name= path="#-ini(resource.desktop)-#"
Описание условий:
-
"append=skip"
- не создавать директорию
-
"cl_name==calculate-core"
- проверка на наличие модуля - для совместимости с утилитами версии 2.2
-
"cl_ver>=3.5.0_alpha44"
- проверка версии утилит
-
"env=desktop"
- использовать по умолчанию переменные окружения модуля desktop (нам понадобится логин пользователя, надо знать путь к домашней директории и т.п.), так же выполняется проверка наличия модуля, т.к. модуль может быть отключен USE-флагом пакета (если модуля нет, шаблоны не выполнятся)
-
"path=~"
- путь куда будет перенесен шаблон
-
"name="
- имя файла настраиваемого шаблоном - удобно иметь возможность использовать произвольные имена шаблонов
-
"chown=#-main.ur_login-#:#-main.ur_group-#"
- параметр указывающий права доступа
-
"ac_desktop_profile==on"
- событие настроки профиля пользователя, к которому привязаны последующие шаблоны
-
"ur_login!=root"
- проверка что пользователь не root.
-
"ini(main.update)!=off"
- проверка что в файле ini.env не запрещена настройка профиля пользователя
-
"mergepkg(mate-base/mate-session-manager)>=1.8"
- проверка что установлен или устанавливается пакет mate-base/mate-session-manager
-
"ini(ver.mate)=="
- проверка что в секции “ver” нет параметра “mate” со значением. Чтобы не выполнять настройку каждый раз.
-
"exists(~/.config/mate)=="
- проверка на отсутствие у пользователя директории с настройками mate. Для того случая, когда у пользователя уже были выполнены настройки.
-
"path="#-ini(resource.desktop)-#"
- путь к директории рабочего стола. При настройке профиля утилитами все пути выписаны в ~/.calculate/ini.env.
В самом шаблоне с иконкой так же есть дополнительные условия:
-
env(client.os_remote_auth)!=
- пользователь доменный
-
ur_domain_set==on
- компьютер в домене (может быть вариант, когда ноутбук загружен за пределами офиса или сервер не доступен)
Подробнее можно посмотреть в документации. Для локальных шаблонов часть проверок можно убрать.
В выбранной вами структуре "client/my_templates/Desktop"
, можно использовать следующие проверки:
client/
.calculate_directory
# Calculate append=skip env=desktop ac_desktop_profile==on&&ur_login!=root&&env(client.os_remote_auth)!=&&ur_domain_set==on
client/my_templates/
.calculate_directory
# Calculate append=skip path=~ name= chown=#-main.ur_login-#:#-main.ur_group-# ini(office.my_templates)<1
client/my_templates/Desktop/
.calculate_directory
# Calculate path="#-ini(resource.desktop)-#" name=
client/my_templates/ini.env
# Calculate format=samba path=~/.calculate
[office]
my_templates = 1
client/my_templates/Home.desktop
# Calculate format=samba chmod=755
[Desktop Entry]
URL=file:///home/#-ur_login-#/Home
Примечание:
# Пути указаны относительно директории с шаблонами /var/calculate/remote/templates/
или /var/calculate/templates/
.
# Проверка что пользователь доменный перенесена в начало условий.
# Функция ini() определяет что иконка уже создана при настройке сеанса. Шаблон ini.env меняет значение параметра непосредственно модифицируя файл (другой вариант использовать для этого функцию ini() для записи).