MSS icon indicating copy to clipboard operation
MSS copied to clipboard

Remove dependency on Xvfb and pyvirtualdisplay

Open matrss opened this issue 2 years ago • 5 comments

Currently MSS' test suite uses Xvfb and pyvirtualdisplay to run tests invisibly. This is fine, except that it introduces somewhat unnecessary overhead through the X server and that X is getting replaced by wayland more and more (e.g. KDE Plasma 6 is supposed to default to wayland when it is released). Since we do not require X specific features AFAIK (mouse or keyboard input emulation or anything like that) we can switch to the QT-native way: set QT_QPA_PLATFORM=offscreen and just let QT render to an offscreen buffer instead.

matrss avatar Nov 16 '23 14:11 matrss

We maybe should also add a lightwight window manager. Some of the UI elements behave different without a manager.

e.g. moving a widget, min-/maximize by the border handles is not possible

ReimarBauer avatar Nov 20 '23 11:11 ReimarBauer

Do any of the tests actually do that (e.g. test window resizing, moving)? We could introduce a window manager for that if we actually tested this, but if we don't then I see no point in cementing this Xorg dependency (since window managers are purely a Xorg thing). For wayland we could use sway, but then again I don't see a point if we don't actually utilize this in the tests (and if we want to be thorough we would have to test against a lot of different window managers / wayland compositors because they can all behave slightly differently).

If we used QT_QPA_PLATFORM=offscreen instead we would acknowledge that the correctness of the general behavior of the windows (resizing, moving, min-/maximizing) on any given "backend" is the responsibility of QT, not us. That's part of what a GUI framework brings to the table, after all. As a side effect, we could then get rid of the optional dependency on xvfb from outside of mamba and have all dependencies come from one place.

So what I am proposing is more like the opposite of introducing a window manager.

matrss avatar Nov 20 '23 11:11 matrss

the tutorials will need that, but that can become a different solution, maybe that can be part of a GSoC project.

ReimarBauer avatar Nov 20 '23 13:11 ReimarBauer

cleanup of testing.yml can be done after 9.0.0 is released

ReimarBauer avatar Apr 23 '24 15:04 ReimarBauer

pyvirtualdisplay was removed

ReimarBauer avatar Nov 28 '24 07:11 ReimarBauer