Skip to content

Export Qt wayland plugins #160

Open
Open

Description

@oyvindln

The plugin currently only exports Qt plugins for X11. Distributions are now moving towards Wayland as default so it would be nice if there was at least an optional setting for also exporting the needed Qt wayland platform plugins to run natively on wayland instead of having to run the appimage via xwayland. Just adding them as EXTRA_PLATFORM_PLUGINS does not seem to add all the needed files.

PR #157 may solve this but not sure.

Activity

  1. mdear commented on Feb 23, 2024

    @mdear

    I am also aiming to package for Wayland / Weston. I create a packaging VM using Yocto Poky Kirkstone Linux and explicitly remove X11 collateral and explicitly add Wayland / Weston collateral in my $POKY_ROOT/build/conf/local.conf prior to launching a build. I'm building against target qemuarm64 and running under QEMU emulation from an x86_64 packaging VM. The VM comes up with a standard Weston desktop where I can launch a terminal and move it around with my mouse.

    Here are some hints to get you started:

    Add the following lines to your local.conf, remove all content under cache* and tmp in your build directory and bitbake a fresh binary.

    DISTRO_FEATURES:remove = "x11"
    DISTRO_FEATURES:append = " wayland"
    PACKAGECONFIG:remove:pn-qtbase = "x11"
    PACKAGECONFIG:append:pn-qtbase = " wayland"

    Also, since we're using the commercial license, there are a few more steps to include the commercial FFMPEG collateral.

    With all that said, I'm also seeing evidence that plugins for Wayland, even when made available in the underlying build system, are not making their way into the AppImage. Since my neck is on the line for this, I'll tinker and try to get a PR that will extend the tool. I'll also take a look at the PR you mentioned. Wish me luck !

  2. SushiTee commented on Feb 23, 2024

    @SushiTee
    Contributor

    PR #157 may solve this but not sure.

    It does for me. I'm not sure though if this is the best solution. It would be nice if there was a way to simply tell linuxdeploy which directories from the plugins directory to deploy instead of connecting it to the actual plugin names of Qt.

  3. mdear commented on Feb 23, 2024

    @mdear

    For the record, here's what I get when I run the AppImage (Dice 3D/physics example that ships with Qt6) on a freshly rebooted CrossControl v700 device (i.MX8DualXPlus ARMv8 aarch64 platform):

    root@v700:/home/ccs/Downloads# export QT_QPA_PLATFORM=wayland
    root@v700:/home/ccs/Downloads# ./Dice-aarch64.AppImage
    qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in ""
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    
    Aborted
    root@v700:/home/ccs/Downloads#
    

    On my platform, the westin user has id 1000
    export XDG_RUNTIME_DIR=/run/user/1000

    The toolchain works as shown below, without me setting the following line:
    export EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so libqwayland-generic.so"

    When I specify the extra plugins, I get the following error:
    ERROR: Cannot deploy non-existing library file: /usr/lib/plugins/platforms/libqwayland-egl.so libqwayland-generic.so

    even though the files are actually available:

    root@qemuarm64:/home/ccs/Qt/Projects/CortexBuilds/bin# ls /usr/lib/plugins/platforms
    libqeglfs.so  libqminimalegl.so  libqminimal.so  libqoffscreen.so  libqvkkhrdisplay.so	libqvnc.so  libqwayland-egl.so	libqwayland-generic.so	libqxcb.so
    
    

    Here's the file structure created by the linuxdeploy toolchain with qt input plugin and appimage output plugin : Note the conspicuous absence of content in the /usr/plugins/platforms portion of the tree :

    .
    ├── AppRun
    ├── apprun-hooks
    │   └── linuxdeploy-plugin-qt-hook.sh
    ├── AppRun.wrapped -> usr/bin/dice
    ├── dice.desktop -> usr/share/applications/dice.desktop
    ├── dice.png -> usr/share/icons/hicolor/160x160/apps/dice.png
    └── usr
        ├── bin
        │   ├── dice
        │   └── qt.conf
        ├── lib
        │   ├── libavcodec.so.59
        │   ├── libavformat.so.59
        │   ├── libavutil.so.57
        │   ├── libbz2.so.1
        │   ├── libdbus-1.so.3
        │   ├── libffi.so.8
        │   ├── libFLAC.so.8
        │   ├── libGLESv2.so.2
        │   ├── libglib-2.0.so.0
        │   ├── libgmodule-2.0.so.0
        │   ├── libgobject-2.0.so.0
        │   ├── libgstallocators-1.0.so.0
        │   ├── libgstapp-1.0.so.0
        │   ├── libgstaudio-1.0.so.0
        │   ├── libgstbase-1.0.so.0
        │   ├── libgstgl-1.0.so.0
        │   ├── libgstpbutils-1.0.so.0
        │   ├── libgstphotography-1.0.so.0
        │   ├── libgstreamer-1.0.so.0
        │   ├── libgsttag-1.0.so.0
        │   ├── libgstvideo-1.0.so.0
        │   ├── libicudata.so.70
        │   ├── libicui18n.so.70
        │   ├── libicuuc.so.70
        │   ├── libjpeg.so.62
        │   ├── liblzma.so.5
        │   ├── libogg.so.0
        │   ├── liborc-0.4.so.0
        │   ├── libpcre2-16.so.0
        │   ├── libpcre.so.1
        │   ├── libpng16.so.16
        │   ├── libpulsecommon-15.0.so
        │   ├── libpulse.so.0
        │   ├── libQt6Core.so.6
        │   ├── libQt6DBus.so.6
        │   ├── libQt6Gui.so.6
        │   ├── libQt6LabsFolderListModel.so.6
        │   ├── libQt6LabsQmlModels.so.6
        │   ├── libQt6MultimediaQuick.so.6
        │   ├── libQt6Multimedia.so.6
        │   ├── libQt6Network.so.6
        │   ├── libQt6OpenGL.so.6
        │   ├── libQt6QmlCore.so.6
        │   ├── libQt6QmlLocalStorage.so.6
        │   ├── libQt6QmlModels.so.6
        │   ├── libQt6Qml.so.6
        │   ├── libQt6QmlWorkerScript.so.6
        │   ├── libQt6QmlXmlListModel.so.6
        │   ├── libQt6Quick3DAssetImport.so.6
        │   ├── libQt6Quick3DAssetUtils.so.6
        │   ├── libQt6Quick3DEffects.so.6
        │   ├── libQt6Quick3DHelpersImpl.so.6
        │   ├── libQt6Quick3DHelpers.so.6
        │   ├── libQt6Quick3DParticleEffects.so.6
        │   ├── libQt6Quick3DParticles.so.6
        │   ├── libQt6Quick3DPhysicsHelpers.so.6
        │   ├── libQt6Quick3DPhysics.so.6
        │   ├── libQt6Quick3DRuntimeRender.so.6
        │   ├── libQt6Quick3D.so.6
        │   ├── libQt6Quick3DSpatialAudio.so.6
        │   ├── libQt6Quick3DUtils.so.6
        │   ├── libQt6QuickControls2Impl.so.6
        │   ├── libQt6QuickControls2.so.6
        │   ├── libQt6QuickDialogs2QuickImpl.so.6
        │   ├── libQt6QuickDialogs2.so.6
        │   ├── libQt6QuickDialogs2Utils.so.6
        │   ├── libQt6QuickEffects.so.6
        │   ├── libQt6QuickLayouts.so.6
        │   ├── libQt6QuickParticles.so.6
        │   ├── libQt6QuickShapes.so.6
        │   ├── libQt6Quick.so.6
        │   ├── libQt6QuickTemplates2.so.6
        │   ├── libQt6QuickTest.so.6
        │   ├── libQt6QuickTimeline.so.6
        │   ├── libQt6SensorsQuick.so.6
        │   ├── libQt6Sensors.so.6
        │   ├── libQt6ShaderTools.so.6
        │   ├── libQt6SpatialAudio.so.6
        │   ├── libQt6Sql.so.6
        │   ├── libQt6Test.so.6
        │   ├── libQt6WaylandCompositor.so.6
        │   ├── libsensorsquickplugin.so
        │   ├── libsndfile.so.1
        │   ├── libswresample.so.4
        │   ├── libswscale.so.6
        │   ├── libtheoradec.so.1
        │   ├── libtheoraenc.so.1
        │   ├── libvorbisenc.so.2
        │   ├── libvorbis.so.0
        │   ├── libwayland-client.so.0
        │   ├── libwayland-cursor.so.0
        │   ├── libwayland-egl.so.1
        │   ├── libwayland-server.so.0
        │   ├── libxkbcommon.so.0
        │   └── libzstd.so.1
        ├── plugins
        │   ├── imageformats
        │   │   ├── libqgif.so
        │   │   ├── libqico.so
        │   │   └── libqjpeg.so
        │   ├── multimedia
        │   │   ├── libffmpegmediaplugin.so
        │   │   └── libgstreamermediaplugin.so
        │   ├── platforminputcontexts
        │   │   ├── libcomposeplatforminputcontextplugin.so
        │   │   └── libibusplatforminputcontextplugin.so
        │   ├── platforms
        │   │   └── libqxcb.so
        │   ├── platformthemes
        │   │   └── libqxdgdesktopportal.so
        │   └── tls
        │       ├── libqcertonlybackend.so
        │       └── libqopensslbackend.so
        ├── qml
        │   ├── Qt
        │   │   └── labs
        │   │       ├── folderlistmodel
        │   │       │   ├── libqmlfolderlistmodelplugin.so
        │   │       │   └── qmldir
        │   │       └── qmlmodels
        │   │           ├── liblabsmodelsplugin.so
        │   │           └── qmldir
        │   ├── QtCore
        │   │   ├── libqtqmlcoreplugin.so
        │   │   └── qmldir
        │   ├── QtMultimedia
        │   │   ├── libquickmultimediaplugin.so
        │   │   ├── qmldir
        │   │   └── Video.qml
        │   ├── QtQml
        │   │   ├── Base
        │   │   │   ├── libqmlplugin.so
        │   │   │   └── qmldir
        │   │   ├── libqmlmetaplugin.so
        │   │   ├── Models
        │   │   │   ├── libmodelsplugin.so
        │   │   │   └── qmldir
        │   │   ├── qmldir
        │   │   ├── WorkerScript
        │   │   │   ├── libworkerscriptplugin.so
        │   │   │   └── qmldir
        │   │   └── XmlListModel
        │   │       ├── libqmlxmllistmodelplugin.so
        │   │       └── qmldir
        │   ├── QtQuick
        │   │   ├── Controls
        │   │   │   ├── Basic
        │   │   │   │   ├── AbstractButton.qml
        │   │   │   │   ├── ActionGroup.qml
        │   │   │   │   ├── Action.qml
        │   │   │   │   ├── ApplicationWindow.qml
        │   │   │   │   ├── BusyIndicator.qml
        │   │   │   │   ├── ButtonGroup.qml
        │   │   │   │   ├── Button.qml
        │   │   │   │   ├── CalendarModel.qml
        │   │   │   │   ├── Calendar.qml
        │   │   │   │   ├── CheckBox.qml
        │   │   │   │   ├── CheckDelegate.qml
        │   │   │   │   ├── ComboBox.qml
        │   │   │   │   ├── Container.qml
        │   │   │   │   ├── Control.qml
        │   │   │   │   ├── DayOfWeekRow.qml
        │   │   │   │   ├── DelayButton.qml
        │   │   │   │   ├── DialogButtonBox.qml
        │   │   │   │   ├── Dialog.qml
        │   │   │   │   ├── Dial.qml
        │   │   │   │   ├── Drawer.qml
        │   │   │   │   ├── Frame.qml
        │   │   │   │   ├── GroupBox.qml
        │   │   │   │   ├── HorizontalHeaderView.qml
        │   │   │   │   ├── impl
        │   │   │   │   │   ├── libqtquickcontrols2basicstyleimplplugin.so
        │   │   │   │   │   └── qmldir
        │   │   │   │   ├── ItemDelegate.qml
        │   │   │   │   ├── Label.qml
        │   │   │   │   ├── libqtquickcontrols2basicstyleplugin.so
        │   │   │   │   ├── MenuBarItem.qml
        │   │   │   │   ├── MenuBar.qml
        │   │   │   │   ├── MenuItem.qml
        │   │   │   │   ├── Menu.qml
        │   │   │   │   ├── MenuSeparator.qml
        │   │   │   │   ├── MonthGrid.qml
        │   │   │   │   ├── PageIndicator.qml
        │   │   │   │   ├── Page.qml
        │   │   │   │   ├── Pane.qml
        │   │   │   │   ├── Popup.qml
        │   │   │   │   ├── ProgressBar.qml
        │   │   │   │   ├── qmldir
        │   │   │   │   ├── RadioButton.qml
        │   │   │   │   ├── RadioDelegate.qml
        │   │   │   │   ├── RangeSlider.qml
        │   │   │   │   ├── RoundButton.qml
        │   │   │   │   ├── ScrollBar.qml
        │   │   │   │   ├── ScrollIndicator.qml
        │   │   │   │   ├── ScrollView.qml
        │   │   │   │   ├── SelectionRectangle.qml
        │   │   │   │   ├── Slider.qml
        │   │   │   │   ├── SpinBox.qml
        │   │   │   │   ├── SplitView.qml
        │   │   │   │   ├── StackView.qml
        │   │   │   │   ├── SwipeDelegate.qml
        │   │   │   │   ├── SwipeView.qml
        │   │   │   │   ├── SwitchDelegate.qml
        │   │   │   │   ├── Switch.qml
        │   │   │   │   ├── TabBar.qml
        │   │   │   │   ├── TabButton.qml
        │   │   │   │   ├── TextArea.qml
        │   │   │   │   ├── TextField.qml
        │   │   │   │   ├── ToolBar.qml
        │   │   │   │   ├── ToolButton.qml
        │   │   │   │   ├── ToolSeparator.qml
        │   │   │   │   ├── ToolTip.qml
        │   │   │   │   ├── TreeViewDelegate.qml
        │   │   │   │   ├── Tumbler.qml
        │   │   │   │   ├── VerticalHeaderView.qml
        │   │   │   │   └── WeekNumberColumn.qml
        │   │   │   ├── Fusion
        │   │   │   │   ├── ApplicationWindow.qml
        │   │   │   │   ├── BusyIndicator.qml
        │   │   │   │   ├── Button.qml
        │   │   │   │   ├── CheckBox.qml
        │   │   │   │   ├── CheckDelegate.qml
        │   │   │   │   ├── ComboBox.qml
        │   │   │   │   ├── DelayButton.qml
        │   │   │   │   ├── DialogButtonBox.qml
        │   │   │   │   ├── Dialog.qml
        │   │   │   │   ├── Dial.qml
        │   │   │   │   ├── Drawer.qml
        │   │   │   │   ├── Frame.qml
        │   │   │   │   ├── GroupBox.qml
        │   │   │   │   ├── HorizontalHeaderView.qml
        │   │   │   │   ├── impl
        │   │   │   │   │   ├── ButtonPanel.qml
        │   │   │   │   │   ├── CheckIndicator.qml
        │   │   │   │   │   ├── libqtquickcontrols2fusionstyleimplplugin.so
        │   │   │   │   │   ├── qmldir
        │   │   │   │   │   ├── RadioIndicator.qml
        │   │   │   │   │   ├── SliderGroove.qml
        │   │   │   │   │   ├── SliderHandle.qml
        │   │   │   │   │   └── SwitchIndicator.qml
        │   │   │   │   ├── ItemDelegate.qml
        │   │   │   │   ├── Label.qml
        │   │   │   │   ├── libqtquickcontrols2fusionstyleplugin.so
        │   │   │   │   ├── MenuBarItem.qml
        │   │   │   │   ├── MenuBar.qml
        │   │   │   │   ├── MenuItem.qml
        │   │   │   │   ├── Menu.qml
        │   │   │   │   ├── MenuSeparator.qml
        │   │   │   │   ├── PageIndicator.qml
        │   │   │   │   ├── Page.qml
        │   │   │   │   ├── Pane.qml
        │   │   │   │   ├── Popup.qml
        │   │   │   │   ├── ProgressBar.qml
        │   │   │   │   ├── qmldir
        │   │   │   │   ├── RadioButton.qml
        │   │   │   │   ├── RadioDelegate.qml
        │   │   │   │   ├── RangeSlider.qml
        │   │   │   │   ├── RoundButton.qml
        │   │   │   │   ├── ScrollBar.qml
        │   │   │   │   ├── ScrollIndicator.qml
        │   │   │   │   ├── ScrollView.qml
        │   │   │   │   ├── SelectionRectangle.qml
        │   │   │   │   ├── Slider.qml
        │   │   │   │   ├── SpinBox.qml
        │   │   │   │   ├── SplitView.qml
        │   │   │   │   ├── SwipeDelegate.qml
        │   │   │   │   ├── SwitchDelegate.qml
        │   │   │   │   ├── Switch.qml
        │   │   │   │   ├── TabBar.qml
        │   │   │   │   ├── TabButton.qml
        │   │   │   │   ├── TextArea.qml
        │   │   │   │   ├── TextField.qml
        │   │   │   │   ├── ToolBar.qml
        │   │   │   │   ├── ToolButton.qml
        │   │   │   │   ├── ToolSeparator.qml
        │   │   │   │   ├── ToolTip.qml
        │   │   │   │   ├── TreeViewDelegate.qml
        │   │   │   │   ├── Tumbler.qml
        │   │   │   │   └── VerticalHeaderView.qml
        │   │   │   ├── Imagine
        │   │   │   │   ├── ApplicationWindow.qml
        │   │   │   │   ├── BusyIndicator.qml
        │   │   │   │   ├── Button.qml
        │   │   │   │   ├── CheckBox.qml
        │   │   │   │   ├── CheckDelegate.qml
        │   │   │   │   ├── ComboBox.qml
        │   │   │   │   ├── DelayButton.qml
        │   │   │   │   ├── DialogButtonBox.qml
        │   │   │   │   ├── Dialog.qml
        │   │   │   │   ├── Dial.qml
        │   │   │   │   ├── Drawer.qml
        │   │   │   │   ├── Frame.qml
        │   │   │   │   ├── GroupBox.qml
        │   │   │   │   ├── HorizontalHeaderView.qml
        │   │   │   │   ├── impl
        │   │   │   │   │   ├── libqtquickcontrols2imaginestyleimplplugin.so
        │   │   │   │   │   ├── OpacityMask.qml
        │   │   │   │   │   └── qmldir
        │   │   │   │   ├── ItemDelegate.qml
        │   │   │   │   ├── Label.qml
        │   │   │   │   ├── libqtquickcontrols2imaginestyleplugin.so
        │   │   │   │   ├── MenuItem.qml
        │   │   │   │   ├── Menu.qml
        │   │   │   │   ├── MenuSeparator.qml
        │   │   │   │   ├── PageIndicator.qml
        │   │   │   │   ├── Page.qml
        │   │   │   │   ├── Pane.qml
        │   │   │   │   ├── Popup.qml
        │   │   │   │   ├── ProgressBar.qml
        │   │   │   │   ├── qmldir
        │   │   │   │   ├── RadioButton.qml
        │   │   │   │   ├── RadioDelegate.qml
        │   │   │   │   ├── RangeSlider.qml
        │   │   │   │   ├── RoundButton.qml
        │   │   │   │   ├── ScrollBar.qml
        │   │   │   │   ├── ScrollIndicator.qml
        │   │   │   │   ├── ScrollView.qml
        │   │   │   │   ├── SelectionRectangle.qml
        │   │   │   │   ├── Slider.qml
        │   │   │   │   ├── SpinBox.qml
        │   │   │   │   ├── SplitView.qml
        │   │   │   │   ├── StackView.qml
        │   │   │   │   ├── SwipeDelegate.qml
        │   │   │   │   ├── SwipeView.qml
        │   │   │   │   ├── SwitchDelegate.qml
        │   │   │   │   ├── Switch.qml
        │   │   │   │   ├── TabBar.qml
        │   │   │   │   ├── TabButton.qml
        │   │   │   │   ├── TextArea.qml
        │   │   │   │   ├── TextField.qml
        │   │   │   │   ├── ToolBar.qml
        │   │   │   │   ├── ToolButton.qml
        │   │   │   │   ├── ToolSeparator.qml
        │   │   │   │   ├── ToolTip.qml
        │   │   │   │   ├── Tumbler.qml
        │   │   │   │   └── VerticalHeaderView.qml
        │   │   │   ├── impl
        │   │   │   │   ├── libqtquickcontrols2implplugin.so
        │   │   │   │   └── qmldir
        │   │   │   ├── libqtquickcontrols2plugin.so
        │   │   │   ├── Material
        │   │   │   │   ├── ApplicationWindow.qml
        │   │   │   │   ├── BusyIndicator.qml
        │   │   │   │   ├── Button.qml
        │   │   │   │   ├── CheckBox.qml
        │   │   │   │   ├── CheckDelegate.qml
        │   │   │   │   ├── ComboBox.qml
        │   │   │   │   ├── DelayButton.qml
        │   │   │   │   ├── DialogButtonBox.qml
        │   │   │   │   ├── Dialog.qml
        │   │   │   │   ├── Dial.qml
        │   │   │   │   ├── Drawer.qml
        │   │   │   │   ├── Frame.qml
        │   │   │   │   ├── GroupBox.qml
        │   │   │   │   ├── HorizontalHeaderView.qml
        │   │   │   │   ├── impl
        │   │   │   │   │   ├── BoxShadow.qml
        │   │   │   │   │   ├── CheckIndicator.qml
        │   │   │   │   │   ├── CursorDelegate.qml
        │   │   │   │   │   ├── ElevationEffect.qml
        │   │   │   │   │   ├── libqtquickcontrols2materialstyleimplplugin.so
        │   │   │   │   │   ├── qmldir
        │   │   │   │   │   ├── RadioIndicator.qml
        │   │   │   │   │   ├── RectangularGlow.qml
        │   │   │   │   │   ├── RoundedElevationEffect.qml
        │   │   │   │   │   ├── SliderHandle.qml
        │   │   │   │   │   └── SwitchIndicator.qml
        │   │   │   │   ├── ItemDelegate.qml
        │   │   │   │   ├── Label.qml
        │   │   │   │   ├── libqtquickcontrols2materialstyleplugin.so
        │   │   │   │   ├── MenuBarItem.qml
        │   │   │   │   ├── MenuBar.qml
        │   │   │   │   ├── MenuItem.qml
        │   │   │   │   ├── Menu.qml
        │   │   │   │   ├── MenuSeparator.qml
        │   │   │   │   ├── PageIndicator.qml
        │   │   │   │   ├── Page.qml
        │   │   │   │   ├── Pane.qml
        │   │   │   │   ├── Popup.qml
        │   │   │   │   ├── ProgressBar.qml
        │   │   │   │   ├── qmldir
        │   │   │   │   ├── RadioButton.qml
        │   │   │   │   ├── RadioDelegate.qml
        │   │   │   │   ├── RangeSlider.qml
        │   │   │   │   ├── RoundButton.qml
        │   │   │   │   ├── ScrollBar.qml
        │   │   │   │   ├── ScrollIndicator.qml
        │   │   │   │   ├── ScrollView.qml
        │   │   │   │   ├── SelectionRectangle.qml
        │   │   │   │   ├── Slider.qml
        │   │   │   │   ├── SpinBox.qml
        │   │   │   │   ├── SplitView.qml
        │   │   │   │   ├── StackView.qml
        │   │   │   │   ├── SwipeDelegate.qml
        │   │   │   │   ├── SwipeView.qml
        │   │   │   │   ├── SwitchDelegate.qml
        │   │   │   │   ├── Switch.qml
        │   │   │   │   ├── TabBar.qml
        │   │   │   │   ├── TabButton.qml
        │   │   │   │   ├── TextArea.qml
        │   │   │   │   ├── TextField.qml
        │   │   │   │   ├── ToolBar.qml
        │   │   │   │   ├── ToolButton.qml
        │   │   │   │   ├── ToolSeparator.qml
        │   │   │   │   ├── ToolTip.qml
        │   │   │   │   ├── TreeViewDelegate.qml
        │   │   │   │   ├── Tumbler.qml
        │   │   │   │   └── VerticalHeaderView.qml
        │   │   │   ├── qmldir
        │   │   │   └── Universal
        │   │   │       ├── ApplicationWindow.qml
        │   │   │       ├── BusyIndicator.qml
        │   │   │       ├── Button.qml
        │   │   │       ├── CheckBox.qml
        │   │   │       ├── CheckDelegate.qml
        │   │   │       ├── ComboBox.qml
        │   │   │       ├── DelayButton.qml
        │   │   │       ├── DialogButtonBox.qml
        │   │   │       ├── Dialog.qml
        │   │   │       ├── Dial.qml
        │   │   │       ├── Drawer.qml
        │   │   │       ├── Frame.qml
        │   │   │       ├── GroupBox.qml
        │   │   │       ├── HorizontalHeaderView.qml
        │   │   │       ├── impl
        │   │   │       │   ├── CheckIndicator.qml
        │   │   │       │   ├── libqtquickcontrols2universalstyleimplplugin.so
        │   │   │       │   ├── qmldir
        │   │   │       │   ├── RadioIndicator.qml
        │   │   │       │   └── SwitchIndicator.qml
        │   │   │       ├── ItemDelegate.qml
        │   │   │       ├── Label.qml
        │   │   │       ├── libqtquickcontrols2universalstyleplugin.so
        │   │   │       ├── MenuBarItem.qml
        │   │   │       ├── MenuBar.qml
        │   │   │       ├── MenuItem.qml
        │   │   │       ├── Menu.qml
        │   │   │       ├── MenuSeparator.qml
        │   │   │       ├── PageIndicator.qml
        │   │   │       ├── Page.qml
        │   │   │       ├── Pane.qml
        │   │   │       ├── Popup.qml
        │   │   │       ├── ProgressBar.qml
        │   │   │       ├── qmldir
        │   │   │       ├── RadioButton.qml
        │   │   │       ├── RadioDelegate.qml
        │   │   │       ├── RangeSlider.qml
        │   │   │       ├── RoundButton.qml
        │   │   │       ├── ScrollBar.qml
        │   │   │       ├── ScrollIndicator.qml
        │   │   │       ├── ScrollView.qml
        │   │   │       ├── SelectionRectangle.qml
        │   │   │       ├── Slider.qml
        │   │   │       ├── SpinBox.qml
        │   │   │       ├── SplitView.qml
        │   │   │       ├── StackView.qml
        │   │   │       ├── SwipeDelegate.qml
        │   │   │       ├── SwitchDelegate.qml
        │   │   │       ├── Switch.qml
        │   │   │       ├── TabBar.qml
        │   │   │       ├── TabButton.qml
        │   │   │       ├── TextArea.qml
        │   │   │       ├── TextField.qml
        │   │   │       ├── ToolBar.qml
        │   │   │       ├── ToolButton.qml
        │   │   │       ├── ToolSeparator.qml
        │   │   │       ├── ToolTip.qml
        │   │   │       ├── Tumbler.qml
        │   │   │       └── VerticalHeaderView.qml
        │   │   ├── Dialogs
        │   │   │   ├── libqtquickdialogsplugin.so
        │   │   │   ├── qmldir
        │   │   │   └── quickimpl
        │   │   │       ├── libqtquickdialogs2quickimplplugin.so
        │   │   │       ├── qml
        │   │   │       │   ├── ColorDialog.qml
        │   │   │       │   ├── ColorInputs.qml
        │   │   │       │   ├── FileDialogDelegateLabel.qml
        │   │   │       │   ├── FileDialogDelegate.qml
        │   │   │       │   ├── FileDialog.qml
        │   │   │       │   ├── FolderBreadcrumbBar.qml
        │   │   │       │   ├── FolderDialogDelegateLabel.qml
        │   │   │       │   ├── FolderDialogDelegate.qml
        │   │   │       │   ├── FolderDialog.qml
        │   │   │       │   ├── FontDialogContent.qml
        │   │   │       │   ├── FontDialog.qml
        │   │   │       │   ├── +Fusion
        │   │   │       │   │   ├── ColorDialog.qml
        │   │   │       │   │   ├── FileDialogDelegate.qml
        │   │   │       │   │   ├── FileDialog.qml
        │   │   │       │   │   ├── FolderBreadcrumbBar.qml
        │   │   │       │   │   ├── FolderDialogDelegate.qml
        │   │   │       │   │   ├── FolderDialog.qml
        │   │   │       │   │   ├── FontDialog.qml
        │   │   │       │   │   └── MessageDialog.qml
        │   │   │       │   ├── HueGradient.qml
        │   │   │       │   ├── +Imagine
        │   │   │       │   │   ├── ColorDialog.qml
        │   │   │       │   │   ├── FileDialogDelegate.qml
        │   │   │       │   │   ├── FileDialog.qml
        │   │   │       │   │   ├── FolderBreadcrumbBar.qml
        │   │   │       │   │   ├── FolderDialogDelegate.qml
        │   │   │       │   │   ├── FolderDialog.qml
        │   │   │       │   │   ├── FontDialog.qml
        │   │   │       │   │   └── MessageDialog.qml
        │   │   │       │   ├── +Material
        │   │   │       │   │   ├── ColorDialog.qml
        │   │   │       │   │   ├── FileDialogDelegate.qml
        │   │   │       │   │   ├── FileDialog.qml
        │   │   │       │   │   ├── FolderBreadcrumbBar.qml
        │   │   │       │   │   ├── FolderDialogDelegate.qml
        │   │   │       │   │   ├── FolderDialog.qml
        │   │   │       │   │   ├── FontDialog.qml
        │   │   │       │   │   └── MessageDialog.qml
        │   │   │       │   ├── MessageDialog.qml
        │   │   │       │   ├── PickerHandle.qml
        │   │   │       │   ├── SaturationLightnessPicker.qml
        │   │   │       │   └── +Universal
        │   │   │       │       ├── ColorDialog.qml
        │   │   │       │       ├── FileDialogDelegate.qml
        │   │   │       │       ├── FileDialog.qml
        │   │   │       │       ├── FolderBreadcrumbBar.qml
        │   │   │       │       ├── FolderDialogDelegate.qml
        │   │   │       │       ├── FolderDialog.qml
        │   │   │       │       ├── FontDialog.qml
        │   │   │       │       └── MessageDialog.qml
        │   │   │       └── qmldir
        │   │   ├── Effects
        │   │   │   ├── libeffectsplugin.so
        │   │   │   └── qmldir
        │   │   ├── Layouts
        │   │   │   ├── libqquicklayoutsplugin.so
        │   │   │   └── qmldir
        │   │   ├── libqtquick2plugin.so
        │   │   ├── LocalStorage
        │   │   │   ├── libqmllocalstorageplugin.so
        │   │   │   └── qmldir
        │   │   ├── NativeStyle
        │   │   │   ├── controls
        │   │   │   │   ├── DefaultButton.qml
        │   │   │   │   ├── DefaultCheckBox.qml
        │   │   │   │   ├── DefaultComboBox.qml
        │   │   │   │   ├── DefaultDial.qml
        │   │   │   │   ├── DefaultFrame.qml
        │   │   │   │   ├── DefaultGroupBox.qml
        │   │   │   │   ├── DefaultProgressBar.qml
        │   │   │   │   ├── DefaultRadioButton.qml
        │   │   │   │   ├── DefaultScrollBar.qml
        │   │   │   │   ├── DefaultSlider.qml
        │   │   │   │   ├── DefaultSpinBox.qml
        │   │   │   │   ├── DefaultTextArea.qml
        │   │   │   │   ├── DefaultTextField.qml
        │   │   │   │   └── DefaultTreeViewDelegate.qml
        │   │   │   ├── libqtquickcontrols2nativestyleplugin.so
        │   │   │   └── qmldir
        │   │   ├── Particles
        │   │   │   ├── libparticlesplugin.so
        │   │   │   └── qmldir
        │   │   ├── qmldir
        │   │   ├── Shapes
        │   │   │   ├── libqmlshapesplugin.so
        │   │   │   └── qmldir
        │   │   ├── Templates
        │   │   │   ├── libqtquicktemplates2plugin.so
        │   │   │   └── qmldir
        │   │   ├── Timeline
        │   │   │   ├── libqtquicktimelineplugin.so
        │   │   │   └── qmldir
        │   │   ├── tooling
        │   │   │   ├── Component.qml
        │   │   │   ├── Enum.qml
        │   │   │   ├── libquicktoolingplugin.so
        │   │   │   ├── Member.qml
        │   │   │   ├── Method.qml
        │   │   │   ├── Module.qml
        │   │   │   ├── Parameter.qml
        │   │   │   ├── Property.qml
        │   │   │   ├── qmldir
        │   │   │   └── Signal.qml
        │   │   └── Window
        │   │       ├── libquickwindowplugin.so
        │   │       └── qmldir
        │   ├── QtQuick3D
        │   │   ├── AssetUtils
        │   │   │   ├── libqtquick3dassetutilsplugin.so
        │   │   │   └── qmldir
        │   │   ├── Effects
        │   │   │   ├── AdditiveColorGradient.qml
        │   │   │   ├── Blur.qml
        │   │   │   ├── BrushStrokes.qml
        │   │   │   ├── ChromaticAberration.qml
        │   │   │   ├── ColorMaster.qml
        │   │   │   ├── DepthOfFieldHQBlur.qml
        │   │   │   ├── Desaturate.qml
        │   │   │   ├── DistortionRipple.qml
        │   │   │   ├── DistortionSphere.qml
        │   │   │   ├── DistortionSpiral.qml
        │   │   │   ├── EdgeDetect.qml
        │   │   │   ├── Emboss.qml
        │   │   │   ├── Flip.qml
        │   │   │   ├── Fxaa.qml
        │   │   │   ├── GaussianBlur.qml
        │   │   │   ├── HDRBloomTonemap.qml
        │   │   │   ├── libqtquick3deffectplugin.so
        │   │   │   ├── MotionBlur.qml
        │   │   │   ├── qmldir
        │   │   │   ├── Scatter.qml
        │   │   │   ├── SCurveTonemap.qml
        │   │   │   ├── TiltShift.qml
        │   │   │   └── Vignette.qml
        │   │   ├── Helpers
        │   │   │   ├── AxisHelper.qml
        │   │   │   ├── DebugView.qml
        │   │   │   ├── ExtendedSceneEnvironment.qml
        │   │   │   ├── impl
        │   │   │   │   ├── DepthOfFieldBlur.qml
        │   │   │   │   ├── libqtquick3dhelpersimplplugin.so
        │   │   │   │   ├── LightmapperOutputWindow.qml
        │   │   │   │   ├── qmldir
        │   │   │   │   └── SceneEffect.qml
        │   │   │   ├── libqtquick3dhelpersplugin.so
        │   │   │   ├── LodManager.qml
        │   │   │   ├── meshes
        │   │   │   │   └── axisGrid.mesh
        │   │   │   ├── OrbitCameraController.qml
        │   │   │   ├── qmldir
        │   │   │   └── WasdController.qml
        │   │   ├── libqquick3dplugin.so
        │   │   ├── MaterialEditor
        │   │   │   ├── AboutDialog.qml
        │   │   │   ├── EditorView.qml
        │   │   │   ├── FrostedGlass.qml
        │   │   │   ├── main.qml
        │   │   │   ├── MaterialPropertiesPane.qml
        │   │   │   ├── PreviewControls.qml
        │   │   │   ├── Preview.qml
        │   │   │   ├── qmldir
        │   │   │   ├── SaveChangesDialog.qml
        │   │   │   ├── ShaderEditor.qml
        │   │   │   └── UniformManagerPane.qml
        │   │   ├── ParticleEffects
        │   │   │   ├── libqtquick3dparticleeffectsplugin.so
        │   │   │   └── qmldir
        │   │   ├── Particles3D
        │   │   │   ├── libqtquick3dparticles3dplugin.so
        │   │   │   └── qmldir
        │   │   ├── Physics
        │   │   │   ├── Helpers
        │   │   │   │   ├── libqtquick3dphysicshelpersplugin.so
        │   │   │   │   └── qmldir
        │   │   │   ├── libqquick3dphysicsplugin.so
        │   │   │   └── qmldir
        │   │   ├── qmldir
        │   │   └── SpatialAudio
        │   │       ├── libquick3dspatialaudioplugin.so
        │   │       └── qmldir
        │   ├── QtTest
        │   │   ├── libquicktestplugin.so
        │   │   ├── qmldir
        │   │   ├── SignalSpy.qml
        │   │   ├── TestCase.qml
        │   │   ├── testlogger.js
        │   │   └── TestSchedule.qml
        │   └── QtWayland
        │       └── Compositor
        │           ├── IviApplication
        │           │   ├── libwaylandcompositoriviapplicationplugin.so
        │           │   └── qmldir
        │           ├── libqwaylandcompositorplugin.so
        │           ├── PresentationTime
        │           │   ├── libwaylandcompositorpresentationtimeplugin.so
        │           │   └── qmldir
        │           ├── qmldir
        │           ├── qmlfiles
        │           │   ├── WaylandCursorItem.qml
        │           │   └── WaylandOutputWindow.qml
        │           ├── QtShell
        │           │   ├── libwaylandcompositorqtshellplugin.so
        │           │   └── qmldir
        │           ├── TextureSharingExtension
        │           │   ├── libwaylandtexturesharingextensionplugin.so
        │           │   └── qmldir
        │           ├── WlShell
        │           │   ├── libwaylandcompositorwlshellplugin.so
        │           │   └── qmldir
        │           └── XdgShell
        │               ├── libwaylandcompositorxdgshellplugin.so
        │               └── qmldir
        └── share
            ├── applications
            │   └── dice.desktop
            └── icons
                └── hicolor
                    ├── 128x128
                    │   └── apps
                    ├── 160x160
                    │   └── apps
                    │       └── dice.png
                    ├── 16x16
                    │   └── apps
                    ├── 256x256
                    │   └── apps
                    ├── 32x32
                    │   └── apps
                    ├── 64x64
                    │   └── apps
                    └── scalable
                        └── apps
    
    94 directories, 625 files
    
  4. TheAssassin commented on Apr 24, 2024

    @TheAssassin
    Member

    PRs welcome. Wayland is becoming more of a thing lately and we should support it better. Adding those libraries used to cause a lot of issues, if it got better, it's time to re-add them.

  5. tresf commented on Feb 13, 2025

    @tresf

    Just adding them as EXTRA_PLATFORM_PLUGINS does not seem to add all the needed files.

    According to this article, it may be pretty close to working, quoting:

    Copy the three directories to your QCAD plugins folder:

    plugins/wayland-decoration-client
    plugins/wayland-graphics-integration-client
    plugins/wayland-shell-integration
    

    I noticed that these plugins are already mentioned here:

    bool WaylandcompositorPluginsDeployer::doDeploy() {
    return deployStandardQtPlugins({"wayland-decoration-client",
    "wayland-graphics-integration-client",
    "wayland-shell-integration",});
    }

    How do we add these to a build?

  6. tresf commented on Feb 13, 2025

    @tresf

    How do we add these to a build?

    This seems to do the trick:

    export EXTRA_PLATFORM_PLUGINS=libqwayland-generic.so
    export EXTRA_QT_MODULES="waylandcompositor"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions