owncloud / client

🖥️ Desktop Syncing Client for ownCloud
GNU General Public License v2.0
1.4k stars 667 forks source link

Wayland support #8328

Closed jonathanernst closed 1 month ago

jonathanernst commented 3 years ago

Expected behaviour

Running owncloud client under wayland should be possible.

Actual behaviour

Owncloud client crashes.

export QT_QPA_PLATFORM=wayland owncloud Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway. 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.

Available platform plugins are: linuxfb, minimal, offscreen, vnc, xcb.

Abandon (core dumped)

Steps to reproduce

  1. Force wayland platform usage with export QT_QPA_PLATFORM=wayland
  2. Run owncloud
  3. Crash

Client configuration

Client version: 2.7.4

Operating system: Ubuntu 20.04

OS language: French

Qt version used by client package (Linux only, see also Settings dialog): 5.12.9

Client package (From ownCloud or distro) (Linux only): From owncloud

jnweiger commented 3 years ago

On my ubuntu 20.4 box: Looks like we simply do not ship a wayland plugin

dpkg -L ocqt5129-libqt5gui5  | grep platforms
/opt/ownCloud/qt-5.12.9/lib/x86_64-linux-gnu/qt5/plugins/platforms
/opt/ownCloud/qt-5.12.9/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so
/opt/ownCloud/qt-5.12.9/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so
/opt/ownCloud/qt-5.12.9/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so
/opt/ownCloud/qt-5.12.9/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so
/opt/ownCloud/qt-5.12.9/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so

@gabi18 probably similar issue with openSUSE-15.2

TheOneRing commented 3 years ago

Its a separate module https://github.com/qt/qtwayland

gabi18 commented 3 years ago

Reproducible on openSUSE Leap 15.2:

export QT_QPA_PLATFORM=wayland owncloud 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.

Available platform plugins are: linuxfb, minimal, offscreen, vnc, xcb.

Aborted (core dumped)

jnweiger commented 3 years ago

Wayland module coming up in https://build.opensuse.org/package/show/isv:ownCloud:Qt51210/ocqt51210-qt5-qtwayland

jnweiger commented 3 years ago

Testing needed:

echo >> /etc/apt/sources.list.d/owncloud-test.list "deb https://download.owncloud.com/desktop/testpilotcloud/daily/2.7/linux/Ubuntu_20.04/ /"
echo >> /etc/apt/sources.list.d/owncloud-test.list "deb http://download.opensuse.org/repositories/isv:/ownCloud:/Qt51210/Ubuntu_20.04/ /"
apt update
apt install testpilotcloud-client
apt install ocqt51210-qtwayland5
testpilotcloud --version
testpilotcloud 2.7.5daily20210108 (build 3012) Jan  6 2021 01:33:14
https://github.com/owncloud/client/commit/4ab81e903f83f9720e82dddadb939d9952ed8cd6
Libraries Qt 5.12.10, OpenSSL 1.1.1f  31 Mar 2020
Using virtual files plugin: suffix

On a machine with an X11 Desktop I get:

env XDG_SESSION_TYPE=wayland QT_QPA_PLATFORM=wayland testpilotcloud
Failed to create wl_display (No such file or directory)
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: linuxfb, minimal, offscreen, vnc, wayland, xcb.

Aborted (core dumped)

At least it loads a wayland platform plugin, when forced :-)

jnweiger commented 3 years ago

Logged in with the "Ubuntu on wayland" option selected, when the login manager asks for password: image


image

It somewhat runs, but no window decoration and cannot be moved or minified. Tray icon is missing. Fonts are huge. Somewhat difficult to use. The hellowayland test tool (seen on the right) has window decoration.

@jonathanernst I am new to wayland, not sure wht is wrong. It may be a miscompilation on my side when generating the qtwayland5 module, or it maybe something in the client code, or a confing thing... any ideas?

I have /usr/sbin/gdm, gdm-session-worker, /usr/lib/gdm3/gdm-wayland-session and /usr/libexec/gnome-session-binary running. Sway is installed, but does not seem to start automatically.

jonathanernst commented 3 years ago

@jnweiger first of all thanks a lot for your interest in this feature! Owncloud is one of the last application I use that is not wayland aware and look ugly with fractional scaling on my screen :-)

