Настройка рабочего стола в Calculate Linux 11.9

Оригинал статьи: http://habrahabr.ru/blogs/linux/129658/

В новой версии дистрибутива Calculate Linux 11.9 претерпел изменение метод настройки профиля пользователя. В этой статье я хочу описать процесс на примере Calculate Linux Desktop, выделив основные моменты.

table(noborder{width:80%;text-align:center;}).
|

h2. Пакеты утилит Calculate

Написанные на Python утилиты Calculate выполняют все бремя работ не только по установке, но и по настройке системы. За настройку профиля пользователя отвечает пакет ‘calculate-desktop’. В отличие от других утилит, он может выполнять настройки не только системных файлов, но и пользовательских (в пределах домашней директории). Пример:

# cl-desktop alex
 * Учетная запись пользователя alex настроена ...

Настройка выполняется при помощи шаблонов утилит, но об этом чуть ниже.

Переменные утилит Calculate

Пакеты утилит Calculate имеют наборы собственных переменных. Calculate-desktop включает переменные настроек сеанса пользователя. Вы можете просмотреть их, выполнив команду ‘cl-desktop -v’. Пример:

# cl-desktop -v alex
...
os_linux_name       [r] Calculate Linux Desktop
os_linux_shortname  [r] CLD
os_linux_subname    [r] KDE
os_linux_ver        [r] 11.9
os_locale_lang      [r] ru_RU
os_locale_language  [r] ru
os_locale_xkb       [r] us,ru(winkeys)
os_locale_xkbname   [r] us,ru
os_net_hostname     [w] calculate
os_root_type        [r] hdd
os_x11_composite    [r] on
os_x11_height       [w] 1050
os_x11_standart     [r] 1680x1050
os_x11_video_drv    [r] nvidia
os_x11_width        [w] 1680
ur_fullname         [r] Трацевский Александр
ur_group            [r] family
ur_home_path        [r] /home/alex
ur_jid              [r] 
ur_login            [r] alex
ur_mail             [r] 
...

Имена переменных в обязательном порядке включают тип и назначение. Переменные принимают непосредственное участие в настройке, их значение может подставляться в конфигурационный файл или использоваться в условных выражениях.

Шаблоны утилит Calculate

Несколько лет назад, в рамках проекта по созданию нового движка сайта Calculate Next, был написан ряд методов по преобразованию текста с разметкой в XML формат и обратно. Не смотря на то, что двиг так и не был дописан, многие наработки вошли в другие проекты, в частности в Calculate Utilities 2.

Известно, что в большинстве случаев достаточно изменить несколько параметров конфигурационного файла, чтобы сервис или приложение заработало по вашим требованиям. Это правило взято за основу работы шаблонов, которые понимают большинство популярных форматов конфигурационных файлов, среди которых: apache, bind, compiz, dhcp, dovecot, kde, ldap, openrc, plasma, postfix, procmail, proftpd, samba, squid, xml_gconf, xml_gconf_tree, xml_xfce, xml_xfcepanel. Для остальных форматов можно использовать текстовый raw, бинарный bin и patch-формат.

Шаблоны это не просто файлы настроек, которые можно объединять с системными. Они могут содержать условные выражения, функции, ну и конечно же переменные. В процессе объединения, шаблон и конфигурационный файл преобразуются в XML формат, затем происходит их объединение, после чего XML преобразуется снова в заданный формат конфигурационного файла и копируется в систему.

Пример 1. Настройка доверительных приложений kwallet, файл kwallertc:

# Calculate format=kde path=~/.kde4/share/config

 # Applications that access is allowed
[Auto Allow]
#?os_locale_lang==en_US#
kdewallet=Kopete,KMail,Konqueror,Chromium,Chrome,Network Management,Akonadi Resource,KDE Daemon
#os_locale_lang#
#?os_locale_lang==ru_RU#
kdewallet=Kopete,KMail,Konqueror,Chromium,Chrome,Network Management,Источник данных Akonadi,Служба KDE
#os_locale_lang#
...

С некоторых пор KDE-ные приложения стали использовать локализацию. Чтобы не загружать настройками всех возможных языков, производится проверка и настройка с учетом языка системы.

Пример 2. Создание ссылки на иконку браузера по-умолчанию в нижней панельке XFCE, файл browser.desktop:

# Calculate exists(/usr/share/applications/calculate-browser.desktop)!= link=/usr/share/applications/calculate-browser.desktop name=10000000030.desktop symbolic force

В примере создается символическая ссылка с именем 10000000030.desktop на файл calculate-browser.desktop, проверяется наличие файла. В случае наличия файла с тем же именем, файл переписывается.

Пути хранения шаблонов

