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
Given that the wayland protocol does not have window positions a recent
change to Qt development branch avoids having a mismatch of positions
and tells client code the window is at the topleft of the screen. This
fixes multiple bugs.
Unfortunately this breaks a few usages within plasma where a
side-channel sends that absolute positional information over a bespoke
protocol. Currently we proxy this all through QWindow geometry where the
new Qt behaviour will throw is askew.
Whilst our longterm plans are to find future options away from the
plasmashell protocol we may as well have our Qt6
build work given the patch is trivial and harmless.
It also allows for potential backporting if our software is
already secured against issues. Hence the cherry-pick.
I cross-compiling for the recently released Arm Morello boards and the
QtQml debugger is not yet compatible with CHERI-enabled architectures so
I had to build QtQml with -no-qml-debug.
ShellCorona is created before KDBusService which registers the name.
This causes a problem as we register global shortcuts before plasmashell
--replace has kiled the old application, which in turn deregisters
everything.
We want everything before KDBusService to be as light as possible.
Moving ShellCorona construction is not trivial as some argument parsing
uses that.
BUG: 408310
The two ways of disabling session management have the same impact on the
session being saved, but there is one behavioural side-effect that
turned out to be less ideal.
By disabling completely we don't follow the session manager telling the
application to quit. That's not something needed with the systemd boot,
but for the legacy boot effectively we were just closing applications by
ripping the X connection away from under them.
Some applications are bad at handling this and this led to a bunch of
crashes or dangling processes at logout.
This reverts commit 9be7dedb87.
CCBUG: 424408
ShellCorona is a messy class doing mulitple functions.
This patch splits out all telemetry code into a new class, meaning it's
easier to extend. Code remains the same.
Qt 5.15 introduces a new syntax for connections.
Framework code can't port away due to having to support Qt5.12 which
does not include the new syntax.
This filters out the category.
We should remove this once we depend on Qt5.15 in frameworks.
BUG: 424259
I don't understand why QQmlDebuggingEnabler prints a warning, it's no
less secure until other command line args are passed.
However the warning is scary, so lets put a guard on it.
BUG: 422228
Summary:
Before loading the view, query all plasma processes and show why they're using
KUserFeedback.
Depends on D26569
Test Plan: Manual testing
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: ngraham, davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D26570
Summary:
Allows specifying the shell through an environment variable.
Allows forwarding command line arguments to kwin_wayland, since the arguments we
use on plasma phone are slightly different.
Test Plan: Builds, still starts
Reviewers: #plasma, bshah, mart, davidedmundson
Reviewed By: #plasma, bshah, mart, davidedmundson
Subscribers: broulik, mart, alexeymin, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D25750
Summary:
Since shellManager was removed, we have a quite big regressions
of any other shell that isn't the desktop one not loading in any
way from SDDM, causing a big issue for plasma mobile or any shell
based on plasma mini shell, which we have several now not working
images based on.
this allows for a shell being configured in plasmarc
Test Plan: shell specified in plasmarc loaded, loads the desktop if not specified
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D23031
Summary: Wait for the other process to unregister before starting the new one.
Test Plan: Reproduced the problem Noah mentioned and addressed it.
Subscribers: ndavis, broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22945
Summary: The corona needs to be closed earlier.
Test Plan: Now we don't hit the race-condition when closing
Reviewers: #plasma, mart
Reviewed By: #plasma, mart
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22948
Summary:
We had an overly complex and in practice unexploited system to detect
which shell to use,
This patch changes it to default to the desktop, still allowing to
modify which to use from --shell-plugin argument.
Test Plan:
Starts up fine, --shell-plugin/-p still works, which is what
bhushan told me is important for plasma mobile.
Reviewers: #plasma, davidedmundson, bshah
Reviewed By: #plasma, davidedmundson, bshah
Subscribers: bshah, davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22874
Register notification and job tracker services with "allow replacement" flag if not plasmashell,
so when it eventually comes up, it can claim the service and then cling on to it.
BUG: 408250
FIXED-IN: 5.16.2
Differential Revision: https://phabricator.kde.org/D22017
Summary: This then invokes the relevant KCM when clicked
Test Plan:
Forced software rendering, saw SNI
restarted, saw SNI
set "never show again". It hid itself
Restarted. It remained hidden
Reviewers: #plasma, broulik
Reviewed By: #plasma, broulik
Subscribers: alexeymin, broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D12679
Summary:
If we cannot create a GL context, instead of showing an error and
quitting, switch to using the QtQuick software renderer and restart.
If software mode is already set, then show the error as before. This
could happen in the case of the software renderer not being installed.
Test Plan:
After doing some driver changing, I ended up with the annoying "plasma can't start"
message.
Without the entry in kdeglobals I now start plasma and it seamlessly comes up
working.
Reviewers: #plasma
Subscribers: mart, broulik, graesslin, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D11722
Summary:
Calls the existing quit signal on a running plasma then tries to start
in the normal way.
It's meant partly to make my own development workflow a bit easier, but
also to make it one less line on bugzilla when I want people to give me
debug output.
Test Plan:
Ran with existing plasma running
Ran without an existing plasma running
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D12092
Summary:
As discussed the env variables are no longer exported. Thus Qt
applications follow the default qpa platform they are compiled with and
thus still function if they are packaged with a Qt without QtWayland.
Plasma's internal processes pick the qpa platform depending on the
session type as well as our flatpak apps.
KRunner and Plasmashell are adjusted to not leak the env variable they
set for themselves.
Test Plan:
Started a wayland session, verified with KWin's debug console
that plasmashell and krunner are wayland. Launched kwrite from both plasma
and krunner and verified that it's xcb
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D11447
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:
Setting a window icon is surprisingly costly and a decent chunk of
startup time. The shell doesn't need one. The only place I could
find where this icon is visible is in the KSysguard process list :).
Some people may be reminded of this rejected request:
https://git.reviewboard.kde.org/r/128484/
But that's Plasma::Dialog in plasma-framework, which (currently)
still sets an icon. This is about the shell.
Reviewers: #plasma, davidedmundson, mart
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D9196
Summary:
The directory containing the main application (read through argv[0]) is
by default added to the list of paths containing libraries.
This causes various methods to iterate through all entries of the plasmashell
install location, usually /usr/bin.
By explicitly removing the path, those unnecessary lookups can be avoided,
resulting in around 100ms quicker startup on a system with 4000 entries in
/usr/bin.
Test Plan:
Ran plasmashell with and without this fix, no changes except for a slightly
quicker startup and much less strace noise.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D7255
Summary:
KWindowSystem::platform() cannot be used before QApplication is
constructed.
QCoreApplication::setAttribute needs to be called before QApplication is
constructed.
We need a different method. I've used an explicit new env variable so
that some users can also opt in to use this when on X.
Test Plan:
Logged in.
Plasma panels all work. Look to be native resolution.
Reviewers: #plasma, mart
Reviewed By: #plasma, mart
Subscribers: mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D7200
Summary:
I've done this only when on Wayland because:
On X, our own scaling to font generally works well.
There are bugs on older Qt, especially when it comes to fractional
scaling, and we can't support per screen scales anyway.
There's advantages to disabling, and (other than small context menu
icons) few advantages in enabling
On wayland, it's different. Everything is simpler as all co-ordinates
are in the same co-ordinate system
we don't have fractional scaling on the client so don't hit most the
remaining bugs and
even if we don't use Qt scaling the compositor will try to scale us
anyway so we have no choice
CCBUG: 356446
Test Plan:
Had this for about a week on my laptop.
Haven't noticed a single problem.
Reviewers: #plasma, mart
Reviewed By: #plasma, mart
Subscribers: mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D7188
Summary:
This allows us to run the plasma-tests repo on your system without it
destroying all your real activities. Even though one run tests in a
nested
dbus sessions, kactivities will still load and meddle with your real
database
at the same time as the real daemon is. That gets messy and broken.
It also allows us to remove a hack in the plasma-tests script.
Test Plan:
Ran normal plasma, everything is the same.
Ran plasma-tests everything there now works properly
Reviewers: #plasma, hein
Reviewed By: #plasma, hein
Subscribers: apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D6133
Makes it possible to test how/if a plasmoid behaves correctly on the most
similar environment possible to what the user would find on a production
system.
* Loads a plasmoid on a panel and the desktop.
* Lets it test his own stuff (loading test/test.qml within the plasma
package)
* Terminates with an error if it wasn't successful
REVIEW: 127346