Show the logo in the Linux system tray

The tray icon was QET::Icons::QETLogo, which comes from QElectroTech's
own icon theme bundled in its resources and so carries the theme name
"qet". On Linux Qt's StatusNotifierItem then sends only that name, and
the panel -- another process, without those resources -- cannot resolve
it: KDE Plasma showed an empty slot. Seen on D-Bus as IconName "qet"
and no IconPixmap.

The tray now gets an icon made of the logo's pixmaps only (16 to
256 px), which the tray sends as pixels. Checked on Plasma: IconName
is empty and IconPixmap carries the eight sizes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
DaTweety
2026-10-17 20:50:23 +02:00
parent 8c5a16d50e
commit 7d966a0ed4
+12 -1
View File
@@ -3053,7 +3053,18 @@ void QETApp::initSystemTray()
// initialization of the systray icon
// initialisation de l'icone du systray
m_qsti = new QSystemTrayIcon(QET::Icons::QETLogo, this);
//Pixels only: the logo comes from QElectroTech's own icon theme,
//bundled in its resources, so it carries the theme name "qet".
//On Linux the tray (StatusNotifierItem) then sends only that name,
//which the panel -- another process, without those resources --
//cannot resolve, and the slot stays empty.
QIcon tray_icon;
for (int size : {16, 22, 24, 32, 48, 64, 128, 256}) {
const QPixmap pixmap = QET::Icons::QETLogo.pixmap(QSize(size, size));
if (!pixmap.isNull())
tray_icon.addPixmap(pixmap);
}
m_qsti = new QSystemTrayIcon(tray_icon.isNull() ? QET::Icons::QETLogo : tray_icon, this);
m_qsti -> setToolTip(tr("QElectroTech", "systray icon tooltip"));
connect(m_qsti, &QSystemTrayIcon::activated, this, &QETApp::systray);
m_qsti -> setContextMenu(menu_systray);