On Fedora (GNOME Wayland) with Qt 6.2.3 (we use this version for jami-libqt), OpenGL backend and both "QT_QPA_PLATFORM=wayland" and "QT_QPA_PLATFORM=xcb" there is no issue (no crash, no resize issue).
0f35faa should be ok, as we disabled Vulkan on this release so it should uses OpenGL (as Qt with vulkan doesn't have any window decoration on Wayland)
I thought the crash on xcb is a NixOS related issue. On wayland here is the log
Using Qt runtime version: 6.3.0"notify server name: gnome-shell, vendor: GNOME, version: 42.1, spec: 1.2"qt.webenginecontext: GL Type: desktopSurface Type: OpenGLSurface Profile: CompatibilityProfileSurface Version: 4.6QSG RHI Backend: OpenGLUsing Supported QSG Backend: yesUsing Software Dynamic GL: noUsing Multithreaded OpenGL: yesInit Parameters: * application-name Jami * browser-subprocess-path /nix/store/r3q12jpvq15rf9gcxrpyns1x183brnbw-qtwebengine-6.3.0-dev/libexec/ * create-default-gl-context * disable-features ConsolidatedMovementXY,InstalledApp,BackgroundFetch,WebOTP,WebPayments,WebUSB,PictureInPicture * disable-setuid-sandbox * disable-speech-api * disable-web-security * enable-features NetworkServiceInProcess,TracingServiceInProcess * enable-threaded-compositing * in-process-gpu * single-process * use-gl desktop "Using locale: zh_CN"No migration requiredcould not update message status for not existing conversationScreen saver dbus interface: "org.freedesktop.ScreenSaver"Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Main window loaded using OpenGLRhiqt.core.qobject.connect: QObject::connect: No such signal QPlatformNativeInterface::systemTrayWindowChanged(QScreen*)Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Syncing lrc accounts list with the daemonNetworkManager client initialized, version: 1.36.4 , daemon running: yes , networking enabled: yesprimary network connection: c8319e7b-0462-4ea1-9dc2-95605fa6848a default: yesBinding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on popup is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on indicator is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on indicator is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on background is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on popup is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on popup is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.Binding on contentItem is not deferred as requested by the DeferredPropertyNames class info because one or more of its sub-objects contain an id.qrc:/src/mainview/components/AboutPopUp.qml:57:13: QML MaterialLineEdit: Binding loop detected for property "implicitWidth"Unsupported modifier, resource creation failed.XXX: resource creation failedUnsupported modifier, resource creation failed.XXX: resource creation failedUnsupported modifier, resource creation failed.XXX: resource creation failedUnsupported modifier, resource creation failed.XXX: resource creation failedDestroying connectivity monitor
I just found that the window can be resized. The cursor doesn't change on the edge so I thought that the window can't be resized. It seems related to the Gnome wayland issue. I still have no idea why setApplicationName doesn't work.
The icon on the left is the right icon representing the /usr/share/applications/jami-qt.desktop. But after I click on it, gnome-shell for some reason can't determine that the Jami main window belongs to this desktop file, and creates a separate icon for it (on the right).
In your case the wmclass is net.jami.jami-qt and in my case it's net.jami. . I doube that the QApplication::setApplicationName("Jami"); doesn't work and the name fallbacks to something else.
QT_QPA_PLATFORM=xcb will not work on NixOS if I understand, but it's interesting. I know the Wayland backend is still not ready for Qt. Vulkan's backend for example on wayland doesn't work
mShellSurface=mDisplay->shellIntegration()->createShellSurface(this);if(mShellSurface){// Set initial surface titlesetWindowTitle(window()->title());// The appId is the desktop entry identifier that should follow the// reverse DNS convention (see http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s02.html).// According to xdg-shell the appId is only the name, without// the .desktop suffix.//// If the application specifies the desktop file name use that// removing the ".desktop" suffix, otherwise fall back to the// executable name and prepend the reversed organization domain// when available.if(!QGuiApplication::desktopFileName().isEmpty()){QStringname=QGuiApplication::desktopFileName();if(name.endsWith(QLatin1String(".desktop")))name.chop(8);mShellSurface->setAppId(name);}else{QFileInfofi=QFileInfo(QCoreApplication::instance()->applicationFilePath());QStringListdomainName=QCoreApplication::instance()->organizationDomain().split(QLatin1Char('.'),Qt::SkipEmptyParts);if(domainName.isEmpty()){mShellSurface->setAppId(fi.baseName());}else{QStringappId;for(inti=0;i<domainName.count();++i)appId.prepend(QLatin1Char('.')).prepend(domainName.at(i));appId.append(fi.baseName());mShellSurface->setAppId(appId);}}// the user may have already set some window properties, so make sure to send them outfor(autoit=m_properties.cbegin();it!=m_properties.cend();++it)mShellSurface->sendProperty(it.key(),it.value());}else{qWarning("Could not create a shell surface object.");}
Setting QGuiApplication::desktopFileName manually (it is empty for both QT_QPA_PLATFORM=xcb jami-qt and QT_QPA_PLATFORM=wayland jami-qt by default) solves the issue with a separate icon on Wayland.
But I don't understand how it works with X11. If the shell provides information about the desktop file with some environment variable, Qt on Wayland should also use this automatically.
@linsui on current master, there is now some code to change the theme of the app between dark/white following the color-scheme preference (or the gtk-theme if found). However the header bar is not managed by us.
For the rest of the issues, I think we discussed all the points? Seems un-related to Jami but mainly Qt/Wayland, so bugs should be opened on Qt's bugtracker if there is still some un-resolved issues.