Исправлен выход из plasma при помощи cl-desktop-logout

master-3.5 3.5.0.2
parent 48e2a6d391
commit 0d52620b7a

@ -271,7 +271,7 @@ class Desktop(MethodsInterface):
elif session == 'kde':
logoutCommand = "/usr/bin/kquitapp ksmserver"
elif session == 'plasma':
logoutCommand = "/usr/bin/kquitapp5 ksmserver"
logoutCommand = "/usr/bin/pkill -f ksmserver"
elif session == 'gnome':
logoutCommand = "/usr/bin/qdbus org.gnome.SessionManager " \
"/org/gnome/SessionManager Logout 1"
@ -282,7 +282,7 @@ class Desktop(MethodsInterface):
raise DesktopError(_("Unable to send the logout command"))
return True
def waitLogout(self, urLogin, waitTime, postWaitTime=5):
def waitLogout(self, urLogin, waitTime, postWaitTime=20):
"""
Ожидать завершения пользовательского сеанса
@ -290,6 +290,17 @@ class Desktop(MethodsInterface):
urLogin: логин пользователя
waitTime: время ожидания завершения сеанса
"""
session = self.clVars.Get('cl_desktop_xsession')
if session == "plasma":
uid = self.clVars.Get('ur_uid')
if uid:
uid = int(uid)
for i in range(0, postWaitTime):
if not filter(lambda x: "ksmserver" in x,
getRunCommands(uid=uid)):
break
time.sleep(1)
if filter(lambda x: "xdm/xdm\x00--logout" in x,
getRunCommands()):
for i in range(0, waitTime):
@ -300,7 +311,7 @@ class Desktop(MethodsInterface):
else:
raise DesktopError(_("Unable to wait for completion "
"of the user logout"))
for wait in range(0, 5):
for wait in range(0, postWaitTime):
self.clVars.Invalidate('cl_desktop_online_data')
if urLogin not in self.clVars.Get('cl_desktop_online_user'):
return True

Loading…
Cancel
Save