I've tried your test version in both Ubuntu 20.04 et 20.10 and get the same results as you. I can confirm that it's using wayland with xeyes and can see that the fonts are now perfect but I have no decorations. Unfortunately as I don't have this issue with other wayland-compatible apps I have currently no idea why you don't have decorations.

It might well come from the fact that with wayland the client (owncloud in this instance) is responsible for the window decoration by default. It seems also possible to have server side decorations though. Maybe this is relevant :-1:

=> maybe we need this xdg-decoration extension or a runtime ?

Hope it helps and thanks again!

Edit: It seems Mutter doesn't implement server side decorations (see for example https://github.com/dosbox-staging/dosbox-staging/issues/650), maybe the best route is to check the code used by the hellowayland example?

jnweiger commented 3 years ago

Probably very relevant pointers! Afaik, our desktop client currently does not know about client side decorations. At least to me, that is a new concept. Thank you so much for these hints! I am glad to test any progress we make or help with packaging.

In the meantime, I can only report: Same issue reproduced on Debian-10.7.0 with gnome3.

michaelstingl commented 3 years ago

Testing Wayland support is part of the 2.7.5 release testing: https://github.com/owncloud/client/issues/8349

jnweiger commented 3 years ago

Testing Wayland support is part of the 2.7.5 release testing: #8349

Prvoiding a missing dependency was part of the release preparations. But there is no more wayland testing planned for the release on top of what we discuss here.

@michaelstingl Do you want wayland support as a release blocker? I'd suggest to keep that independant of the release until you have a developer to look into that.

michaelstingl commented 3 years ago

No, not a blocker for 2.7.5. in case it’s not solved, we should mention it in the release communication and in the supported platform docs.

fmoc commented 3 years ago

I built the current master in a VM running an openSUSE Leap 15.2 live image with KDE, in a "full wayland" session. Everything looks fine in there:

screenshot_2021-04-15_17-34-52

For distribution, we probably just have to ship the wayland platform plugin(s). That's a little complex, but I'm sure we'll figure it out. Other than that, I think the client supports Wayland properly already.

Edit: I built the client against the system packages.

jonathanernst commented 3 years ago

@fmoc unfortunately to support GNOME/Mutter we still miss client side decoration

fmoc commented 3 years ago

screenshot_2021-04-17_14-55-52

This is openSUSE Leap 15.2 GNOME Live with a Wayland session, using QT_QPA_PLATFORM=wayland. I haven't tried Ubuntu with Mutter yet, but I presume any kind of issue is not caused by ownCloud.

fmoc commented 3 years ago

Tested on Ubuntu 20.04.2 with GNOME.

XWayland:

screenshot_2021-04-17_17-59-22

Native Wayland:

screenshot_2021-04-17_17-58-52

Built against system packages. I'm relatively confident that the ugly look is caused by Qt5, and there's nothing we can do about it. At least I couldn't find any fix while doing a bit of research on the issue...

fmoc commented 3 years ago

screenshot_2021-04-17_18-12-55

Problem apparently solved by enforcing the Gtk3 platform theme. The environment variables to set:


export QT_QPA_PLATFORM=wayland
export QT_QPA_PLATFORMTHEME=gtk3
TheOneRing commented 3 years ago

We might not have enabled building the gtk Plugin. It’s a qtbase build time switch.

fmoc commented 3 years ago

@jonathanernst could you please check whether setting that second environment variable solves the issue on your end as well?

fmoc commented 3 years ago

2.8 RC AppImage works fine on Leap 15.2 wand Ubuntu 20.04.2, both with GNOME. I had to set only QT_QPA_PLATFORM with it, since linuxdeploy-plugin-qt sets the QT_QPA_PLATFORMTHEME=gtk3 in a script in apprun-hooks already. I think we can close this issue.

ik8ozv commented 3 years ago

Please Since i upgraded Ubuntu to version 21.04, i have the same issue with gnuradio running any GRC file. Please any Help to avoid the problem? Thanks Enzo

michaelstingl commented 3 years ago

@ik8ozv please open a new issue and provide the full context.

ab412 commented 3 years ago

