--- ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/auth/AuthenticatorApp.cpp.auth2 2013-11-06 20:54:19.505419712 +0100 +++ ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/auth/AuthenticatorApp.cpp 2013-11-06 20:54:28.079461963 +0100 @@ -158,6 +158,28 @@ namespace SDDM { return true; } + QString AuthenticatorApp::requestDisplay() { + qDebug() << " AUTH: requestDisplay start"; + QDataStream inStream(&m_input); + QDataStream outStream(&m_output); + quint32 command = quint32(AuthMessages::AuthNone); + qDebug() << " AUTH: Requesting Display"; + QString display; + + outStream << quint32(AuthMessages::RequestDisplay); + + inStream >> command; + if (command != quint32(AuthMessages::Display)) { + qDebug() << " AUTH: Received out of order message" << command << "when waiting for SessionID"; + handleMessage(AuthMessages(command)); + return display; + } + inStream >> display; + + qDebug() << " AUTH: requestDisplay end"; + return display; + } + void AuthenticatorApp::slotLoginFailed() { QDataStream outStream(&m_output); outStream << quint32(AuthMessages::LoginFailed); --- ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/auth/AuthenticatorApp.h.auth2 2013-11-06 20:54:15.730401120 +0100 +++ ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/auth/AuthenticatorApp.h 2013-11-06 20:54:48.392562174 +0100 @@ -42,6 +42,7 @@ namespace SDDM { QProcessEnvironment requestEnvironment(const QString &user); int requestSessionId(); bool requestCookieTo(const QString &path, const QString &user); + QString requestDisplay(); signals: void started(const QString &user, const QString &session, const QString &password, bool passwordless); --- ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/auth/Method.cpp.auth2 2013-11-06 20:54:12.875387062 +0100 +++ ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/auth/Method.cpp 2013-11-06 20:54:29.735470126 +0100 @@ -100,15 +100,17 @@ namespace SDDM { if (!m_pam) return false; -/* + + QString display = AuthenticatorApp::instance()->requestDisplay(); + // set tty - if (!m_pam->setItem(PAM_TTY, ":0")) + if (!m_pam->setItem(PAM_TTY, qPrintable(display))) return false; // set display name - if (!m_pam->setItem(PAM_XDISPLAY, ":0")) + if (!m_pam->setItem(PAM_XDISPLAY, qPrintable(display))) return false; -*/ + // set username if (!m_pam->setItem(PAM_USER, qPrintable(m_user))) return false; --- ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/daemon/Authenticator.cpp.auth2 2013-11-06 20:54:08.851367254 +0100 +++ ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/daemon/Authenticator.cpp 2013-11-06 20:54:31.903480815 +0100 @@ -106,6 +106,9 @@ namespace SDDM { stream << quint32(AuthMessages::CookieLink); break; } + case AuthMessages::RequestDisplay: + stream << quint32(AuthMessages::Display) << m_display->name(); + break; default: qWarning() << " DAEMON: Child sent message type" << quint32(command) << "which cannot be handled."; break; --- ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/common/Messages.h.auth2 2013-11-06 20:54:10.842377053 +0100 +++ ./sddm-50ca5b20354b6d338ce8836a613af19cedb1dca2/src/common/Messages.h 2013-11-06 20:54:34.084491570 +0100 @@ -51,7 +51,9 @@ namespace SDDM { RequestSessionID, SessionID, RequestCookieLink, - CookieLink + CookieLink, + RequestDisplay, + Display }; enum Capability {