我的 Gnome Shell 扩展有一个文件夹“icons”,里面有一个名为“MyIcon.png”的图标文件。我想把它作为一个 St.Icon 对象的参数。
let icon = new St.Icon({ /* I need what to code here*/ });
谢谢你的帮助。
塞尔丘克。
我的 Gnome Shell 扩展有一个文件夹“icons”,里面有一个名为“MyIcon.png”的图标文件。我想把它作为一个 St.Icon 对象的参数。
let icon = new St.Icon({ /* I need what to code here*/ });
谢谢你的帮助。
塞尔丘克。
这是 GnomeShell v3.8.4 的解决方案:
const St = imports.gi.St;
const Me = imports.misc.extensionUtils.getCurrentExtension();
const Gio = imports.gi.Gio;
let gicon = Gio.icon_new_for_string(Me.path + "/icons/my_icon.png");
icon = new St.Icon({ gicon });
昨天偶然发现了同样的问题。
你必须做两件事:
第 1 步:将此代码添加到“stylesheet.css”
.your-icon-name {
background-image: url("icons/MyIcon.png");
background-size: 20px;
height: 20px;
width: 20px;
}
'background-size', 'height' 和 'width' 只是用来预缩放图像,可以省略它们以保持原始大小。
第 2 步:将其写入您的 .js 文件中:
let icon = new St.Icon({style_class: 'your-icon-name'});
以下是如何执行此操作的示例:
_getIconImage: function() {
let icon_file = this._path + "/icons/icon.png";
let file = Gio.file_new_for_path(icon_file);
let icon_uri = file.get_uri();
return St.TextureCache.get_default().load_uri_async(icon_uri, 64, 64);
},
myIcon = _getIconImage();
对于任何想要将其扩展的 icon/(或 images/ 等)子目录添加到搜索路径以使用 CSS 样式的人来说,这对我有用:
function init(metadata) {
// ...
let theme = imports.gi.Gtk.IconTheme.get_default();
theme.append_search_path(metadata.path + "/icons");
// ...
}