Если пути утилит Calculate нас мало волнуют, то расположение шаблонов играет важную роль, ведь на их примере мы можем строить свои собственные шаблоны. Для удобства все шаблоны Calculate 2.2 находятся в одном пакете ‘calculate-templates’. При установке содержимое пакета разворачивается в директорию /usr/share/calculate/templates. Здесь можно найти настройки профиля пользователя. Имена директорий в шаблонах не фиксированы, их свойства задаются в файлах ‘.calculate_directory’ внутри директорий. Для директории действуют общие правила шаблонов. Шаблоны с которыми работает пакет calculate-desktop находятся в директории ‘/usr/share/calculate/templates/desktop’. В файле .calculate_directory, описывающим свойства этой директории, находится заголовок шаблона директории desktop:

# Calculate append=skip cl_name==calculate-desktop&&cl_ver>=2.2.1

Здесь явно указывается принадлежность шаблонов пакету, производится проверка версии утилит. Настройки программ пользователя хранятся в директории ‘/usr/share/calculate/templates/desktop/desktop’. Пример, директория ‘60-mc-4.7’ содержит шаблоны настройки Midnight Commander.

События настройки

В качестве системы управления пакетами Calculate Linux использует Portage. Эта чрезвычайно гибкая система предоставляет большую свободу для включения сторонних разработок. Используя скрипт profile.bashrc, утилиты Calculate интегрируются через профиль системы с менеджером пакетов emerge. Таким образом, в момент установки пакета вызывается настройка системы при помощи утилит Calculate. Calculate-desktop ищет шаблоны устанавливаемого пакета и, при необходимости, производит настройку. Если настройки не ограничиваются профилем пользователя, пакет может модифицировать системные файлы. При этом Portage будет считать эти файлы своими. Пути к новым и измененным файлам с их хэшами останутся в локальной базе установленных пакетов.

Кроме установки пакетов существует множество других событий, во время которых производится настройка программ. Например, при входе в сеанс через kdm/gdm, в случае отсутствия у пользователя директории, она будет создана и настроена. Все эти события описаны в специализированных переменных, при помощи которых в шаблонах строятся условные выражения.

Информация о настроенных пакетах

Шаблоны настроек профиля пользователя, используя стандартные методы утилит, хранят свои настройки в файле ‘~/.calculate/ini.env’. Файл samba-подобного формата содержит 4 основные секции: “main” - общие настройки, “ver” - версии настроенных программ, “update” - флаг отключения обновления для каждой из установленных программ, “resource” - пути к стандартным пользовательским директориям. Количество секций не ограничено, например в своей компании мы используем секцию “office” для учёта специфичных для нас настроек. При входе в сеанс доменного пользователя, происходит настройка профиля шаблонами. Настройки, как правило, нужны при внесении изменений при обновлении софта или фиксировании некоторых настроек приложений.

При помощи ini.env можно разрешать или запрещать обновления как всех, так и отдельного приложения. Например можно восстановить начальные настройки какой-либо программы.

Изменения в работе шаблонов Calculate Linux 11.9

В 99% случаев настройка профиля пользователя при входе в систему была излишней. В Calculate Linux 11.9 была проведена грань между локальными пользователями и доменными. Если раньше утилиты могли вносить изменения в профили только работающих в системе пользователей, для настройки программ до первого запуска, то теперь настраиваются профили всех локальных пользователей. Это позволило убрать обновление при входе в сеанс, экономя до 5 секунд. В случае изменений, модифицируемые файлы отображаются во время установки пакета.

Обновление системы путем установки нового ISO образа также не вызовет проблем. При первой загрузке будут запущены утилиты обновления. Например при переходе с KDE 4.6 на версию 4.7 меняется только один конфигурационный файл ‘nepomukserverrc’ шаблоном ‘/usr/share/calculate/templates/desktop/desktop/20-kde-4.6-4.7/.kde4/share/config/nepomukserverrc’, со следующим содержимым:

# Calculate format=kde

[Basic Settings]
Start Nepomuk=true

До версии KDE 4.7 отсутствие демона Nepomuk никому не мешало.

Отличия системы настройки пакетов Calculate

Отличия

Можно подвести краткое резюме и сравнить с другими дитрибутивами.
Ubuntu:
Для настройки профиля пользователя используются преднастроенные системные файлы, иногда Skel.
Sabayon:
Для настройки профиля пользователя используется директория /etc/skel, содержащая настройки всех, в том числе отсутствующих в дистрибутиве приложений.
Calculate:
Для настройки профиля пользователя используются шаблоны утилит Calculate.

Плюсы и минусы

  • Больше возможностей в настройке, ведь /etc/skel ограничен статическими настройками, не допускающими указание логина пользователя, разрешения экрана, аппаратных особенностей и т.п.
  • Настройки выполняются только для установленного в системе софта, при необходимости можно задействовать метод удаления настроек.
  • Пользователь может создавать свои шаблоны настройки приложений.
  • Всегда остаётся возможность использовать оригинальные настройки программ.
  • Поддерживается возможность плавной миграции между версиями программ.
  • Перед обновлением ПО желательно выполнить обновление пакета с шаблонами утилит.

Ссылки по теме