顶部面板中 Gnome Shell 扩展的自定义图标不可见

Posted

技术标签:

【中文标题】顶部面板中 Gnome Shell 扩展的自定义图标不可见【英文标题】:Custom Icon for Gnome Shell Extension in Top Panel not visible 【发布时间】:2020-07-29 06:42:27 【问题描述】:

我尝试为我的 GNOME shell 扩展使用自定义 SVG 作为顶部面板中的状态图标。但自定义图标永远不会显示,只是小部件的标签文本。而且我在日志输出中没有发现错误。

当我尝试设置像“system-search-symbolic”这样的内置图标时,它会起作用,会显示这个图标。

这是我的代码 sn-p(SVG 位于我的扩展程序的“图标”目录中:/home/myusername/.local/share/gnome-shell/extensions/my-widget@my-widgets/icons/timeclock-16x16.svg):

// ...

let widgetBoxLayout = new St.BoxLayout();

let iconPath = `$Me.path/icons/timeclock-16x16.svg`;
// just for debug if path is correct
log(`$Me.metadata.name: Icon path=$iconPath`);
let gicon = Gio.icon_new_for_string(`$iconPath`);
let icon = new St.Icon( gicon: gicon, style_class: 'system-status-icon', icon_size: 16 );

// this works for build-in icon:
//let icon = new St.Icon( icon_name: 'system-search-symbolic', style_class: 'system-status-icon');

widgetBoxLayout.add(icon);
widgetBoxLayout.add(this.widgetText);

//...

也许是图标路径中有一个“@”字符的问题? 但是为什么没有记录错误呢?

在状态面板中使用自定义图标的正确代码是什么?

(我有 GNOME Shell 3.30.2)

【问题讨论】:

【参考方案1】:

哦不!这其中一个“孤军奋战,终于问众,自己突然知道解决办法”的案例……

图标实际上是可见的,但由于我使用了 dark 主题 并且图标本身也是 dark 它不是“可见的”。我反转了这个图标的颜色,现在我可以在顶部面板中看到我的文本旁边的图标。

现在我必须根据用户的主题找出使用哪个图标,但原来的问题已经解决了。

也许这个答案有助于其他开发人员犯同样愚蠢的错误。

【讨论】:

【参考方案2】:

您需要使用-symbolic 图标来允许对图标进行自动主题感知重新着色。只需将图标的文件名更改为timeclock-symbolic.svg,如果其他方面都很好,至少这应该是您的第一步。

【讨论】:

以上是关于顶部面板中 Gnome Shell 扩展的自定义图标不可见的主要内容,如果未能解决你的问题,请参考以下文章

Gnome-Shell-Extension 开发中的持久日志记录?

Gnome shell 扩展登录回调

GNOME Shell Extension常用扩展

不容错过这十款 GNOME Shell 扩展

如何将字符串发送到 gnome-shell 扩展?

不容错过这十款 GNOME Shell 扩展