4

我正在尝试以编程方式为 Gnome3/GDM 中的用户帐户设置 Gnome 3/GDM 3 用户个人资料/平铺/面部图片。这是我第一次尝试一个简单的 Linux 程序,我对 API 不熟悉,我的搜索几乎没有得到有用的信息。似乎可以将数据写入 .face 文件,但这似乎没有影响(或者我的文件类型/规格可能是错误的)。我从这个论坛帖子中发现信息存储在 /var/lib/AccountsService/users 下的用户特定目录中,但是我希望我的程序以常规用户权限运行并且(直接)写入该文件需要提升权限(尽管非特权用户能够通过 Gnome 设置 GUI 为其帐户指定图像)。

理想情况下,我也想对 KDE/KDM 和 Gnome 2 版本做同样的事情。任何信息将不胜感激。谢谢!

4

1 回答 1

1

好的,这是我可以阐明的部分:

在任何 Unix'y 操作系统上,您始终可以使用 GECOS 字段更新功能putpwent。传统上,“真实姓名”是用户记录中 GECOS 字段的第一部分,直到第一个,。不同的系统在 之后存储不同的扩展信息,,包括部门名称、家庭和办公室电话号码等。

在 Gnome 2 中,“他们”曾经使用 ~/.face 作为您的个人头像图标。但是,在各种情况下,一个用户无法查看另一个用户的主文件夹(包括 root:诸如网络文件系统、加密环回主目录等),所以这在某个时候被放弃了(我相信 3.0)支持 /var/lib/AccountsService/icons/$YOURNAMEHERE 位置。

本着 Gnome 3 的精神,新系统(您最可能想要使用的系统)是 Accounts Services DBus 服务。您可以通过 DBus 获取用户对象,并对其进行更改。接口是org.freedesktop.Accounts/org.freedesktop.Accounts.User并且具有类似SetRealName和的方法SetIconFile。还有很多其他方法可以用于定位、语言、电子邮件……</p>

PS:您也可以使用libaccountsservice与它进行交互,而无需自己调用 DBus。EG: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信息,恐怕我也不知道……</p>

对于它的价值,您也可以让用户自己调整它

       gnome-control-center user-accounts
于 2012-01-24T19:00:34.377 回答