The Layer Shell Qt library is updated to match its API more closely to
the protocol. It is now possible, or rather required if the behavior
should not change, to specify a desired output for a LayerShell window.
KSplash is changed to read which theme to use directly. It's already
linking config and it already loads the default shared config implicitly
so we weren't saving anything having it done by the launcher.
On X11 ksplash is still managed by startplasma-x11 as we can do it
straight away.
For wayland we need to wait till kwin is up so this is done either by
plasma-session or systemd. For systemd the unit is started explicitly so
we can parse the config file, but after the target starting kwin is
started so that the "After=" line works correctly.
A placeholder screen is created by Qt when no wl_outputs exist even for
a split second which can happen when plugging and unplugging monitors
due to driver order.
- Remove check for kded and confupdate stages in SplashApp, those setStage()
calls were removed a long time ago[1]
- Rename 'kinit' stage to 'startPlasma', since it's called from startplasma
- Remove startKDEInit(), it was declared but not defined anywhere, most
likely left-over from a previous refactor.
https://phabricator.kde.org/R297:185afa8a3af8002172d8f5d6aa08c57244422a12
Since both the splash screen and the logout greeter have an exclusive
zone of 0, they may be resized to accommodate for other layer shell
surfaces, for example panels.
We need to set an exclusive zone of -1 to ensure that the splash screen
and the logout greeter fill the entire screen.
Summary:
Forking and printing a PID gains nothing.
The new startplasma script tracks the process used to start ksplash
itself.
BUG: 380495
Test Plan:
Logged in, saw a splash
Ran the test from systemsettings, saw a splash
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D21890
There's an kcminit stage that wasn't documented.
Also change m_stage and then check it so the number here matches the number of stages in the comment.
CCBUG: 405446
Differential Revision: https://phabricator.kde.org/D19801
Loading the theme and setting everything up can take a while.
Ensure that we catch all setStage calls that might have been emitted before we were fully up.
CCBUG: 405444
CHANGELOG: Reduced likelihood of KSplash not being dismissed properly and only timing out after 30s
Differential Revision: https://phabricator.kde.org/D19753
Summary:
Due to the nature of cascading configs we have already loaded and parsed
kdeglobals, it's wasteful to do it again. Especially in ksplash where startup time is important.
Test Plan:
Changed lnf to org.obnosim.tweak.desktop which contains a new splash
Logged out and back in. Still got a different splash.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D11923
Summary:
This is a preparation step to unset QT_QPA_PLATFORM from the wayland
startup session script. Setting QT_QPA_PLATFORM breaks 3rd-party Qt
software which does not bundle QtWayland. Most prominent example is
the Qt installer itself (see
https://bugreports.qt.io/browse/QTBUG-60222).
On the other hand our Plasma workspace applications need to be forced to
Wayland on a Wayland system. So we have a conflict between we want to
set QT_QPA_PLATFORM and we don't want to set QT_QPA_PLATFORM.
This change adds new API to KWorkspace to address this problem. The new
method adjusts the QT_QPA_PLATFORM based on the XDG_SESSION_TYPE
enviornment variable. It is completely opt-in. Meaning applications need
to explicitly add the call prior to creating the QGuiApplication and if
the user specifies either QT_QPA_PLATFORM env variable or any of the
-platform command line argument variants, the platform detection is
skipped.
The change also adjusts all plasma-workspace applications which should
use Wayland on Wayland to use the new API. The startup script on the
other hand still sets QT_QPA_PLATFORM. We also have applications outside
of plasma-workspace which needs this detection. Examples are:
* powerdevil
* systemsettings
* kinfocenter
Once this change is merged those applications can be adjusted by linking
against PW::KWorkspace and afterwards QT_QPA_PLATFORM can be unset from
startplasmacompositor.
Test Plan: See added autotest
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D10816
Summary:
Instead of guessing it will be the first argument, which leads to very
weird behavior.
Test Plan:
Checked the kcm still works
Played around with it
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D8993
It is using QDateTime and secsTo which needs to take into potential timezone changes and what not.
I don't think it's worth porting it to QElapsedTimer, so just remove it.
Differential Revision: https://phabricator.kde.org/D4709
Summary:
Reduces code duplication and we always opperate on cached value, that
is the platform is only checked once in application life cycle.
Reviewers: #plasma, hein
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2342
Summary:
On Wayland ksplash only showed on one screen. This is due to QtWayland
not passing any hint to the compositor on which output to show the
fullscreen window. Thus the compositor placed all windows on the first
output.
This change uses KWayland to work around this problem by performing
a deeper integration. It doesn't use fullscreen windows any more, but
normal windows in combination with the PlasmaShell interface. That way
the windows can perform absolute positioning.
As the window is no longer fullscreen, it's marked as OnScreenDisplay
which makes sure that KWin raises it on top of all other windows. Also
ensures that opened windows aren't raised above it as used to happen.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2242
Summary:
We want to drop workspace code from KDED as it doesn't make much sense
semantically.
This patch ignores the messages from kded, so that they can be dropped
in a future frameworks release and introduces a new signal sent from
startkde.
This puts all workspace related code in workspace.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D1859
We initially set a ksplash window to a screen's availableGeometry then
monitored and set to screen->geometry. Using a mix makes no sense.
Won't make any practical difference as this is all started long before
plasmashell, but it's technically more correct.
REVIEW: 125654
On Wayland no window is created with BypassWindowManagerHint. On
platforms != X11 it's better to just set it as fullscreen. This has
the disadvantage that we cannot ensure that the splash stays top of
stack. Might need support from e.g. Wayland compositor.
a little class that loads files from the configured l&f package
with fallback to the default one
provides a signal when the theme changes, for things that need to react at runtime