--- gnome-session/main.c~	2007-02-24 03:31:58.000000000 -0500
+++ gnome-session/main.c	2007-02-24 03:40:42.000000000 -0500
@@ -389,6 +389,11 @@
   gconf_client = gsm_get_conf_client ();
   gconf_client_add_dir (gconf_client, GSM_GCONF_CONFIG_PREFIX, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); 
   a_t_support = gconf_client_get_bool (gconf_client, ACCESSIBILITY_KEY, NULL);
+  if (g_getenv ("GDM_ATS") != NULL)
+    {
+      a_t_support = TRUE;
+    }
+
 
   if (a_t_support)
     {
@@ -439,6 +444,11 @@
   autosave       = gconf_client_get_bool (gconf_client, AUTOSAVE_MODE_KEY, NULL);
   logout_prompt  = gconf_client_get_bool (gconf_client, LOGOUT_PROMPT_KEY, NULL);
   a_t_support    = gconf_client_get_bool (gconf_client, ACCESSIBILITY_KEY, NULL);
+  if (g_getenv ("GDM_ATS") != NULL)
+    {
+      a_t_support = TRUE;
+    }
+
 
   gconf_client_notify_add (gconf_client,
 			   AUTOSAVE_MODE_KEY,
--- gnome-session/gsm-at-startup.c~	2007-02-12 15:32:51.000000000 -0500
+++ gnome-session/gsm-at-startup.c	2007-02-24 03:43:50.000000000 -0500
@@ -103,6 +103,7 @@
   GError *error = NULL;
   GConfClient *client;
   GSList *list;
+  const char *at_suggested_by_gdm;
 
   client  = gsm_get_conf_client ();
   list = gconf_client_get_list (client, AT_STARTUP_KEY, GCONF_VALUE_STRING, &error);
@@ -122,6 +123,18 @@
 	}
       g_slist_free (list);
     }
+
+  if ((at_suggested_by_gdm = g_getenv ("GDM_ATS")) != NULL) {
+	  int i;
+	  char **at_list;
+	  at_list = g_strsplit (at_suggested_by_gdm, " ", 0);
+	  for (i = 0; at_list[i] != NULL; i++) {
+		  char *at = at_list[i];
+		  gsm_assistive_tech_exec (at);
+	  }
+	  g_strfreev (at_list);
+  }  
+
 }
 
 void
