--- desktop/prj/build.lst	2006-07-13 19:01:21.000000000 +0200
+++ desktop/prj/build.lst	2006-08-04 15:20:29.000000000 +0200
@@ -14,6 +14,8 @@ dt	desktop\win32\source\setup				nmake	-
 dt	desktop\win32\source\officeloader		nmake	-	w	dt_officeloader NULL
 dt	desktop\win32\source\applauncher		nmake	-	w	dt_applauncher NULL
 dt	desktop\win32\source\applauncher\ooo	nmake	-	w	dt_applauncher_ooo dt_applauncher.w NULL
+dt	desktop\unx\source					nmake	-	u	dt_uwrapper NULL
+dt	desktop\unx\splash					nmake	-	u	dt_usplash NULL
 dt	desktop\source\pagein					nmake	-	u	dt_pagein NULL
 dt	desktop\source\pkgchk					nmake	-	all	dt_pkgchk dt_dp_misc dt_app NULL
 dt	desktop\source\pkgchk\msi				nmake	-	w	dt_pkgchk_msi dt_pkgchk NULL
@@ -32,4 +34,4 @@ dt	desktop\source\deployment\registry\co
 dt	desktop\scripts 						nmake	-	u	dt_scripts NULL
 dt	desktop\macosx\source					nmake	-	u	dt_macosx_bundle	NULL
 dt	desktop\macosx\source\misc				nmake	-	u	dt_misc_macosxrc	NULL
-dt	desktop\util							nmake	-	all	dt_util dt_app dt_so_comp dt_spl dt_wrapper.w dt_officeloader.w dt_migr dt_macosx_bundle.u NULL
+dt	desktop\util							nmake	-	all	dt_util dt_app dt_so_comp dt_spl dt_uwrapper.u dt_usplash.u dt_wrapper.w dt_officeloader.w dt_migr dt_macosx_bundle.u NULL
--- desktop/prj/d.lst	2006-04-26 22:49:15.000000000 +0200
+++ desktop/prj/d.lst	2006-08-04 15:20:29.000000000 +0200
@@ -7,6 +7,7 @@ mkdir: %_DEST%\bin%_EXT%\remote2
 ..\%__SRC%\bin\soffice.bin %_DEST%\bin%_EXT%\soffice.bin
 ..\%__SRC%\bin\officeloader.exe %_DEST%\bin%_EXT%\soffice.exe
 ..\%__SRC%\bin\soffice %_DEST%\bin%_EXT%\soffice.bin
+..\%__SRC%\bin\ooqstart %_DEST%\bin%_EXT%\ooqstart
 
 ..\%__SRC%\bin\soffice_oo.exe %_DEST%\bin%_EXT%\soffice_oo.exe
 ..\%__SRC%\bin\soffice_so.exe %_DEST%\bin%_EXT%\soffice_so.exe
--- desktop/source/app/app.cxx	2006-08-01 13:19:53.000000000 +0200
+++ desktop/source/app/app.cxx	2006-08-04 15:20:29.000000000 +0200
@@ -1408,6 +1408,7 @@ void Desktop::Main()
     OpenSplashScreen();
     RTL_LOGFILE_CONTEXT_TRACE( aLog, "desktop (lo119109) Desktop::Main } OpenSplashScreen" );
 
+    SetSplashScreenProgress(10);
     {
         UserInstall::UserInstallError instErr_fin = UserInstall::finalize();
         if ( instErr_fin != UserInstall::E_None)
@@ -1423,7 +1424,7 @@ void Desktop::Main()
         }
         // refresh path information
         utl::Bootstrap::reloadData();
-        SetSplashScreenProgress(25);
+        SetSplashScreenProgress(20);
     }
 
     Reference< XMultiServiceFactory > xSMgr =
