Пользовательский значок для расширения оболочки Gnome на верхней панели не отображается

Я пытаюсь использовать пользовательский SVG для моего расширения оболочки GNOME в качестве значка состояния на верхней панели. Но пользовательский значок никогда не отображается, только текст метки виджета. И я не нахожу ошибок в выводе журнала.

Когда я пытаюсь установить встроенный значок, например "system-search-symbolic", он работает, отображается этот значок.

Это мой фрагмент кода (SVG находится в каталоге "icons" моего расширения: /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 3.30.2)


person Dodo    schedule 16.04.2020    source источник


Ответы (2)


о нет! Это один из тех случаев, когда «сражайтесь неделями в одиночестве, наконец спросите толпу, вдруг сами узнаете решение»…

Значок был фактически видимым, но, поскольку я использую темную тему и сам значок также темный, он не был "виден". Я инвертировал цвета этого значка, и теперь я вижу значок рядом с моим текстом на верхней панели.

Теперь мне нужно выяснить, какой значок использовать в зависимости от темы пользователя, но исходная проблема решена.

Возможно, этот ответ поможет другому разработчику совершить ту же глупую ошибку.

person Dodo    schedule 20.04.2020

Вам нужно использовать -symbolic значки, чтобы разрешить автоматическое изменение цвета значков с учетом темы. Просто измените имя файла значка на timeclock-symbolic.svg, по крайней мере, это должен быть ваш первый шаг, если все остальные аспекты в порядке.

person Tamás Tóth - ebola    schedule 13.05.2020