The shutdown/restart code for the non-KDM case (in particular, for GDM users) is based on ConsoleKit right now, and should be ported to systemd.
Created attachment 566758 [details] First (UNTESTED) attempt at a patch for shutdown, restart and session switch using systemd So I have tried (hopefully successfully) to implement support for systemd instead of ConsoleKit in the KDE Plasma workspaces (kde-workspace). Shutdown and restart were fairly straightforward, I'm fairly confident those work; if not, it must be some trivial mistake. Session switching, on the other hand, is much more complicated, I didn't write the original code for that part, and the API is quite different (using D-Bus properties rather than methods, annoyingly with structure types). Pass -DKWORKSPACE_USE_SYSTEMD:BOOL=ON to CMake to enable this. I haven't yet tested whether this compiles, runs, crashes, burns, eats kittens, … ;-)
I'll try testing this out today
[ 2%] Building CXX object libs/kworkspace/CMakeFiles/kworkspace.dir/kdisplaymanager.o /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In function ‘bool getCurrentSeat(QDBusObjectPath*, QDBusObjectPath*)’: /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:342:61: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:342:61: note: candidate is: /usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const /usr/include/QtCore/qobject.h:259:14: note: no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In function ‘QList<QDBusObjectPath> getSessionsForSeat(const QDBusObjectPath&)’: /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:376:61: error: no matching function for call to ‘SystemdSeat::property(QLatin1String)’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:376:61: note: candidate is: /usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const /usr/include/QtCore/qobject.h:259:14: note: no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:381:33: error: ‘class QList<NamedDBusObjectPath>’ has no member named ‘path’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:380:208: warning: unused variable ‘namedPath’ [-Wunused-variable] /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In function ‘void getSessionLocation(SystemdSession&, SessEnt&)’: /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:406:51: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:406:51: note: candidate is: /usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const /usr/include/QtCore/qobject.h:259:14: note: no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:407:74: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:407:74: note: candidate is: /usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const /usr/include/QtCore/qobject.h:259:14: note: no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:408:49: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:408:49: note: candidate is: /usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const /usr/include/QtCore/qobject.h:259:14: note: no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In member function ‘bool KDisplayManager::isSwitchable()’: /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:556:70: error: no matching function for call to ‘SystemdSeat::property(QLatin1String)’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:556:70: note: candidate is: /usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const /usr/include/QtCore/qobject.h:259:14: note: no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In member function ‘bool KDisplayManager::localSessions(SessList&)’: /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:627:62: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:627:62: note: candidate is: /usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const /usr/include/QtCore/qobject.h:259:14: note: no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:628:74: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’ /home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:628:74: note: candidate is: /usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const /usr/include/QtCore/qobject.h:259:14: note: no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’ make[2]: *** [libs/kworkspace/CMakeFiles/kworkspace.dir/kdisplaymanager.o] Error 1 make[1]: *** [libs/kworkspace/CMakeFiles/kworkspace.dir/all] Error 2
update, kde-workspace-4.8.1-4 builds, and does show shutdown/restart kickoff->leave menu items. unfortunately selecting either only takes you back to kdm login screen. switch user seems to only lock the screen atm too.
kde-workspace-4.8.1-5.fc17 has been submitted as an update for Fedora 17. https://admin.fedoraproject.org/updates/kde-workspace-4.8.1-5.fc17
Created attachment 570119 [details] patch for shutdown (tested working), restart (tested working) and session switch (needs testing/fixing) using systemd For reference, I'm attaching the version of the patch we're now using. User switching still needs testing and probably fixing.
Package kde-workspace-4.8.1-5.fc17: * should fix your issue, * was pushed to the Fedora 17 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing kde-workspace-4.8.1-5.fc17' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2012-3800/kde-workspace-4.8.1-5.fc17 then log in and leave karma (feedback).
Package kde-workspace-4.8.1-6.fc17: * should fix your issue, * was pushed to the Fedora 17 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing kde-workspace-4.8.1-6.fc17' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2012-3800/kde-workspace-4.8.1-6.fc17 then log in and leave karma (feedback).
kde-workspace-4.8.1-6.fc17 has been pushed to the Fedora 17 stable repository. If problems still persist, please make note of it in this bug report.