我正在开发gnome扩展,其中有一个带有menuitems的弹出菜单。其中一个菜单项称为“注销”。我设法在“注销”旁边显示用户的真实姓名。此代码:
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);
似乎“ iconpath”为空。如何获取用户个人资料图像并将其显示在菜单中。 预先感谢。
答案 0 :(得分:0)
gnome-shell中有很多JavaScript,它们已经被编写为易于重用。奖励,您将自动获得对代码进行的错误修正和性能改进(如果发生的话)。
我建议您重复使用,或至少查看Avatar class in ui/userWidget.js。不仅已经编写了代码,而且还可以使头像保持最新状态,任何具有自定义样式的GNOME Shell主题也可能会自动运行。
您可以像这样使用此类:
spring-data-redis
其中还有用于用户名标签的其他类,以及将两者包装在一起的父类。请注意带有下划线的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);
前缀的类或函数,因为这是将事物标记为“私有”或内部的,并且可以随时更改而无需另行通知的常见方式。
编辑
此外,如果您不使用最新版本,也不使用最新版本,请使用GitLab的下拉菜单选择发布的分支,或查看文件的历史记录以查看是否有重要更改。