Calculate🐧Forum

Подскажите где я дурак :(

templates
#1

Хочу с помощью шаблонов на рабочем столе доменных пользователей изменить внутри файла ярлычка (файл.desktop)
значение параметра URL

1 Создаю каталог для шаблонов
/var/calculate/remote/templates/client/my_templates/Desktop
2 внутрь копирую из
/var/lib/layman/calculate/profiles/templates/3.4/6_ac_desktop_profile/2-user/mate-base/MATE-1.8
файлы
.calculate_directory
Home.desktop

внутри
.calculate_directory

 # Calculate name= path="#-ini(resource.desktop)-#" ac_install_merge==on

внутри Home.Desktop

 # Calculate chmod=755 format=samba env(client.os_remote_auth)!=&&ur_domain_set==on
[Desktop Entry]
URL=file:///home/#-ur_login-#/Home

на клиенте от рута делаю
cl-desktop --verbose on test

на что система ругается , что

Заголовки шаблонов директорий и файлов первого уровня должны включать в себя перемееную действия 
пример 
#calculate ac_install_merge==on

Я куда-то не туда включил эту переменную ?

#2

Шаблоны выполняются на каждое событие начиная от синхронизации портежей и заканчивая входом в сеанс. При этом дерево шаблонов едино, а имена файлов и директорий могут быть произвольными. О том какие шаблоны должны быть выполнены прописано через условные выражения. Элементарная проверка на наличие переменной действия позволяет подловить неправильно составленные шаблоны. Созданные внутри 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() для записи).

#3

что значит “При этом дерево шаблонов едино” ?

#4

что значит “При этом дерево шаблонов едино” ?

То, что все настройки находятся в одной директории и пути 1_ac_install_disk, 2_ac_install_merge, 3_ac_install_live и т.д. никак не фиксированы. Это позволило однажды полностью изменить структуру шаблонов ничего не переписывая в коде утилит.

#5

я вроде как успешно шаблонами лажу в хоумнике пользователя .
А в /etc/так шаблонами что-нить править возможно ?

#6

А в /etc/так шаблонами что-нить править возможно ?

Конечно, только привязывайте шаблоны к пакетам. Лучше создать отдельную тему. Пример можно взять из /var/lib/layman/calculate/profiles/templates/3.5/2_ac_install_merge.

#9

Ситуация, пользователь удалил ярлык share.desktop? как его восстановить при следующем запуске?

#10

Создайте новую тему на форуме. В этом обсуждении другой пример к тому же двухгодичной давности.

Mastodon Mastodon