首页 文章

如何在gnome 3.28 Ubuntu 18.04中的javascript中获取用户 Profiles 图像

提问于
浏览
0

我正在研究gnome的扩展,其中有一个带有menuitems的弹出菜单 . 其中一个菜单项称为“注销” . 我已设法在“注销”旁边显示使用此代码的用户的真实姓名:

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

Log out menuitem

现在我想显示真实姓名旁边的用户 Profiles 图片 . 我试过这段代码,但它不起作用:

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 . 如何获取用户配置文件图像并将其显示在菜单中 . 提前致谢 .

1 回答

  • 0

    gnome-shell中有很多JavaScript已被编写为易于重用 . 奖金,您将自动获得对代码进行的错误修正和性能改进(如果它们发生) .

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

    您可以像这样使用此类:

    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);
    

    其中还有其他类用于用户名标签,以及包含它们的父类 . 请注意以 _doStuff() 之类的下划线为前缀的类或函数,因为这是将事物标记为"private"或内部的常用方法,如有更改,恕不另行通知 .

    EDIT

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

相关问题