@ -55,9 +55,9 @@
# define _SYSTEMD_SERVICE "org.freedesktop.login1"
# define _SYSTEMD_SERVICE "org.freedesktop.login1"
# define _SYSTEMD_BASE_PATH " / org / freedesktop / login1"
# define _SYSTEMD_BASE_PATH " / org / freedesktop / login1"
# define _SYSTEMD_MANAGER_IFACE _SYSTEMD_SERVICE ".Manager"
# define _SYSTEMD_MANAGER_IFACE _SYSTEMD_SERVICE ".Manager"
# define _SYSTEMD_SESSION_BASE_PATH _SYSTEMD_BASE_PATH " / S ession"
# define _SYSTEMD_SESSION_BASE_PATH _SYSTEMD_BASE_PATH " / s ession"
# define _SYSTEMD_SEAT_IFACE _SYSTEMD_SERVICE ".Seat"
# define _SYSTEMD_SEAT_IFACE _SYSTEMD_SERVICE ".Seat"
# define _SYSTEMD_SEAT_BASE_PATH _SYSTEMD_BASE_PATH " / S eat"
# define _SYSTEMD_SEAT_BASE_PATH _SYSTEMD_BASE_PATH " / s eat"
# define _SYSTEMD_SESSION_IFACE _SYSTEMD_SERVICE ".Session"
# define _SYSTEMD_SESSION_IFACE _SYSTEMD_SERVICE ".Session"
# define _SYSTEMD_USER_PROPERTY "User"
# define _SYSTEMD_USER_PROPERTY "User"
# define _SYSTEMD_SEAT_PROPERTY "Seat"
# define _SYSTEMD_SEAT_PROPERTY "Seat"
@ -429,18 +429,25 @@ KDisplayManager::exec(const char *cmd, QByteArray &buf)
static bool getCurrentSeat ( QDBusObjectPath * currentSession , QDBusObjectPath * currentSeat )
static bool getCurrentSeat ( QDBusObjectPath * currentSession , QDBusObjectPath * currentSeat )
{
{
SystemdManager man ;
SystemdManager man ;
QDBusReply < QDBusObjectPath > r = man . call ( QStringLiteral ( " GetSessionByPID " ) , ( uint ) QCoreApplication : : applicationPid ( ) ) ;
if ( man . isValid ( ) ) {
if ( r . isValid ( ) ) {
* currentSeat = QDBusObjectPath ( _SYSTEMD_SEAT_BASE_PATH " /auto " ) ;
SystemdSession sess ( r . value ( ) ) ;
SystemdSeat seat ( * currentSeat ) ;
if ( sess . isValid ( ) ) {
if ( seat . isValid ( ) ) {
NamedDBusObjectPath namedPath = sess . getSeat ( ) ;
if ( currentSession )
* currentSession = r . value ( ) ;
* currentSeat = namedPath . path ;
return true ;
return true ;
}
}
}
else {
// auto is newer and may not exist on all platforms, fallback to GetSessionByPID if the above failed
QDBusReply < QDBusObjectPath > r = man . call ( QStringLiteral ( " GetSessionByPID " ) , ( uint ) QCoreApplication : : applicationPid ( ) ) ;
if ( r . isValid ( ) ) {
SystemdSession sess ( r . value ( ) ) ;
if ( sess . isValid ( ) ) {
NamedDBusObjectPath namedPath = sess . getSeat ( ) ;
* currentSeat = namedPath . path ;
return true ;
}
}
} else {
CKManager man ;
CKManager man ;
QDBusReply < QDBusObjectPath > r = man . call ( QStringLiteral ( " GetCurrentSession " ) ) ;
QDBusReply < QDBusObjectPath > r = man . call ( QStringLiteral ( " GetCurrentSession " ) ) ;
if ( r . isValid ( ) ) {
if ( r . isValid ( ) ) {
@ -699,7 +706,8 @@ KDisplayManager::localSessions(SessList &list)
* doesn ' t seem exactly . . . right to me - - mbriza
* doesn ' t seem exactly . . . right to me - - mbriza
*/
*/
se . session = QStringLiteral ( " <unknown> " ) ;
se . session = QStringLiteral ( " <unknown> " ) ;
se . self = sp = = currentSession ;
se . self = lsess . property ( " Id " ) . toString ( ) = = qgetenv ( " XDG_SESSION_ID " ) ;
se . tty = ! lsess . property ( " TTY " ) . toString ( ) . isEmpty ( ) ;
se . tty = ! lsess . property ( " TTY " ) . toString ( ) . isEmpty ( ) ;
}
}
list . append ( se ) ;
list . append ( se ) ;