from gi.repository import LightDM
display = os.getenv ('DISPLAY');
+xdg_seat = os.getenv ('XDG_SEAT');
+xdg_vtnr = os.getenv ('XDG_VTNR');
+xdg_session_cookie = os.getenv ('XDG_SESSION_COOKIE');
+xdg_session_class = os.getenv ('XDG_SESSION_CLASS');
if display is not None:
if display.startswith (':'):
greeter_id = 'GREETER-X-%s' % display[1:]
r = '%s START-SESSION' % greeter_id
if request == r:
- if not greeter.start_session_sync (None):
- status_notify ('%s SESSION-FAILED' % greeter_id)
+ try:
+ greeter.start_session_sync (None)
+ except GLib.Error as e:
+ status_notify ('%s SESSION-FAILED ERROR=%s' % (greeter_id, e.message))
r = '%s START-SESSION SESSION=' % greeter_id
if request.startswith (r):
- if not greeter.start_session_sync (request[len(r):]):
- status_notify ('%s SESSION-FAILED' % greeter_id)
+ try:
+ greeter.start_session_sync (request[len(r):])
+ except GLib.Error as e:
+ status_notify ('%s SESSION-FAILED ERROR=%s' % (greeter_id, e.message))
r = '%s LOG-USER-LIST-LENGTH' % greeter_id
if request == r:
return True
+def notify_hints (greeter):
+ if greeter.get_select_user_hint () is not None:
+ status_notify ('%s SELECT-USER-HINT USERNAME=%s' % (greeter_id, greeter.get_select_user_hint ()))
+ if greeter.get_select_guest_hint ():
+ status_notify ('%s SELECT-GUEST-HINT' % greeter_id)
+ if greeter.get_lock_hint ():
+ status_notify ('%s LOCK-HINT' % greeter_id)
+ if not greeter.get_has_guest_account_hint ():
+ status_notify ('%s HAS-GUEST-ACCOUNT-HINT=FALSE' % greeter_id)
+ if greeter.get_hide_users_hint ():
+ status_notify ('%s HIDE-USERS-HINT' % greeter_id)
+ if greeter.get_show_manual_login_hint ():
+ status_notify ('%s SHOW-MANUAL-LOGIN-HINT' % greeter_id)
+ if not greeter.get_show_remote_login_hint ():
+ status_notify ('%s SHOW-REMOTE-LOGIN-HINT=FALSE' % greeter_id)
+ timeout = greeter.get_autologin_timeout_hint ()
+ if greeter.get_autologin_user_hint () is not None:
+ if timeout != 0:
+ status_notify ('%s AUTOLOGIN-USER USERNAME=%s TIMEOUT=%d' % (greeter_id, greeter.get_autologin_user_hint (), timeout))
+ else:
+ status_notify ('%s AUTOLOGIN-USER USERNAME=%s' % (greeter_id, greeter.get_autologin_user_hint ()))
+ elif greeter.get_autologin_guest_hint ():
+ if timeout != 0:
+ status_notify ('%s AUTOLOGIN-GUEST TIMEOUT=%d' % (greeter_id, timeout))
+ else:
+ status_notify ('%s AUTOLOGIN-GUEST' % greeter_id)
+
path = os.getenv ('LIGHTDM_TEST_ROOT') + '/.s'
status_socket = socket.socket (socket.AF_UNIX, socket.SOCK_STREAM)
status_socket.connect (path)
GLib.io_add_watch (status_socket.fileno (), GLib.IO_IN | GLib.IO_HUP, request_cb)
-status_notify ('%s START' % greeter_id)
+status_text = '%s START' % greeter_id
+if xdg_seat is not None:
+ status_text += ' XDG_SEAT=%s' % xdg_seat
+if xdg_vtnr is not None:
+ status_text += ' XDG_VTNR=%s' % xdg_vtnr
+if xdg_session_cookie is not None:
+ status_text += ' XDG_SESSION_COOKIE=%s' % xdg_session_cookie
+if xdg_session_class is not None:
+ status_text += ' XDG_SESSION_CLASS=%s' % xdg_session_class
+status_notify (status_text)
config = GLib.KeyFile ()
config.load_from_file (os.getenv ('LIGHTDM_TEST_ROOT') + '/script', GLib.KeyFileFlags.NONE)
status_notify ('%s AUTHENTICATION-COMPLETE AUTHENTICATED=%s' % (greeter_id, is_authenticated))
def autologin_timer_expired_cb (greeter):
- status_notify ('%s AUTOLOGIN-TIMER-EXPIRED' % greeter_id)
+ pass
greeter = LightDM.Greeter ()
greeter.connect ('show-message', show_message_cb)
greeter.connect ('show-prompt', show_prompt_cb)
greeter.connect ('authentication-complete', authentication_complete_cb)
greeter.connect ('autologin-timer-expired', autologin_timer_expired_cb)
+resettable = False
+try:
+ resettable = config.get_boolean ('test-greeter-config', 'resettable')
+except:
+ pass
+if resettable:
+ LightDM.Greeter.get_instance ().set_resettable (True)
+ LightDM.Greeter.get_instance ().connect ('idle', idle_cb)
+ LightDM.Greeter.get_instance ().connect ('reset', reset_cb)
def user_added_cb (user_list, user):
status_notify ('%s USER-ADDED USERNAME=%s' % (greeter_id, user.get_name ()))
LightDM.UserList.get_instance ().connect ('user-removed', user_removed_cb)
status_notify ('%s CONNECT-TO-DAEMON' % greeter_id)
-if not greeter.connect_sync ():
+try:
+ greeter.connect_to_daemon_sync ()
+except:
status_notify ('%s FAIL-CONNECT-DAEMON' % greeter_id)
exit (1)
status_notify ('%s CONNECTED-TO-DAEMON' % greeter_id)
-if greeter.get_select_user_hint () is not None:
- status_notify ('%s SELECT-USER-HINT USERNAME=%s' % (greeter_id, greeter.get_select_user_hint ()))
-if greeter.get_select_guest_hint ():
- status_notify ('%s SELECT-GUEST-HINT' % greeter_id)
-if greeter.get_lock_hint ():
- status_notify ('%s LOCK-HINT' % greeter_id)
-if not greeter.get_has_guest_account_hint ():
- status_notify ('%s HAS-GUEST-ACCOUNT-HINT=FALSE' % greeter_id)
-if greeter.get_hide_users_hint ():
- status_notify ('%s HIDE-USERS-HINT' % greeter_id)
-if greeter.get_show_manual_login_hint ():
- status_notify ('%s SHOW-MANUAL-LOGIN-HINT' % greeter_id)
-if not greeter.get_show_remote_login_hint ():
- status_notify ('%s SHOW-REMOTE-LOGIN-HINT=FALSE' % greeter_id)
+def idle_cb (greeter):
+ status_notify ('%s IDLE' % (greeter_id))
+def reset_cb (greeter):
+ status_notify ('%s RESET' % (greeter_id))
+ notify_hints (greeter)
+
+notify_hints (greeter)
loop.run ()