@ik8ozv I had the same issue on Ubuntu 21.04 for a different application. Changing to xcb solved it for me. I had to add the dependencies as highlighted here: https://forum.qt.io/topic/126864/how-to-resolve-qt-qpa-plugin-could-not-load-the-qt-platform-plugin-xcb-in-even-though-it-was-found-error/3:

  1. sudo apt install libxcb-icccm4 libxcb-xkb1 libxcb-icccm4 libxcb-image0 libxcb-render-util0 libxcb-randr0 libxcb-keysyms1 libxcb-xinerama0
  2. echo "export QT_QPA_PLATFORM=xcb" >> ~/.bash_profile && source ~/.bash_profile
jnweiger commented 3 years ago

Retested with 2.9.0 RC1

$ env QT_QPA_PLATFORM=wayland testpilotcloud
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.

image

The mentioned workaround, of using xcb instead of native wayland also works with 2.9.0

The warning message about QT_QPA_PLATFORM should be avoided when the suggested setting is actually in use.

TheOneRing commented 3 years ago

The warning is issued by Qt so we can ignore that part. So the remaining issue is again a lack of window decorations and that could be a setup issue as @fmoc was able to set it up correctly.

jnweiger commented 3 years ago

@fmoc would you share your secrets? :roll_eyes:

jnweiger commented 2 years ago

Same with 10.9.1-rc4: the client runs fine, but I still miss the secret how to get window decorations on my ubuntu-20.04 wayland test system.

I suggest to re-open here and document (or implement) the remaining steps.

PVahr commented 2 years ago

Issue still present in fresh Ubuntu 22.04, linux 5.15.40, gnome 42.2. Installed via apt. By default gives the segmentation fault reported above. Adding env QT_QPA_PLATFORM=wayland gives a more verbose crash:

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway. qt.qpa.plugin: Could not find the Qt platform plugin "gtk3" in "" This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb. Aborted (core dumped)

Apt suggests the packages: qt5-image-formats-plugins qtwayland5 Installing again owncloud-client with the flag sudo apt --install-suggests install owncloud-client installs qt5-image-formats-plugins qtwayland5 but does not fix the issue.

Did you found a fix? Is not so clear from the discussion above to me, but maybe I missed something.

pafgoncalves commented 2 years ago

If installed from the ownCloud repository it will work with wayland in Ubuntu 22.04

wget -nv https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/Ubuntu_22.04/Release.key -O - | sudo apt-key add - echo 'deb https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/Ubuntu_22.04/ /' | sudo tee -a /etc/apt/sources.list.d/owncloud.list sudo apt update sudo apt install owncloud-client

PVahr commented 2 years ago

Thanks a lot! This works for me, I can finally sync my stuff.

My problem was then not in the graphical engine, but - I guess - in some repository setting. Shall I open a new issue?

fmoc commented 2 years ago

@PVahr the version shipped by Debian is really old, there's no point in debugging those old versions, really. Our repositories use a much, much more recent Qt version and other up-to-date dependencies.

Since cannot provide support for these distro packages and your issue is clearly unrelated to the issue originally described, I'm hiding our comments as off topic.

kuateric commented 1 year ago

owncloud on Ubuntu 22.04 with Wayland still crashes. We use this routine for installing https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/download/ and we tried on 10 machines. Always the same behaviour. Ubuntu 22.04 is already a while there, there is still no proper fix for wayland. It is very frustrating. We are about to migrating to a different platform

fmoc commented 1 year ago

@kuateric what exactly is the terminal output, though? Are you using QT_QPA_PLATFORM=wayland? I can reproduce a crash only on Ubuntu 22.04 with that env var set (/tmp/.mount_ownClo7W2wIv/AppRun.wrapped: symbol lookup error: /lib/x86_64-linux-gnu/libEGL_mesa.so.0: undefined symbol: wl_proxy_marshal_flags).

On Fedora 36, for instance, the application starts up but misses window decorations.

screenshot_2022-10-17_14-25-30

Note that this is unrelated to packaging as an AppImage, apparently.

fmoc commented 1 year ago

Tracked the issue down to libwayland-client.so.0, which our AppImage ships. Removing it makes the AppImage work on Ubuntu 22.04 with QT_QPA_PLATFORM=wayland. This also makes the window decorations work on Fedora 36 (it's not pretty, but it's working). See below.

