https://bugs.kde.org/show_bug.cgi?id=425315
Ilya Fedin <fedin-ilja2...@ya.ru> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |fedin-ilja2...@ya.ru --- Comment #52 from Ilya Fedin <fedin-ilja2...@ya.ru> --- TL;DR Qt's architecture is complicated in order to fallback to XEMBED when SNI is not available, since it's an architectural issue in Qt, it may be they never would fix the architecture to allow switching the backends on the fly (as needs a lot of work). Since they don't switch on the fly, the effect is if SNI host is started after application is started, the tray icon is blurry on X11 and doesn't show at all on Wayland (as there's nowhere to fallback). As Discord is mentioned in this bug, it may be that Electron has a similar issue. So it may be way easier to ensure that applications are started after all services like SNI host, global menu service, xsettingsd (Qt reads XSETTINGS and doesn't handle when it appears after Qt initialization, just like with SNI/global menu), kwin (https://bugreports.qt.io/browse/QTBUG-95338) and etc, rather than fixing all bugs in all toolkits. That's where Qt decides to use SNI or not: https://github.com/qt/qtbase/blob/a8e6a0e546a6a90ff2daee79c3cf504b7160cb86/src/gui/platform/unix/qgenericunixthemes.cpp#L71-L101 It's called by createPlatformSystemTrayIcon() down this file. If it's not available, it returns nullptr. Every other platform has built-in platformtheme and has windowing system-based tray backend returned by createPlatformSystemTrayIcon() therefore. But X11 is different. They replace entire private QSystemTrayIcon class implementation for it: https://github.com/qt/qtbase/blob/a8e6a0e546a6a90ff2daee79c3cf504b7160cb86/src/widgets/CMakeLists.txt#L825-L833 So it tries to call createPlatformSystemTrayIcon() and creates X11 window right in the private class: https://github.com/qt/qtbase/blob/a8e6a0e546a6a90ff2daee79c3cf504b7160cb86/src/widgets/util/qsystemtrayicon_x11.cpp#L186-L217 -- You are receiving this mail because: You are watching all bug changes.