diff -rNaud lxdm-0.4.1-orig/INSTALL lxdm-0.4.1/INSTALL
--- lxdm-0.4.1-orig/INSTALL	2011-07-29 15:42:33.000000000 +0200
+++ lxdm-0.4.1/INSTALL	2012-06-10 11:04:50.121000001 +0200
@@ -13,6 +13,9 @@
 
 modify data/Xsession.in as your distribution
 
+/etc/lxdm/Init
+before the greeter
+
 /etc/lxdm/PreLogin
 before login, have root's context
 
diff -rNaud lxdm-0.4.1-orig/src/lxdm.c lxdm-0.4.1/src/lxdm.c
--- lxdm-0.4.1-orig/src/lxdm.c	2011-07-29 15:42:33.000000000 +0200
+++ lxdm-0.4.1/src/lxdm.c	2012-06-10 11:04:41.577000001 +0200
@@ -495,11 +495,9 @@
 	gboolean plymouth;
     
 	plymouth=plymouth_is_running();
-	if(plymouth)
-	{
-		g_message("found plymouth running\n");
-		plymouth_prepare_transition();
-	}
+
+	g_message("found plymouth running\n");
+	plymouth_prepare_transition();
 
 	old_tty=get_active_vt();
 	if( !s ) s = g_strdup("/usr/bin/X");
@@ -527,16 +525,14 @@
 			/* use the active vt */
 			def_tty = old_tty;
 		if( nr_tty ) unlink("/var/spool/gdm/force-display-on-active-vt");
-		if(plymouth)
-		{
-			nr_tty=1;
-			plymouth_quit_with_transition();
-		}
+
+		nr_tty=1;
+		plymouth_quit_with_transition();
+
 	}
 	else
 	{
-		if(plymouth) /* set tty and plymouth running */
-			plymouth_quit_without_transition();
+		plymouth_quit_without_transition();
 	}
 	g_strfreev(arg);
 }
@@ -1818,6 +1814,8 @@
 	lxcom_init("/var/run/lxdm/lxdm.sock");
 	atexit(exit_cb);
 
+	g_spawn_command_line_async("/etc/lxdm/Init",NULL);
+
 	set_signal();
 	lxdm_get_tty();
 
