- 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
Summary:
This brings numerous advantages such as:
- easier admin configuration with drop-ins, overrides and multiple
hooks throughout (and only having to learn one tool)
- session cleanup on exit, avoiding that occasional part where shutdown
hangs
- startup that actually knows when things are up
- race free autostart and DBus activation at once
- logs that rotate are split by service and usable
- resource management through slices and cgroups (the part I want)
Over the past 2 years I've been trying to tidy up and encapsulate the
relevant parts of startup into the binary plasma-session so that we can
just runtime swap out that one part and supporting both paths will be
easy.
Support is toggleable via cmake flag, as it seems like it should be a
distro decision, especially as we will require a specific systemd with
the xdg-generator.
KDED/kwin/other services are attached to the relevant repo.
Task T11914
Differential Revision: https://phabricator.kde.org/D28305
squash
This is a patch carried by FreeBSD for a long time; I may have submitted it upstream before.
libICE is **not** in the standary library search paths on FreeBSD, so using the straight-up name *ICE* in `check_library_exists()` won't find it -- even though libICE has previously been found, probably by `find_package(X11)`
Use the full path, which is what `${X11_ICE_LIB}` should hold.
Summary: As we don't launch with kinit, no point ksmserver linking against it
Test Plan: Compiles
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D28676
Summary:
Currently startplasma spawns plasma-session then sits around waiting for
that to finish
plasma-session spawns all the startup then also just sits around doing
nothing
This patch makes plasma-session spawn all the startup and then quit.
It also splits the owner of the org.kde.shutdown interface to be on
demand. plasma-shutdown asks ksmserver to quit and then if applicable
runs the shutdown scripts or not.
Startplasma then knows when to exit by monitoring the DBus service
status directly.
The benefits are that we save some resources by not needing
plasma-session lingering about.
It also means the shutdown interface is re-usable as-is when the pending
systemd startup method is used.
Test Plan:
Logged in and:
- ran killall ksmserver, session ended as before
- logged out and cancelled due to unsaved changes
- logged out and completed logout
- logged out and rebooted
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D27629
Summary:
Kwin had to have two ICE connections in order to track state
indepdendently of it's session saving.
This replaces that with a more direct DBus protocol allowing for both
simplification on the kwin side as well as comunicating the logout state
better for effects.
Whilst this code temporarily complicates things, now we have this
interface the next step is drop all the isWM() stuff and do kwin
specific session management also over this interface. See T11882
Test Plan:
Added qdebug into kwin
started logging out with an unsaved file, cancelled shutdown
started logging out with, discarded file
Reviewers: #kwin, apol
Reviewed By: apol
Subscribers: broulik, apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D24945
Summary: It may be used through KNotifications
Test Plan: Builds
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D25093
This allows new startup procedures to use a session manager and also
allows us to slowly replace the session manager without breaking plasma.
Following on from the previous refactor, Startup and Shutdown are moved
from kmserver and the previous calls into KSMserver are replaced with
DBus calls.
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D21995
Summary:
The inhibition was dysfunctional, as powerdevil delays the inhibition
by 5 seconds (and is already stopped when the delay times out). Also
powerdevil handles concurrent user session shutdowns and sleep requests
itself, so the code is obsolete.
As KDELibs4Support pulled in a number of Frameworks, we have to
explicitly add these now.
Reviewers: #plasma, broulik, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: apol, sitter, anthonyfieroni, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22296
Summary:
We don't need to introspect at runtime as KDED installs the interface
XML file.
Oddly KDED's package is called KDED not KF5KDED, hence the separate
find_package, I don't know if that's a bug in frameworks or not.
Test Plan: Compiles
Reviewers: #plasma, romangg
Reviewed By: #plasma, romangg
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D16628
Summary:
This commit splits ksmserver's xsession shutdown logic from performing
the actual shutdown and running shutdown scripts and implement proposed
org.kde.Shutdown interface.
Intended longer term target is to move this to a separate executable.
KSMServer's existing logout dbus method still exists for compatibility
forwarding to the new interface.
There are 2 minor behavioural changes.
The shutdownMode property (which doesn't seem to do anything and is not
exposed in our UI) is not kept.
If you shutdown /whilst/ starting up somehow, previously we delayed
showing the logout prompt, we now delay performing the actual logout.
Test Plan:
Logged out / shut down using the old API
Logged out / shut down using the new DBus API
Reviewers: #plasma, apol, romangg
Reviewed By: #plasma, apol, romangg
Subscribers: romangg, apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D16277
Summary:
Removing this is part of preparations for ksmserver to become just an X
session manager. See T9779.
Instead of ksmserver opening the greeter with a tonne of args and then
having a socket to watch for changes, the new mechanism is that we fire
and forget the prompt. Then the logout prompt calls back into ksmserver
with the request. Simplifies code greatly allows for moving.
KSMserver's shutdown DBus method remain on ksmserver for compatibility,
but ultimately spawning the prompt will move to libkworkspace and called
from the session directly.
QML API in the logout greeter remains mostly untouched.
Behavioural changes are minor:
There was a QML property "choose" exposed to the greeter if the default
shutdown option is set to None. Though we don't allow this in the KCM
and our default prompt doesn't use it.
We no longer block a user from saving a session whilst a logout prompt
is active.
Test Plan:
Logged out
Shutdown
Also ran with old ksmserver, still got a prompt
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D16066
Summary:
kcheckrunning is only used by startkde, it shouldn't be in the ksmserver
folder.
No code or behavioural changes, just tidying.
Reviewers: #plasma, broulik
Reviewed By: #plasma, broulik
Subscribers: broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D15202
Summary:
org.kde.screensaver.xml is only part of KScreenlocker starting with
version 5.13.80, also the installation directory is not exported in
earlier versions.
Depends on D15228
Test Plan:
Try to build with kscreenlocker 5.13.0
Try to build with kscreenlocker 5.13.80
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D15229
Summary:
This reduces a bunch of code, both hidden in the backend as well as the
mostly duplicated front end UI, making it more consistent for users too.
There is a behavioural change that switching user then cancelling will
require your own password.
KSMServer still has the same DBus slot for compatibility which then
proxies over to the screensaver. This could be calling itself, it might
be calling kwin when we're on wayland.
Depends on D15186
Test Plan:
Pressed switch user from the UI
Got a swich user dialog
Reviewers: #plasma, mart
Reviewed By: #plasma, mart
Subscribers: ngraham, mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D15187
Summary: port the shutdown dialog to package::fileUrl, dropping the support for old custom themes
Test Plan: shutdown dialog work correctly both with normal and rcc kpackages
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D9195
This follows the same approach as the logout greeter, albeit a bit simplified.
It also creates one window per screen and should fix the problems we had with its positioning in multi-screen setups.
Differential Revision: https://phabricator.kde.org/D3204
Summary:
Currently ksmserver sends DBus calls to klauncher to autostart services.
This patch brings all autostarting into the ksmserver process, putting
all autostart code together, and improving Plasma/Frameworks separation
(change requested by David Faure) with the long term goal of removing
this from klauncher; with a longer term goal of maybe even killing
klauncher.
We don't get two things autostarting as without ksmserver sending the
signals, klauncher does nothing.
Autostart.cpp code is copied verbatim so there's no breakage.
Test Plan: Logged in, got plasma and krunner and so on.
Reviewers: #plasma, graesslin
Reviewed By: #plasma, graesslin
Subscribers: mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2544
Summary:
Ksmerver now starts the logout greeter binary instead of creating
the KSMShutdownDlg. The complete interaction to logout is now performed
in an async, non-blocking way.
Test Plan: Successfully cancelled logout and performed logout and shutdown
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2257
Summary:
The idea behind this change is to have a dedicated binary for the
logout dialog. As a follow up ksmserver needs to be adjusted to invoke
the helper binary instead of interacting with KSMShutdownDlg directly.
This will bring quite some improvements to the logout architecture:
* ksmserver doesn't need to run a QEventLoop to wait for the dialog to finish
* it becomes easier to test changes for the logout dialog, one doesn't need
to restart the session any more
* ksmserver becomes better guarded against problems in the UI layer (e.g.
OpenGL errors)
* the binary can be changed to support Wayland
* ksmserver becomes better guarded against problems with updating Qt
while the session is running
This change only introduces the creation of the binary. A new sub-dir
"logout-greeter" is added which creates a ksmserver-logout-greeter.
The greeter defines various command line arguments for the options which
are being passed to the KSMShutdownDlg.
If the dialog returns an exit value of 0 it is interpreted as accepted.
A return value != 0 indicates that the user rejected the logout.
The dialog also passes additional values back. In particular the logout
method might be changed and returned back to ksmserver. To support this
operation a pipe filedescriptor can be passed to the greeter. If present
the greeter will write the numerical value of KWorkspace::ShutdownType
into the pipe on success.
To indicate how the interaction - especially the reading from pipe -
works, the change comes with an additional test binary. It forwards
the command line arguments and creates the pipe to pass to the greeter
and reads it back in a helper thread to be non-blocking. This approach is
inspired from kwin_wayland's starting of Xwayland.
Test Plan: See the new test binary
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2252
According to Git / SVN history research, it was last used by KDE in
KDE 1. It seems like other toolkits also stopped using it 10-20 years
ago. It should have little to no practical relevance anymore.
I've found some documentation of legacy XSM session management from
1992, and the first copyright year of the XSMP spec (what we're
currently using) is 1993.
Also, XSM was removed from GNOME's gnome-session in 2005, rationale
and short discussion here:
https://mail.gnome.org/archives/desktop-devel-list/
2005-July/msg00527.html
with the following objections:
- Firefox doesn't support XSMP (long fixed)
- CDE on Solaris doesn't support XSMP (oh well...)
- Motif applications don't support XSMP
On kde-core-devel and kwin, nobody cared too much.
Consider XSM "accidentally" broken now ;)
https://marc.info/?l=kde-core-devel&m=144857647812257https://marc.info/?l=kde-core-devel&m=144976915400658
There is a utility called xsmproxy which comes from X.org.
It talks legacy XSM to clients and XSMP to an XSMP compliant
session manager and can therefore maybe hopefully make session
management of dinosaur applicatons sort of work.
It seems like that one received its last major modification
in 2003.
There is also some XSM related code in KWin that I will remove next.
This adds a user switcher borrowing elements from the lock screen and log out dialog.
It will be used instead of KRunner as main UI for switching sessions. The sessions runner
will stay there for the time being.
CHANGLOG: The main user switcher UI has been completely re-designed
REVIEW: 124585
This switch is rarely used and screenlocker is important part of the
Plasma system. So it makes no sense to have it build-disabled by ifdef
Reviewed by: Martin Gräßlin
This makes specifying absolute paths on the commandline that are then
encoded into the config file work.
Not hard-coding the packackage prefix is also helpful on a multiarch
layout where the prefix is /usr/${host} but arch-independent files
should still be installed to /usr/share (i.e a level below the
prefix).
REVIEW: 125844
With its current architecture, KNotification can cause crashes on logout
due to use of Q_GLOBAL_STATIC and threads and Phonon and cleanup by main
thread. So this replaces the KNotification-in-a-thread with Phonon
directly.
This is exactly what KNotification would do. This is for the time being
until the crash on logout is sorted out.
Additionally, this also fixes logout sound which was missing before.
This uses normal KNotification as at that point we don't need to be
threading or anything, so KNotification is just safe.
REVIEW: 123834