@@ -1436,7 +1437,7 @@ void Desktop::Main()
     {
         RegisterServices( xSMgr );
 
-        //SetSplashScreenProgress(15);
+        SetSplashScreenProgress(25);
 
 #ifndef UNX
         if ( pCmdLineArgs->IsHelp() ) {
@@ -1476,7 +1477,7 @@ void Desktop::Main()
         //  Read the common configuration items for optimization purpose
         if ( !InitializeConfiguration() ) return;
 
-        //SetSplashScreenProgress(20);
+        SetSplashScreenProgress(30);
 
         // set static variable to enabled/disable crash reporter
         retrieveCrashReporterState();
@@ -1537,10 +1538,10 @@ void Desktop::Main()
 #endif
 
         SetDisplayName( aTitle );
-//        SetSplashScreenProgress(30);
+        SetSplashScreenProgress(35);
         RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ create SvtPathOptions and SvtLanguageOptions" );
         pPathOptions = new SvtPathOptions;
-//        SetSplashScreenProgress(40);
+        SetSplashScreenProgress(40);
 //        pLanguageOptions = new SvtLanguageOptions(sal_True);
 //        SetSplashScreenProgress(45);
         RTL_LOGFILE_CONTEXT_TRACE( aLog, "} create SvtPathOptions and SvtLanguageOptions" );
@@ -1620,7 +1621,7 @@ void Desktop::Main()
                 OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ))), UNO_QUERY );
             if (xDesktopFrame.is())
             {
-//                SetSplashScreenProgress(60);
+                SetSplashScreenProgress(60);
                 Reference< XFrame > xBackingFrame;
                 Reference< ::com::sun::star::awt::XWindow > xContainerWindow;
 
@@ -1636,7 +1637,7 @@ void Desktop::Main()
                     Reference< XController > xBackingComp(
                         xSMgr->createInstanceWithArguments(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.StartModule") ), lArgs),
                         UNO_QUERY);
-//                    SetSplashScreenProgress(80);
+                    SetSplashScreenProgress(80);
                     if (xBackingComp.is())
                     {
                         Reference< ::com::sun::star::awt::XWindow > xBackingWin(xBackingComp, UNO_QUERY);
@@ -1679,7 +1680,7 @@ void Desktop::Main()
         return;
     }
     */
-//    SetSplashScreenProgress(55);
+    SetSplashScreenProgress(55);
 
     SvtFontSubstConfig().Apply();
 
@@ -1688,7 +1689,7 @@ void Desktop::Main()
 	aAppearanceCfg.SetApplicationDefaults( this );
 	SvtAccessibilityOptions aOptions;
 	aOptions.SetVCLSettings();
-//    SetSplashScreenProgress(60);
+    SetSplashScreenProgress(60);
 
 	Application::SetFilterHdl( LINK( this, Desktop, ImplInitFilterHdl ) );
 
@@ -1711,7 +1712,7 @@ void Desktop::Main()
     // use system window dialogs
     Application::SetSystemWindowMode( SYSTEMWINDOW_MODE_DIALOG );
 
-//    SetSplashScreenProgress(80);
+    SetSplashScreenProgress(80);
 
     if ( !bTerminateRequested && !pCmdLineArgs->IsInvisible() )
         InitializeQuickstartMode( xSMgr );
@@ -2902,14 +2903,18 @@ void Desktop::OpenSplashScreen()
         else if ( pCmdLine->IsWeb() )
             aAppName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "web" ));
 
+        // Which splash to use
+        OUString aSplashService( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.office.SplashScreen" ));
+        if ( pCmdLine->GetStringParam( CommandLineArgs::CMD_STRINGPARAM_SPLASHPIPE ).getLength() )
+            aSplashService = OUString::createFromAscii("com.sun.star.office.PipeSplashScreen");
+
         bVisible = sal_True;
         Sequence< Any > aSeq( 2 );
         aSeq[0] <<= bVisible;
         aSeq[1] <<= aAppName;
         m_rSplashScreen = Reference<XStatusIndicator>(
             comphelper::getProcessServiceFactory()->createInstanceWithArguments(
-            OUString::createFromAscii("com.sun.star.office.SplashScreen"),
-            aSeq), UNO_QUERY);
+            aSplashService, aSeq), UNO_QUERY);
 
         if(m_rSplashScreen.is())
                 m_rSplashScreen->start(OUString::createFromAscii("SplashScreen"), 100);
