Существует ли API для настройки значка профиля пользователя / изображений мозаики для Gnome 3? - PullRequest
4 голосов
/ 21 ноября 2011

Я пытаюсь программно установить профиль пользователя / плитку / лицо Gnome 3 / GDM 3 для учетной записи пользователя в Gnome3 / GDM. Это моя первая попытка простой программы для Linux, и я не знаком с API, и мой поиск дал мало полезной информации. Кажется, что можно записать данные в файл .face, но это, похоже, не влияет (или, возможно, мой тип файла / спецификации неверны). Из этого сообщения на форуме я обнаружил, что информация хранится в пользовательском каталоге в / var / lib / AccountsService / users, однако я хочу, чтобы моя программа работала с правами обычного пользователя и писала (напрямую) в для этого файла потребуются повышенные привилегии (несмотря на то, что непривилегированный пользователь может указать изображение для своей учетной записи через графический интерфейс настроек Gnome).

В идеале я хотел бы сделать то же самое для версий KDE / KDM и Gnome 2. Любая информация будет глубоко цениться. Спасибо!

1 Ответ

1 голос
/ 24 января 2012

ОК, вот часть, которую я могу пролить немного света на:

В любой ОС Unix'y вы можете всегда использовать функцию обновления поля GECOS putpwent. Традиционно «Настоящее имя» - это первая часть поля GECOS в пользовательской записи, вплоть до первой ,. Различные системы хранят различную расширенную информацию после ,, включая такие вещи, как названия отделов, домашние и офисные телефоны и т. П.

В Gnome 2 «они» использовали ~ / .face в качестве вашего личного значка лица. Однако есть все виды ситуаций, в которых один пользователь не может заглянуть в домашнюю папку другого (включая корневую: такие вещи, как сетевые файловые системы, зашифрованные дома с обратной связью и т. Д.), Так что в какой-то момент от этого отказались (я считаю, 3.0) в пользу расположения / var / lib / AccountsService / icons / $ YOURNAMEHERE.

В духе Gnome 3 новая система (которую вы, скорее всего, захотите использовать) - это служба DBus Services Accounts Services. Вы можете получить пользовательский объект через DBus и изменить его. Интерфейс org.freedesktop.Accounts / org.freedesktop.Accounts.User и имеет такие методы, как SetRealName и SetIconFile. Есть также «куча» других методов для таких вещей, как местоположение, язык, электронная почта,…

PS : вы также можете использовать libaccountsservice для взаимодействия с ним, не вызывая DBus самостоятельно. Например: void act_user_set_real_name (ActUser *user, const char *real_name) и void act_user_set_icon_file (ActUser *user, const char *icon_file) экспортируются из этой библиотеки.

Однако я не знаю , знаю, может ли K (или какая версия K) искать эту службу DBus. Так что, если вы действительно хотите настроить информацию K, боюсь, я не знаю ...

Что бы это ни стоило, вы также можете просто позволить пользователю настроить его самостоятельно с помощью

       gnome-control-center user-accounts
...