Open-MSS / MSS

A QT application, a OGC web map server, a collaboration server to plan atmospheric research flights.
https://open-mss.github.io
Apache License 2.0
62 stars 82 forks source link

Remove dependency on Xvfb and pyvirtualdisplay #2101

Open matrss opened 1 year ago

matrss commented 1 year ago

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.

ReimarBauer commented 12 months ago

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

matrss commented 12 months ago

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.

ReimarBauer commented 12 months ago

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

ReimarBauer commented 6 months ago

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