Currently we are very inconsistent with how we handle our various X11 dependencies.
Some places check whether specific sub-libraries are found and disable parts of the code accordingly.
Sometimes this is controlled by whether X11 is found at all, sometimes it depends on the sublibrary being present.
Some of this is obviously broken, e.g. in one like we check whether X11 is there and then use it unconditionally a few lines down.
Instead of the current system of optional deps and deps being conditional on other deps I propose that we introduce an explicit build option that controls the X11 support.
If on (the default) then all X11 libs are required.
If off then no X11 libs are searched for. Currently this results in a broken build since some places use X11 stuff unconditionally, but it gives us an easier way to test and fix those cases.
Shared contexts allow us to share textures and vertex buffers between
contexts (windows) this allows us to reduce memory in popups and alike.
To fully make use of this requires some follow up work in
ManagedTextureNode for FrameSVG, but we should sitll get some OOTB.
If shared contexts are not supported this fails gracefully - though we
are relying on shared contexts within kwin for a release without issue.
It also should fix WebGL inside WebViews.
BUG: 448299
These two code paths for vertical and horizontal orientations used two
different functions to clamp values. This commit makes them consistent.
Amends a3943400d5.
The current UI does not communicate to the user at what times these UI
elements will be shown, leading to confusion. People are thinking that
unchecking the Clock checkbox always hides it, but this is not the
case; instead it hides the clock only when the main UI is invisible.
To address this, the wordings of the checkbox labels are changed to
indicate what the opposite states will do as well.
BUG: 429468
FIXED-IN: 5.26
Setting unchanged values may falsely trigger an authentication
prompt in the case that the changed value doesn't need authentication
to change, but the unchanged ones do, leading to an authentication prompt
to show up.
Adding a little bit of original vs new comparison lets us only send over
DBus what got changed.
BUG: 437286
CMake's FindX11 package reports that X11 was found even if not all libraries
are present. It also doesn't support proper components. This causes issues on
distros that split X11 headers into a myriad of small packages, for instance
Debian: some, but not all, components might be found.
Explicitly check that every X11 component used by Plasma was found by FindX11.
KInit will be gone in KF6. However, we still need to update a KF5 KLauncher
for the time being, for KF5-based apps running in a Plasma 6 session. All
we need for that is a copy of the D-Bus interface definition though.
Without this, ninja fails to regenerate at times:
https://gitlab.kitware.com/cmake/cmake/-/issues/21977
It happens because we fail to transfer to the replaced file the
properties that the different macros have set to the original.
The CMake code is careful not to include PipeWire when it is not
installed, however what it *does* include (taskmanagerplugin) still has
a dependency on Screencasting classes, which prior to this are gated
under the PipeWire check.
Since these classes only require Wayland, not PipeWire, I fix the build
error by reducing the CMake check for PipeWire to only add the
PipeWire-specific bits when PipeWire is present, and to build the
screencasting stuff unconditionally.
The ECM logging code is named after PipeWire but doesn't depend on it
either so that is also built unconditionally to avoid build failures
about a missing "logging.h".
BUG:456655
Plasma::Applet::config() returns a "/Configuration" group, but the
dumpCurrentLayoutJS DBus method saves all applets' config from root,
so when we need to save some value through scripting api it will
always prepend "/Configuration"