screenshot_2022-10-17_15-57-11

Not sure yet why the native packages aren't working.

Edit: this is what the client is looking like on Fedora 36 when using X11:

screenshot_2022-10-17_15-59-46

kuateric commented 1 year ago

Thank you for taking a look. Which on of these should i delete in order to get it work. grafik

Is it possible to set QT_QPA_PLATFORM=wayland permanently? if so how ?

Note that this is unrelated to packaging as an AppImage, apparently.

the problem is then related to the native packages here https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/download/? Is it not better to fix the issue in the native packages and make it easier for us to install it properly ?

Thanks

kuateric commented 1 year ago

i just set up a server on aws to test again. I installed owncloud following the link below. I applied QT_QPA_PLATFORM=wayland owncloud opens but it is not possible to go further than this. The next button somehow does not respond. image

kuateric commented 1 year ago

same behaviour without QT_QPA_PLATFORM=wayland

image

kuateric commented 1 year ago

now i deleted libwayland-client.so.0 and owncloud does not open anymore. image

I think that the installation procedure becomes too complicated for the everyday users. a more simple and functional installation routine would be great to have

fmoc commented 1 year ago

Seems like you've been busy, and may have damaged your system. I think we can repair it with reasonable effort, though. Next time, please wait for instructions explicitly. I'll respond to all your comments in a single post.

By the way, I am not sure whether a language barrier is causing problems here. If so, please let me know. We do not want you to understand us wrongly (and vice versa).

Which on of these should i delete in order to get it work.

None. I was discussing the contents of the AppImage. You're looking at system files. Please do not delete any files from your system randomly. (See below.)

Is it possible to set QT_QPA_PLATFORM=wayland permanently? if so how ?

I did not say you should use that. I was asking whether this is already set. To check, please open a terminal and type the following code snippet:

> echo "$QT_QPA_PLATFORM"

If it shows no output, you can assume it is not set. If there is any output, please post it here.

the problem is then related to the native packages here https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/download/? Is it not better to fix the issue in the native packages and make it easier for us to install it properly ?

Native packages are under investigation right now. Unfortunately, Ubuntu has made debugging in live CD VMs extremely hard with its snap stuff. I need to set up a proper VM.

i just set up a server on aws to test again.

For future tests, feel free to use https://demo.owncloud.org, https://demo.owncloud.com or https://ocis.owncloud.com.

owncloud opens but it is not possible to go further than this. The next button somehow does not respond. same behaviour without QT_QPA_PLATFORM=wayland

This is unexpected, and I cannot reproduce this on a vanilla (that means, freshly set up) system. It may be related to changes you performed on your system. Of course, I cannot tell which one exactly led to the problem. As long as I cannot reproduce the issue, I cannot tell you how to fix it.

now i deleted libwayland-client.so.0 and owncloud does not open anymore.

Again, nobody instructed you to delete this file from your system. You just broke your system to some extent.

Since you seem kind of unexperienced, I'd like to try to help you, though. Try running the following commands in a terminal to reinstall the library:

sudo apt-get update
sudo apt-get install --reinstall libwayland-client0

sudo might prompt you for your password, please enter it as instructed.

Generally, please never just randomly delete files from your system if you do not know what you're doing.

I think that the installation procedure becomes too complicated for the everyday users. a more simple and functional installation routine would be great to have

This is what our AppImage is for. It doesn't require root permissions, and is easier to use in general. The incompatibility with Wayland seems unrelated to the packaging format anyway.

kuateric commented 1 year ago

here is a typical behaviour we have on our ubuntu servers beside the "next button issue" grafik

fmoc commented 1 year ago

@kuateric please open your own issue(s).

TheOneRing commented 1 year ago

With Qt6 and egl support in qtwayland I get. thumb-Clipboard - September 8, 2023 12 35 However it appears egl support is not possible with our currently used centos image. I'll disable qtwayland for 5.0, in Qt6 in with our sles15 based builds we should re enable it. Taskbar and window title are still an issue we need to solve.

TheOneRing commented 1 month ago

With https://github.com/owncloud/client/issues/11625 I think we can close this issue 🥳