Switchuser Issue
Rainer Dorsch
ml at bokomoko.de
Tue May 15 15:26:03 UTC 2018
Hi,
small addition:
There is at least one user on #debian-kde who claims that sddm and switchuser
works for him.
For sddm this line should apply in kdisplaymanager.cpp:
return exec("caps\n", re) && re.indexOf("\tlocal") >= 0;
What does that do? I do not find a file caps which can be executed :-/
Thanks
Rainer
On Dienstag, 15. Mai 2018 17:12:25 CEST you wrote:
> Hi,
>
> I digged a little further:
>
> On Dienstag, 15. Mai 2018 09:02:52 CEST Rainer Dorsch wrote:
> > Hi,
> >
> > I have an issue with switch user in ksmserver on my newly installed Debian
> > buster system (plama-workspaces 5.12.5):
> >
> > When I try to swich user, I get the switchuser dialog displayed, but when
> > I
> > click on switch, I get to my own session's lockscreen. This doesn't seem
> > to
> > be a general issue, there is at least one person on #debian-kde who
> > reports
> > that switching users works for him.
> >
> > I traced the code and ended up in
> >
> > /usr/share/plasma/look-and-feel/org.kde.breeze.desktop/contents/userswitch
> > er / UserSwitcher.qml
>
> That gets executed, modifying the text of a button took effect, nice that it
> is a scripting language... :-)
>
> > Since I am not an qml writer (or reader ;-) I was so far not able to find
> > out what
> >
> > sessionsModel.switchUser(block.userListCurrentModelData.vtNumber,
> > sessionsModel.shouldLock)
> >
> > does. As a first test, can I add a log statement to test, if that line in
> > the code is really reached (maybe just log to /tmp/switchuserdebug.log)?
> >
> > Any idea is welcome.
>
> ...and I am back in sessionsmodel.cpp
>
> it seems there are a few return statements which effectively (as I
> understand it) simply skip the switch user. That is what I actually see.
>
> void SessionsModel::switchUser(int vt, bool shouldLock)
> {
> if (vt < 0) {
> startNewSession(shouldLock);
> return;
> }
>
> if (!canSwitchUser()) {
> return;
> }
>
> if (!shouldLock) {
> m_displayManager.switchVT(vt);
> emit switchedUser(vt);
> return;
> }
>
> checkScreenLocked([this, vt](bool locked) {
> if (locked) {
> // already locked, switch right away
> m_displayManager.switchVT(vt);
> emit switchedUser(vt);
> } else {
> m_pendingReserve = false;
> m_pendingVt = vt;
>
> emit aboutToLockScreen();
> m_screensaverInterface->Lock();
> }
> });
> }
>
> In particular I suspect that the
>
> if (!canSwitchUser()) {
> return;
> }
>
> is executed:
>
> bool SessionsModel::canSwitchUser() const
> {
> return const_cast<SessionsModel
> *>(this)->m_displayManager.isSwitchable() &&
> KAuthorized::authorizeAction(QLatin1String("switch_user"));
> }
>
> Unfortunately, for me it is not clear, what could
> KAuthorized::authorizeAction(QLatin1String("switch_user") make false or how
> I can validate if SessionsModel *>(this)->m_displayManager.isSwitchable()
> is true.
>
> Looking at isSwitchable:
>
> bool
> KDisplayManager::isSwitchable()
> {
> if (DMType == NewGDM || DMType == LightDM) {
> QDBusObjectPath currentSeat;
> if (getCurrentSeat(0, ¤tSeat)) {
> SystemdSeat SDseat(currentSeat);
> if (SDseat.isValid()) {
> QVariant prop = SDseat.property("CanMultiSession");
> if (prop.isValid())
> return prop.toBool();
> }
> CKSeat CKseat(currentSeat);
> if (CKseat.isValid()) {
> QDBusReply<bool> r =
> CKseat.call(QStringLiteral("CanActivateSessions"));
> if (r.isValid())
> return r.value();
> }
> }
> return false;
> }
>
> if (DMType == OldKDM)
> return dpy[0] == ':';
>
> if (DMType == OldGDM)
> return exec("QUERY_VT\n");
>
> QByteArray re;
>
> return exec("caps\n", re) && re.indexOf("\tlocal") >= 0;
> }
>
> Is sddm covered here?
>
> Trying with lightDM as default display manager....and the problem goes away
>
> :-)
>
> Is it true that sddm is not supported? I am surprised since switchuser
> worked with sddm for me in Debian Stretch (plasma-5.8.6)?
>
> Also it would helped me tremendously, if a log entry (or even a pop-up
> message...) would have been produced instead of a silent failure.... It
> seems that would not add a lot of code...
>
> Thanks
> Rainer
--
Rainer Dorsch
http://bokomoko.de/
More information about the Plasma-devel
mailing list