如何在gnome 3.28 Ubuntu 18.04中获得javascript中的用户配置文件图像



我正在为gnome开发一个扩展,其中有一个带有菜单项的弹出菜单。其中一个菜单项被称为"注销"。我已经设法在"注销"旁边显示了用户的真实姓名,代码是:

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

注销菜单项

现在我想显示和用户配置文件图像旁边的真实姓名。我尝试过这个代码,但它不起作用:

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

"图标路径"似乎为空。如何获取用户配置文件图像并将其显示在菜单中。提前谢谢。

gnome shell中有很多JavaScript已经被编写为易于重用。额外的好处是,您将自动获得对代码进行的错误修复和性能改进(如果发生(。

我建议你重新使用,或者至少在ui/userWidget.js中查看Avatar类。它不仅已经编写了代码,而且可以让Avatar保持最新,任何具有自定义样式的GNOMEShell主题都可能自动工作。

你可以这样使用这个类:

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()等下划线为前缀的类或函数,因为这是将事物标记为"私有"或内部的常见方式,并且可能会在不通知的情况下进行更改。

编辑

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

最新更新