--- kdebase-3.4.0/kdm/kfrontend/kgreeter.cpp~ 2005-03-23 13:46:17 +0300 +++ kdebase-3.4.0/kdm/kfrontend/kgreeter.cpp 2005-03-23 13:52:10 +0300 @@ -331,6 +331,7 @@ KGreeter::putSession( const QString &typ void KGreeter::insertSessions() { +#if 0 for (char **dit = _sessionsDirs; *dit; ++dit) { QStringList ents = QDir( *dit ).entryList(); for (QStringList::ConstIterator it = ents.begin(); it != ents.end(); ++it) @@ -349,6 +350,29 @@ KGreeter::insertSessions() putSession( "custom", i18n("Custom"), false, "custom" ); putSession( "failsafe", i18n("Failsafe"), false, "failsafe" ); qBubbleSort( sessionTypes ); +#endif + char *sesslist = "runwm --list"; + FILE *status = popen(sesslist, "r"); + if (status) + { + while (!feof(status)) + { + char tmp[64]; + QString tmpSess; + fgets(tmp, 63, status); + tmpSess = QString::fromLatin1(tmp).stripWhiteSpace(); + if( tmpSess == "default" ) + putSession( "default", i18n("Default"), false, "default" ); + else + putSession( tmpSess, tmpSess, false, "custom" ); + } + } + else + { + putSession( "default", i18n("Default"), false, "default" ); + } + pclose(status); + putSession( "failsafe", i18n("Failsafe"), false, "failsafe" ); for (uint i = 0; i < sessionTypes.size() && !sessionTypes[i].hid; i++) { sessMenu->insertItem( sessionTypes[i].name, i ); switch (sessionTypes[i].prio) { --- kdebase-3.4.0/kdm/backend/client.c~ 2005-03-23 13:57:55 +0300 +++ kdebase-3.4.0/kdm/backend/client.c 2005-03-23 14:00:34 +0300 @@ -1427,6 +1427,7 @@ StartClient() GSendStr( desksess ); close( mstrtalk.pipe->wfd ); userEnviron = setEnv( userEnviron, "DESKTOP_SESSION", desksess ); +#if 0 for (i = 0; td->sessionsDirs[i]; i++) { fname = 0; if (StrApp( &fname, td->sessionsDirs[i], "/", desksess, ".desktop", (char *)0 )) { @@ -1447,6 +1448,8 @@ StartClient() sessargs = desksess; else sessargs = ""; +#endif + sessargs = desksess; gotit: if (!(argv = parseArgs( (char **)0, td->session )) || !(argv = addStrArr( argv, sessargs, -1 )))