All the new QML KCMs have their library in kcms/ subfolder
Also improve error reporting a bit by reporting whether the library was not found or its symbol is missing.
Differential Revision: https://phabricator.kde.org/D24557
Summary:
kcminit had a slot to start processing something and a signal to emit
when it's finished.
For DBus that's quite bad practice as it can leave you hanging in the
case of a kcminit crashing. It's better to use the return of the
original call to signal when something is done.
From ksmserver we can then just use DBus timeouts set on the interface
than a secondary timer.
We also remove a pointless blocking call to kcminit introspecting
everything, if kcminit is not running it will return with an error
immediately which is no slower than checking first if it's not running
and faster if it is.
Test Plan:
Logged in
Session logs showed kcminit ran
Reviewers: #plasma, broulik
Reviewed By: #plasma, broulik
Subscribers: zzag, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D16587
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:
We don't remotely support multihead in plasmashell.
Nor do we support two plasmashells running to fake it.
SDDM doesn't either.
Kwin has some code, but we don't check the screen before
choosing the DBus service to use. I doubt it works well.
This kills some code, and a blocking call to klauncher.
(Note, multihead has nothing to do with xrandr spanning screens)
Test Plan:
Code grep
Compiles
Reviewers: #plasma, mart
Reviewed By: #plasma, mart
Subscribers: apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D9171
Summary:
The current code registers the session bus *after* app->exec() this
effectively means it won't work.
This causes ksmserver to be unable to deliver the calls to start kcminit
modules at remaining init phases.
Any KCMinit module which are at X-KDE-Init-Phase=1 or 2 will now get
run. It also means kcminit_startup closes, instead of lingersing on
startup doing nothing until it times out 5 minutes later.
Test Plan: Confirmed kcminit_startup now exits properly.
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2887
Summary:
KCMInit is loaded early in startkde, and it blocks all other processes
from starting until it is complete.
This can be up to 1.1 seconds.
(http://imgh.us/bootchart-20160928-1316.svg)
A sizable amount of time (46% of CPU) is spent loading our QPT. This
isn't very useful given none of the kcm_init scripts have any UI and
it's not something they should have. It's only a QGuiApplication so that
they have an X connection.
Test Plan: Checked it ran without errors
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2882
this returns us to behaviour of kde4 times (e.g. this is what kwin expects).
each x11 screen in xcb terminology is a virtual desktop,
potentially a collection of separate juxtaposed monitors.
while QScreen is representing only one output (e.g. DVI-I-1, VGA-1, etc.)
which may be combined with others into one virtual desktop.
see QXcbConnection::updateScreens()
REVIEW: 122320
this reduces number of libraries to link with from over 100 to 50
and improves base binary run time on my lenovo e330 from 8 seconds to less than 6
(and hence improves system startup time, yay!)
Martin: i will do a switch from QGuiApplication::screens() to xcb screens
separately because it changes behaviour comparing to kde4
REVIEW: 122270
CCMAIL: mgraesslin@kde.org
registerService() isn't sufficient, this has probably been broken
since the port from DCOP. The exported object is used by ksmserver
to talk to kcminit during startup
This is the beginning of revision history for this module. If you
want to look at revision history older than this, please refer to the
techbase wiki for how to use Git history grafting. At the time of
writing, this wiki is located here:
http://community.kde.org/Frameworks/GitOldHistory
If you have already performed the grafting and you don't see any
history beyond this commit, try running "git log" with the "--follow"
argument.
Branched from the monolithic repo kde-workspace, frameworks branch, at commit
049113e719dd2fc4446d054fa1a3aada330094f0