diff options
Diffstat (limited to 'ksmserver')
-rw-r--r-- | ksmserver/main.cpp | 4 | ||||
-rw-r--r-- | ksmserver/server.cpp | 3 | ||||
-rw-r--r-- | ksmserver/server.h | 3 | ||||
-rw-r--r-- | ksmserver/startup.cpp | 10 |
4 files changed, 16 insertions, 4 deletions
diff --git a/ksmserver/main.cpp b/ksmserver/main.cpp index a7f8ef3d9..c971c2dde 100644 --- a/ksmserver/main.cpp +++ b/ksmserver/main.cpp @@ -35,6 +35,7 @@ static const KCmdLineOptions options[] = { "restore", I18N_NOOP("Restores the saved user session if available"), 0}, { "w", 0, 0 }, { "windowmanager <wm>", I18N_NOOP("Starts 'wm' in case no other window manager is \nparticipating in the session. Default is 'twin'"), 0}, + { "windowmanageraddargs <wm>", I18N_NOOP("Pass additional arguments to the window manager. Default is ''"), 0}, { "nolocal", I18N_NOOP("Also allow remote connections"), 0}, KCmdLineLastOption }; @@ -203,6 +204,7 @@ extern "C" KDE_EXPORT int kdemain( int argc, char* argv[] ) } TQCString wm = args->getOption("windowmanager"); + TQCString wmaddargs = args->getOption("windowmanageraddargs"); if ( wm.isEmpty() ) wm = "twin"; @@ -218,7 +220,7 @@ extern "C" KDE_EXPORT int kdemain( int argc, char* argv[] ) only_local = false; #endif - KSMServer *server = new KSMServer( TQString::fromLatin1(wm), only_local); + KSMServer *server = new KSMServer( TQString::fromLatin1(wm), TQString::fromLatin1(wmaddargs), only_local); kapp->dcopClient()->setDefaultObject( server->objId() ); IceSetIOErrorHandler( IoErrorHandler ); diff --git a/ksmserver/server.cpp b/ksmserver/server.cpp index 91cfb7544..f47f10ab2 100644 --- a/ksmserver/server.cpp +++ b/ksmserver/server.cpp @@ -578,12 +578,13 @@ static Status KSMNewClientProc ( SmsConn conn, SmPointer manager_data, extern "C" int _IceTransNoListen(const char * protocol); #endif -KSMServer::KSMServer( const TQString& windowManager, bool _only_local ) +KSMServer::KSMServer( const TQString& windowManager, const TQString& windowManagerAddArgs, bool _only_local ) : DCOPObject("ksmserver"), sessionGroup( "" ), startupNotifierIPDlg(0), shutdownNotifierIPDlg(0) { the_server = this; clean = false; wm = windowManager; + wmAddArgs = windowManagerAddArgs; shutdownType = KApplication::ShutdownTypeNone; diff --git a/ksmserver/server.h b/ksmserver/server.h index 9464d5275..ca73c3a86 100644 --- a/ksmserver/server.h +++ b/ksmserver/server.h @@ -58,7 +58,7 @@ k_dcop: void kcmPhase1Done(); void kcmPhase2Done(); public: - KSMServer( const TQString& windowManager, bool only_local ); + KSMServer( const TQString& windowManager, const TQString& windowManagerAddArgs, bool only_local ); ~KSMServer(); static KSMServer* self(); @@ -203,6 +203,7 @@ private: bool clean; KSMClient* clientInteracting; TQString wm; + TQString wmAddArgs; TQString sessionGroup; TQString sessionName; TQCString launcher; diff --git a/ksmserver/startup.cpp b/ksmserver/startup.cpp index b53ae3d18..eaee5f20c 100644 --- a/ksmserver/startup.cpp +++ b/ksmserver/startup.cpp @@ -180,7 +180,15 @@ void KSMServer::startDefaultSession() "autoStart1Done()", true); connectDCOPSignal( launcher, launcher, "autoStart2Done()", "autoStart2Done()", true); - startApplication( wm ); + if (!wmAddArgs.isEmpty()) { + TQStringList wmstartupcommand; + wmstartupcommand.split(" ", wmAddArgs); + wmstartupcommand.prepend(wm); + startApplication( wmstartupcommand ); + } + else { + startApplication( wm ); + } if ((showFancyLogin) && (!startupNotifierIPDlg)) { startupNotifierIPDlg = KSMStartupIPDlg::showStartupIP(); } |