mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-24 19:02:51 +00:00

the default layout is done via the scripting support, that's just a no go. plasma-default-layoutrc is possible simpler solution with for the madness that the default plasma settings are done on initial setup but it most likely some features will have to be extended, especially the containment size option. hardcoding panel and default view to always be available by setting virtual desktops and other misc settings accordingly seems better but that will probably break more code thus avoiding it for now
129 lines
4 KiB
C++
129 lines
4 KiB
C++
/*
|
|
* Copyright 2006-2007 Aaron Seigo <aseigo@kde.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2,
|
|
* or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details
|
|
*
|
|
* You should have received a copy of the GNU Library General Public
|
|
* License along with this program; if not, write to the
|
|
* Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include <KApplication>
|
|
#include <KAboutData>
|
|
#include <KCmdLineArgs>
|
|
#include <KGlobalSettings>
|
|
#include <KLocale>
|
|
#include <KIcon>
|
|
#include <KDebug>
|
|
#include <kdeversion.h>
|
|
|
|
#include <QTime>
|
|
|
|
#include <config-workspace.h>
|
|
#include "plasmaapp.h"
|
|
|
|
#ifdef Q_WS_X11
|
|
#include <X11/Xlib.h>
|
|
#include <fixx11h.h>
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
#include "accessibility/accessiblefactory.h"
|
|
|
|
static const char description[] = I18N_NOOP( "The KDE desktop, panels and widgets workspace application." );
|
|
QString plasmaLocale;
|
|
|
|
extern "C"
|
|
KDE_EXPORT int kdemain(int argc, char **argv)
|
|
{
|
|
kDebug() << "!!{} STARTUP TIME" << QTime().msecsTo(QTime::currentTime()) << "START" << "(line:" << __LINE__ << ")";
|
|
|
|
plasmaLocale = KLocale("libplasma").language();
|
|
// dual head support
|
|
int associatedScreen = 0;
|
|
#ifdef Q_WS_X11
|
|
{
|
|
if (KGlobalSettings::isMultiHead()) {
|
|
Display *dpy = XOpenDisplay(NULL);
|
|
if (!dpy) {
|
|
fprintf(stderr, "%s: FATAL ERROR: couldn't open display %s\n",
|
|
argv[0], XDisplayName(NULL));
|
|
exit(1);
|
|
}
|
|
|
|
int numberOfScreens = ScreenCount(dpy);
|
|
associatedScreen = DefaultScreen(dpy);
|
|
QString displayName = QString::fromLocal8Bit(XDisplayString(dpy));
|
|
int pos = displayName.lastIndexOf('.');
|
|
|
|
XCloseDisplay(dpy);
|
|
dpy = 0;
|
|
|
|
if (pos != -1) {
|
|
displayName.truncate(pos);
|
|
}
|
|
|
|
if (numberOfScreens > 1) {
|
|
for (int i = 0; i < numberOfScreens; ++i) {
|
|
if (i != associatedScreen && fork() == 0) {
|
|
associatedScreen = i;
|
|
// break here because we are the child process, we don't
|
|
// want to fork() anymore
|
|
break;
|
|
}
|
|
}
|
|
|
|
QString env = QString("DISPLAY=%2.%1").arg(associatedScreen).arg(displayName);
|
|
|
|
if (putenv(strdup(env.toLocal8Bit()))) {
|
|
fprintf(stderr,
|
|
"%s: WARNING: unable to set DISPLAY environment variable\n",
|
|
argv[0]);
|
|
perror("putenv()");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
QByteArray appName = "plasma-desktop";
|
|
if (associatedScreen > 0) {
|
|
appName.append("-screen-").append(QByteArray::number(associatedScreen));
|
|
}
|
|
|
|
KAboutData aboutData(appName, 0, ki18n("Plasma Desktop Shell"),
|
|
WORKSPACE_VERSION_STRING, ki18n(description), KAboutData::License_GPL,
|
|
ki18n("Copyright 2006-2009, The KDE Team"));
|
|
aboutData.addAuthor(ki18n("Aaron J. Seigo"),
|
|
ki18n("Author and maintainer"),
|
|
"aseigo@kde.org");
|
|
aboutData.addCredit(ki18n("John Lions"),
|
|
ki18n("In memory of his contributions, 1937-1998."),
|
|
0, "http://en.wikipedia.org/wiki/John_Lions");
|
|
|
|
KCmdLineArgs::init(argc, argv, &aboutData);
|
|
|
|
PlasmaApp *app = PlasmaApp::self();
|
|
QApplication::setWindowIcon(KIcon("plasma"));
|
|
app->disableSessionManagement(); // autostarted
|
|
|
|
#ifndef QT_NO_ACCESSIBILITY
|
|
QAccessible::installFactory(Plasma::accessibleInterfaceFactory);
|
|
#endif
|
|
|
|
int rc = app->exec();
|
|
delete app;
|
|
return rc;
|
|
}
|