如何在 gnome 3.28 Ubuntu 18.04 javascript 中获取用户个人资料图片

How to get user profile image in javascript in gnome 3.28 Ubuntu 18.04

我正在为 gnome 开发一个扩展,其中有一个带有 menuitems.One 菜单项的弹出菜单称为 "Log out"。我已经设法在 "Log out" 旁边显示了使用此代码的用户的真实姓名:

    let username = GLib.get_real_name();
                .........
                .........
    item = new PopupMenu.PopupMenuItem(_(list[x].text) + username);

Log out menuitem

现在我想在真实的旁边显示用户个人资料图像 name.I 尝试了此代码但它不起作用:

    let usename= GLib.get_user_name();
    let user = AccountsService.UserManager.get_default().get_user(username);
    let iconpath = user.get_icon_file();
    let icon = Gio.icon_new_for_string(iconpath);
    Icon = new St.Icon(icon);
    boxicon = new St.BoxLayout();
    boxicon.add(Icon);

"iconpath" 好像是 null.How 我可以获取用户个人资料图像并将其显示在菜单中吗? 提前致谢。

gnome-shell中已经写了很多JavaScript,方便复用。奖金,您将自动获得对代码所做的错误修复和性能改进(如果发生)。

我建议您重新使用,或者至少看看 Avatar class in ui/userWidget.js。不仅已经编写了代码,而且它使头像保持最新,并且任何具有自定义样式的 GNOME Shell 主题也可能会自动运行。

您可以这样使用 class:

const UserWidget = imports.ui.userWidget;

let user = AccountsService.UserManager.get_default().get_user(username);
let avatar = new UserWidget.Avatar(user);
let boxicon = new St.BoxLayout();

// Notice that UserWidget.Avatar is a container class for the actual actor
boxicon.add_child(avatar.actor);

还有其他 class 用于用户名标签,父 class 将它们都包装起来。请注意带有下划线前缀的 classes 或函数,例如 _doStuff(),因为这是将事物标记为 "private" 或内部的常用方法,如有更改,恕不另行通知。

编辑

此外,如果您未使用或未针对最新版本,请使用 GitLab 中的下拉菜单 select 您的版本的分支,或查看文件的历史记录以查看是否有任何重要更改.