--- desktop/source/app/cmdlineargs.cxx	2005-09-08 19:05:40.000000000 +0200
+++ desktop/source/app/cmdlineargs.cxx	2006-08-04 15:20:29.000000000 +0200
@@ -412,6 +412,11 @@ sal_Bool CommandLineArgs::InterpretComma
 		SetBoolParam_Impl( CMD_BOOLPARAM_HELPMATH, sal_True );
 		return sal_True;
 	}
+    else if ( aArgStr.Copy(0, 13).EqualsIgnoreCaseAscii( "-splash-pipe=" ))
+    {
+		AddStringListParam_Impl( CMD_STRINGPARAM_SPLASHPIPE, aArgStr.Copy( 13 ) );
+		return sal_True;
+    }
     else if ( aArgStr.Copy(0, 8).EqualsIgnoreCaseAscii( "-accept=" ))
     {
 		AddStringListParam_Impl( CMD_STRINGPARAM_ACCEPT, aArgStr.Copy( 8 ) );
@@ -552,7 +557,7 @@ void CommandLineArgs::SetBoolParam( Bool
 	m_aBoolParams[eParam] = bNewValue;
 }
 
-const rtl::OUString& CommandLineArgs::GetStringParam( BoolParam eParam ) const
+const rtl::OUString& CommandLineArgs::GetStringParam( StringParam eParam ) const
 {
 	osl::MutexGuard  aMutexGuard( m_aMutex );
 
@@ -560,7 +565,7 @@ const rtl::OUString& CommandLineArgs::Ge
 	return m_aStrParams[eParam];
 }
 
-void CommandLineArgs::SetStringParam( BoolParam eParam, const rtl::OUString& aNewValue )
+void CommandLineArgs::SetStringParam( StringParam eParam, const rtl::OUString& aNewValue )
 {
 	osl::MutexGuard  aMutexGuard( m_aMutex );
 
@@ -861,7 +866,9 @@ sal_Bool CommandLineArgs::IsEmptyOrAccep
 {
     osl::MutexGuard  aMutexGuard( m_aMutex );
 
-    return m_bEmpty || ( ( m_nArgumentCount == 1 ) && ( m_aStrParams[ CMD_STRINGPARAM_ACCEPT ].getLength() ) );
+    return m_bEmpty ||
+        ( ( m_nArgumentCount == 1 ) && ( m_aStrParams[ CMD_STRINGPARAM_SPLASHPIPE ].getLength() ) ) ||
+        ( ( m_nArgumentCount == 1 ) && ( m_aStrParams[ CMD_STRINGPARAM_ACCEPT ].getLength() ) );
 }
 
 } // namespace desktop
--- desktop/source/app/cmdlineargs.hxx	2005-09-08 19:06:04.000000000 +0200
+++ desktop/source/app/cmdlineargs.hxx	2006-08-04 15:20:29.000000000 +0200
@@ -89,6 +89,7 @@ class CommandLineArgs
 		enum StringParam // must be zero based!
 		{
 			CMD_STRINGPARAM_PORTAL,
+			CMD_STRINGPARAM_SPLASHPIPE,
 			CMD_STRINGPARAM_ACCEPT,
 			CMD_STRINGPARAM_UNACCEPT,
 			CMD_STRINGPARAM_USERDIR,
@@ -120,8 +121,8 @@ class CommandLineArgs
 		sal_Bool				GetBoolParam( BoolParam eParam ) const;
 		void					SetBoolParam( BoolParam eParam, sal_Bool bNewValue );
 
-		const rtl::OUString&	GetStringParam( BoolParam eParam ) const;
-		void					SetStringParam( BoolParam eParam, const rtl::OUString& bNewValue );
+		const rtl::OUString&	GetStringParam( StringParam eParam ) const;
+		void					SetStringParam( StringParam eParam, const rtl::OUString& bNewValue );
 
 		// Access to bool parameters
 		sal_Bool				IsMinimized() const;
