有没有办法找出 Gnome 3 底部栏上图标的名称?

有没有办法找出 Gnome 3 底部栏上图标的名称?

有没有办法找出 Gnome 3 底部栏上图标的名称?

例如,Audacious 的图标名称是audacious,Dropbox 的图标名称是dropbox... 我需要它们的名称,以便将它们写在 Gnome 3 的 Status Icon Fixer 扩展上。

我努力了:

StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS['LibreOffice 3.5 快速启动器'] = 'LibreOffice 3.5 快速启动器';

但它没有起作用。

我需要 Google Chrome 背景托盘图标和 LibreOffice 3.5 Quickstarter 的名称。

谢谢你!

答案1

从系统监视器中获取了 LibreOffice 3.5 Quickstarter 的名称,Google 的 Chrome 是 google-chrome。

添加:

StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS['soffice'] = 'soffice';
StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS['google-chrome'] = 'google-chrome';

到:

.../gnome-shell/extensions/[email protected]/extension.js

仍然没有找到从图标中获取名称的方法。

答案2

这完全取自https://github.com/brianhsu/EvilStatusIconForever

因此,功劳归于brianhsu。

这可能会破坏您的 GNOME,请小心并先备份!!!!您需要 root 权限才能执行此操作。编辑 /usr/share/gnome-shell/js/ui/statusIconDispatcher.js

移至第 48 行,您应该看到一个名为 _onTrayIconAdded 的函数,其内容如下所示:

_onTrayIconAdded: function(o, icon) {
    let wmClass = (icon.wm_class || 'unknown').toLowerCase();
    let role = STANDARD_TRAY_ICON_IMPLEMENTATIONS[wmClass];
    if (role)
        this.emit('status-icon-added', icon, role);
    else
        this.emit('message-icon-added', icon);
},    

在 let role = ... 行后面添加 global.log("wmClass[] = " + wmClass);,现在该函数应如下所示:

_onTrayIconAdded: function(o, icon) {
    let wmClass = (icon.wm_class || 'unknown').toLowerCase();
    let role = STANDARD_TRAY_ICON_IMPLEMENTATIONS[wmClass];
    global.log("wmClass[] = " + wmClass);
    if (role)
        this.emit('status-icon-added', icon, role);
    else
        this.emit('message-icon-added', icon); },

按 Alt + F2 和 r 并按回车键重新启动 GNOME 3。

按 Alt + F2 和 lg 并按回车键启动 GNOME 控制台。

切换到“错误”选项卡,现在您应该看到如下消息:

wmClass[] = 洋泾浜语

... 这是状态图标修复器中使用的图标名称。

相关内容