summaryrefslogtreecommitdiffstats
path: root/kcontrol/xinerama
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit4aed2c8219774f5d797760606b8489a92ddc5163 (patch)
tree3f8c130f7d269626bf6a9447407ef6c35954426a /kcontrol/xinerama
downloadtdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz
tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kcontrol/xinerama')
-rw-r--r--kcontrol/xinerama/Makefile.am18
-rw-r--r--kcontrol/xinerama/kcmxinerama.cpp254
-rw-r--r--kcontrol/xinerama/kcmxinerama.h62
-rw-r--r--kcontrol/xinerama/xinerama.desktop202
-rw-r--r--kcontrol/xinerama/xineramawidget.ui326
-rw-r--r--kcontrol/xinerama/xineramawidget.ui.h14
6 files changed, 876 insertions, 0 deletions
diff --git a/kcontrol/xinerama/Makefile.am b/kcontrol/xinerama/Makefile.am
new file mode 100644
index 000000000..5b0da6939
--- /dev/null
+++ b/kcontrol/xinerama/Makefile.am
@@ -0,0 +1,18 @@
+AM_CPPFLAGS = $(all_includes)
+
+kde_module_LTLIBRARIES = kcm_xinerama.la
+
+kcm_xinerama_la_SOURCES = kcmxinerama.cpp xineramawidget.ui
+
+kcm_xinerama_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+kcm_xinerama_la_LIBADD = -lkdeui
+
+METASOURCES = AUTO
+
+noinst_HEADERS = kcmxinerama.h
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/kcmxinerama.pot
+
+xinerama_datadir = $(kde_appsdir)/.hidden
+xinerama_data_DATA = xinerama.desktop
diff --git a/kcontrol/xinerama/kcmxinerama.cpp b/kcontrol/xinerama/kcmxinerama.cpp
new file mode 100644
index 000000000..229672f6e
--- /dev/null
+++ b/kcontrol/xinerama/kcmxinerama.cpp
@@ -0,0 +1,254 @@
+/**
+ * kcmxinerama.cpp
+ *
+ * Copyright (c) 2002-2004 George Staikos <staikos@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 of the License, 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 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 "kcmxinerama.h"
+#include <dcopclient.h>
+#include <kaboutdata.h>
+#include <kapplication.h>
+#include <kconfig.h>
+#include <kdialog.h>
+#include <kglobal.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kwin.h>
+
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qcombobox.h>
+#include <qtable.h>
+#include <qcolor.h>
+#include <qpushbutton.h>
+
+
+KCMXinerama::KCMXinerama(QWidget *parent, const char *name)
+ : KCModule(parent, name) {
+ _indicators.setAutoDelete(true);
+
+ KAboutData *about =
+ new KAboutData(I18N_NOOP("kcmxinerama"),
+ I18N_NOOP("KDE Multiple Monitor Configurator"),
+ 0, 0, KAboutData::License_GPL,
+ I18N_NOOP("(c) 2002-2003 George Staikos"));
+
+ about->addAuthor("George Staikos", 0, "staikos@kde.org");
+ setAboutData( about );
+
+ setQuickHelp( i18n("<h1>Multiple Monitors</h1> This module allows you to configure KDE support"
+ " for multiple monitors."));
+
+ config = new KConfig("kdeglobals", false, false);
+ ksplashrc = new KConfig("ksplashrc", false, false);
+
+ connect(&_timer, SIGNAL(timeout()), this, SLOT(clearIndicator()));
+
+ QGridLayout *grid = new QGridLayout(this, 1, 1, KDialog::marginHint(),
+ KDialog::spacingHint());
+
+ // Setup the panel
+ _displays = QApplication::desktop()->numScreens();
+
+ if (QApplication::desktop()->isVirtualDesktop()) {
+ QStringList dpyList;
+ xw = new XineramaWidget(this);
+ grid->addWidget(xw, 0, 0);
+ QString label = i18n("Display %1");
+
+ xw->headTable->setNumRows(_displays);
+
+ for (int i = 0; i < _displays; i++) {
+ QString l = label.arg(i+1);
+ QRect geom = QApplication::desktop()->screenGeometry(i);
+ xw->_unmanagedDisplay->insertItem(l);
+ xw->_ksplashDisplay->insertItem(l);
+ dpyList.append(l);
+ xw->headTable->setText(i, 0, QString::number(geom.x()));
+ xw->headTable->setText(i, 1, QString::number(geom.y()));
+ xw->headTable->setText(i, 2, QString::number(geom.width()));
+ xw->headTable->setText(i, 3, QString::number(geom.height()));
+ }
+
+ xw->_unmanagedDisplay->insertItem(i18n("Display Containing the Pointer"));
+
+ xw->headTable->setRowLabels(dpyList);
+
+ connect(xw->_ksplashDisplay, SIGNAL(activated(int)),
+ this, SLOT(windowIndicator(int)));
+ connect(xw->_unmanagedDisplay, SIGNAL(activated(int)),
+ this, SLOT(windowIndicator(int)));
+ connect(xw->_identify, SIGNAL(clicked()),
+ this, SLOT(indicateWindows()));
+
+ connect(xw, SIGNAL(configChanged()), this, SLOT(changed()));
+ } else { // no Xinerama
+ QLabel *ql = new QLabel(i18n("<qt><p>This module is only for configuring systems with a single desktop spread across multiple monitors. You do not appear to have this configuration.</p></qt>"), this);
+ grid->addWidget(ql, 0, 0);
+ }
+
+ grid->activate();
+
+ load();
+}
+
+KCMXinerama::~KCMXinerama() {
+ _timer.stop();
+ delete ksplashrc;
+ ksplashrc = 0;
+ delete config;
+ config = 0;
+ clearIndicator();
+}
+
+#define KWIN_XINERAMA "XineramaEnabled"
+#define KWIN_XINERAMA_MOVEMENT "XineramaMovementEnabled"
+#define KWIN_XINERAMA_PLACEMENT "XineramaPlacementEnabled"
+#define KWIN_XINERAMA_MAXIMIZE "XineramaMaximizeEnabled"
+#define KWIN_XINERAMA_FULLSCREEN "XineramaFullscreenEnabled"
+
+void KCMXinerama::load() {
+ load( false );
+}
+
+void KCMXinerama::load(bool useDefaults) {
+ if (QApplication::desktop()->isVirtualDesktop()) {
+ int item = 0;
+ config->setReadDefaults( useDefaults );
+ config->setGroup("Windows");
+ xw->_enableXinerama->setChecked(config->readBoolEntry(KWIN_XINERAMA, true));
+ xw->_enableResistance->setChecked(config->readBoolEntry(KWIN_XINERAMA_MOVEMENT, true));
+ xw->_enablePlacement->setChecked(config->readBoolEntry(KWIN_XINERAMA_PLACEMENT, true));
+ xw->_enableMaximize->setChecked(config->readBoolEntry(KWIN_XINERAMA_MAXIMIZE, true));
+ xw->_enableFullscreen->setChecked(config->readBoolEntry(KWIN_XINERAMA_FULLSCREEN, true));
+ item = config->readNumEntry("Unmanaged", QApplication::desktop()->primaryScreen());
+ if ((item < 0 || item >= _displays) && (item != -3))
+ xw->_unmanagedDisplay->setCurrentItem(QApplication::desktop()->primaryScreen());
+ else if (item == -3) // pointer warp
+ xw->_unmanagedDisplay->setCurrentItem(_displays);
+ else xw->_unmanagedDisplay->setCurrentItem(item);
+
+ ksplashrc->setGroup("Xinerama");
+ item = ksplashrc->readNumEntry("KSplashScreen", QApplication::desktop()->primaryScreen());
+ if (item < 0 || item >= _displays)
+ xw->_ksplashDisplay->setCurrentItem(QApplication::desktop()->primaryScreen());
+ else xw->_ksplashDisplay->setCurrentItem(item);
+
+ emit changed(useDefaults);
+ }
+ else
+ emit changed( false );
+}
+
+
+void KCMXinerama::save() {
+ if (QApplication::desktop()->isVirtualDesktop()) {
+ config->setGroup("Windows");
+ config->writeEntry(KWIN_XINERAMA,
+ xw->_enableXinerama->isChecked());
+ config->writeEntry(KWIN_XINERAMA_MOVEMENT,
+ xw->_enableResistance->isChecked());
+ config->writeEntry(KWIN_XINERAMA_PLACEMENT,
+ xw->_enablePlacement->isChecked());
+ config->writeEntry(KWIN_XINERAMA_MAXIMIZE,
+ xw->_enableMaximize->isChecked());
+ config->writeEntry(KWIN_XINERAMA_FULLSCREEN,
+ xw->_enableFullscreen->isChecked());
+ int item = xw->_unmanagedDisplay->currentItem();
+ config->writeEntry("Unmanaged", item == _displays ? -3 : item);
+ config->sync();
+
+ if (!kapp->dcopClient()->isAttached())
+ kapp->dcopClient()->attach();
+ kapp->dcopClient()->send("kwin", "", "reconfigure()", "");
+
+ ksplashrc->setGroup("Xinerama");
+ ksplashrc->writeEntry("KSplashScreen", xw->_enableXinerama->isChecked() ? xw->_ksplashDisplay->currentItem() : -2 /* ignore Xinerama */);
+ ksplashrc->sync();
+ }
+
+ KMessageBox::information(this, i18n("Your settings will only affect newly started applications."), i18n("KDE Multiple Monitors"), "nomorexineramaplease");
+
+ emit changed(false);
+}
+
+void KCMXinerama::defaults() {
+ load( true );
+}
+
+void KCMXinerama::indicateWindows() {
+ _timer.stop();
+
+ clearIndicator();
+ for (int i = 0; i < _displays; i++)
+ _indicators.append(indicator(i));
+
+ _timer.start(1500, true);
+}
+
+void KCMXinerama::windowIndicator(int dpy) {
+ if (dpy >= _displays)
+ return;
+
+ _timer.stop();
+
+ clearIndicator();
+ _indicators.append(indicator(dpy));
+
+ _timer.start(1500, true);
+}
+
+QWidget *KCMXinerama::indicator(int dpy) {
+ QLabel *si = new QLabel(QString::number(dpy+1), 0, "Screen Indicator", WX11BypassWM );
+
+ QFont fnt = KGlobalSettings::generalFont();
+ fnt.setPixelSize(100);
+ si->setFont(fnt);
+ si->setFrameStyle(QFrame::Panel);
+ si->setFrameShadow(QFrame::Plain);
+ si->setAlignment(Qt::AlignCenter);
+
+ QPoint screenCenter(QApplication::desktop()->screenGeometry(dpy).center());
+ QRect targetGeometry(QPoint(0,0), si->sizeHint());
+ targetGeometry.moveCenter(screenCenter);
+ si->setGeometry(targetGeometry);
+ si->show();
+
+ return si;
+}
+
+void KCMXinerama::clearIndicator() {
+ _indicators.clear();
+}
+
+extern "C" {
+ KDE_EXPORT KCModule *create_xinerama(QWidget *parent, const char *name) {
+ KGlobal::locale()->insertCatalogue("kcmxinerama");
+ return new KCMXinerama(parent, name);
+ }
+
+ KDE_EXPORT bool test_xinerama() {
+ return QApplication::desktop()->isVirtualDesktop();
+ }
+}
+
+
+#include "kcmxinerama.moc"
+
diff --git a/kcontrol/xinerama/kcmxinerama.h b/kcontrol/xinerama/kcmxinerama.h
new file mode 100644
index 000000000..07b835fbc
--- /dev/null
+++ b/kcontrol/xinerama/kcmxinerama.h
@@ -0,0 +1,62 @@
+/**
+ * kcmxinerama.h
+ *
+ * Copyright (c) 2002-2004 George Staikos <staikos@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 of the License, 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 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.
+ */
+
+#ifndef _KCM_XINERAMA_H
+#define _KCM_XINERAMA_H
+
+#include <kcmodule.h>
+#include <qptrlist.h>
+#include <qtimer.h>
+
+#include "xineramawidget.h"
+
+class KConfig;
+class QWidget;
+
+class KCMXinerama : public KCModule {
+ Q_OBJECT
+public:
+ KCMXinerama(QWidget *parent = 0L, const char *name = 0L);
+ virtual ~KCMXinerama();
+
+ void load();
+ void load(bool useDefaults );
+ void save();
+ void defaults();
+
+public slots:
+ void windowIndicator(int dpy);
+ void clearIndicator();
+
+ void indicateWindows();
+
+private:
+ QWidget* indicator(int dpy);
+ KConfig *config, *ksplashrc;
+ XineramaWidget *xw;
+ QTimer _timer;
+ QPtrList<QWidget> _indicators;
+
+ int _displays;
+
+};
+
+#endif
+
diff --git a/kcontrol/xinerama/xinerama.desktop b/kcontrol/xinerama/xinerama.desktop
new file mode 100644
index 000000000..5adb0f363
--- /dev/null
+++ b/kcontrol/xinerama/xinerama.desktop
@@ -0,0 +1,202 @@
+[Desktop Entry]
+Icon=identity
+Type=Application
+Exec=kcmshell xinerama
+DocPath=kcontrol/multiplemonitors.html
+
+X-KDE-Library=xinerama
+X-KDE-Test-Module=true
+Name=Multiple Monitors
+Name[af]=Veelvuldige Skerms
+Name[ar]=شاشات متعددة
+Name[be]=Некалькі манітораў
+Name[bg]=Многомониторен режим
+Name[bn]=একাধিক মনিটর
+Name[br]=Lies skramm
+Name[bs]=Višestruki monitori
+Name[ca]=Múltiples monitors
+Name[cs]=Více monitorů
+Name[csb]=Wiele mònitorów
+Name[cy]=Dangosyddion Lluosol
+Name[da]=Flere skærme
+Name[de]=Mehrere Monitore
+Name[el]=Πολλαπλές οθόνες
+Name[eo]=Oblaj ekranoj
+Name[es]=Varios monitores
+Name[et]=Mitu monitori
+Name[eu]=Monitore anitz
+Name[fa]=نمایشگرهای چندگانه
+Name[fi]=Useita näyttöjä
+Name[fr]=Moniteurs multiples
+Name[fy]=Meardere byldskermen
+Name[ga]=Scáileáin Iomadúla
+Name[gl]=Múltiplos Monitores
+Name[he]=מספר מסכים
+Name[hi]=अनेक मॉनीटर्स
+Name[hr]=Višestruki monitori
+Name[hu]=Több képernyő kezelése
+Name[is]=Margir skjáir
+Name[it]=Monitor multipli
+Name[ja]=マルチモニタ
+Name[ka]=რამდენიმე მონიტორი
+Name[kk]=Бірнеше мониторлар
+Name[km]=ម៉ូនីទ័រ​ច្រើន
+Name[ko]=다중 모니터
+Name[lt]=Keli monitoriai
+Name[lv]=Vairāki monitori
+Name[mk]=Повеќе монитори
+Name[mn]=Олон монитор
+Name[ms]=Berbilang Monitor
+Name[mt]=Skrinijiet multipli
+Name[nb]=Flere skjermer
+Name[nds]=Mehr as een Schirm
+Name[ne]=बहुविध मोनिटर
+Name[nl]=Meerdere monitoren
+Name[nn]=Fleire skjermar
+Name[pa]=ਬਹੁ ਮਾਨੀਟਰ
+Name[pl]=Wiele monitorów
+Name[pt]=Vários Monitores
+Name[pt_BR]=Múltiplos Monitores
+Name[ro]=Monitoare multiple
+Name[ru]=Несколько мониторов
+Name[rw]=Mugaragaza Zitandukanye
+Name[se]=Máŋggaid searpma
+Name[sk]=Viac monitorov
+Name[sl]=Več zaslonov
+Name[sr]=Више монитора
+Name[sr@Latn]=Više monitora
+Name[sv]=Flera bildskärmar
+Name[ta]=பல திரைகள்
+Name[tg]=Чанд намоишгар
+Name[th]=หลายจอภาพ
+Name[tr]=Çoklu Monitör
+Name[tt]=Berniçä Küräk
+Name[uk]=Комбінація моніторів
+Name[uz]=Bir nechta monitor
+Name[uz@cyrillic]=Бир нечта монитор
+Name[vi]=Nhiều Màn hình
+Name[wa]=Multi-waitroûles
+Name[zh_CN]=多个监视器
+Name[zh_TW]=多重顯示器
+Comment=Configure KDE for multiple monitors
+Comment[af]=Stel KDE vir veelvuldige skerms op
+Comment[ar]=إعداد KDE لإستعمال الشاشات المتعددة
+Comment[be]=Настаўленні KDE для працы з некалькімі маніторамі
+Comment[bg]=Настройване на системата за поддръжка на много монитори
+Comment[bn]=একাধিক মনিটরের জন্য কে.ডি.ই কনফিগার করুন
+Comment[br]=Kefluniañ KDE gant meur a skrammoù
+Comment[bs]=Podesite KDE za više monitora
+Comment[ca]=Configura KDE per a múltiples monitors
+Comment[cs]=Nastavení KDE pro více monitorů
+Comment[csb]=Kònfigùracëjô KDE przë wielu mònitorach
+Comment[cy]=Ffurfweddu dangosyddion lluosol i KDE
+Comment[da]=Indstil KDE for flere skærme
+Comment[de]=KDE für mehrere Monitore einrichten
+Comment[el]=Ρύθμιση του KDE για πολλαπλές οθόνες
+Comment[eo]=Agordu KDE por oblaj ekranoj
+Comment[es]=Configuración de KDE para varios monitores
+Comment[et]=KDE seadistamine mitme monitori kasutamiseks
+Comment[eu]=Konfiguratu KDE monitore aniztasunerako
+Comment[fa]=پیکربندی نمایشگرهای چندگانه
+Comment[fi]=Muokkaa KDE sopivaksi usealle näytölle
+Comment[fr]=Configuration de KDE pour l'utilisation de moniteurs multiples
+Comment[fy]=Hjir kinne jo KDE foar meardere byldskermen ynstelle
+Comment[gl]=Configurar KDE para múltiplos monitores
+Comment[he]=הגדר את KDE לשימוש במספר מסכים
+Comment[hi]=अनेक मॉनीटर्स के लिए केडीई कॉन्फ़िगर करें
+Comment[hr]=Konfiguriranje KDE-a za više monitora
+Comment[hu]=Több monitor használata a KDE-ben
+Comment[is]=Stilla KDE fyrir marga skjái
+Comment[it]=Configura KDE per utilizzare più monitor
+Comment[ja]=KDE を複数のモニタ向けに設定
+Comment[ka]=რამდენიმე მონიტორისთვის KDE -ს კონფიგურაცია
+Comment[kk]=KDE-ні бірнеше мониторлар үшін баптау
+Comment[km]=កំណត់​រចនាសម្ព័ន្ធ KDE សម្រាប់​ម៉ូនីទ័រ​ច្រើន
+Comment[ko]=KDE 다중 모니터 설정
+Comment[lt]=Konfigūruoti KDE keliems monitoriams
+Comment[lv]=Konfigure KDE priekš vairākiem monitoriem
+Comment[mk]=Конфигурирајте го KDE за повеќе монитори
+Comment[mn]=КДЭ олон монитор тохируулах
+Comment[ms]=Konfigur KDE untuk berbilang monitor
+Comment[mt]=Konfigurazzjoni tal-KDE għal skrinijiet multipli
+Comment[nb]=Tilpass KDE for flere skjermer
+Comment[nds]=KDE för mehr as een Schirm instellen
+Comment[ne]=बहुविध मोनिटरका लागि KDE कन्फिगर गर्नुहोस्
+Comment[nl]=Hier kunt u KDE voor meerdere monitoren instellen
+Comment[nn]=Set opp KDE for fleire skjermar
+Comment[pa]=ਕਈ ਮਾਨੀਟਰਾਂ ਲਈ KDE ਸੰਰਚਨਾ ਕਰੋ
+Comment[pl]=Konfiguracja KDE przy wielu monitorach
+Comment[pt]=Configuração do KDE para vários monitores
+Comment[pt_BR]=Configura o KDE para o uso de múltiplos monitores
+Comment[ro]=Configurează KDE pentru monitoare multiple
+Comment[ru]=Настройка KDE для нескольких мониторов
+Comment[rw]=Kuboneza KDE kuri mugaragaza zitandukanye
+Comment[se]=Heivet KDE:a máŋggaid šearpma várás
+Comment[sk]=Nastavenie KDE pre viac monitorov
+Comment[sl]=Nastavite KDE za več zaslonov
+Comment[sr]=Подешавање KDE-а за више монитора
+Comment[sr@Latn]=Podešavanje KDE-a za više monitora
+Comment[sv]=Anpassa KDE för flera bildskärmar
+Comment[ta]=பலவிதமான திரைகளுக்கு KDEஐ வடிவமை
+Comment[tg]=Танзими KDE барои намоишгарҳои виртуалӣ
+Comment[th]=ปรับแต่ง KDE สำหรับใช้กับจอภาพหลายจอ
+Comment[tr]=KDE'yi çoklu monitör kullanmak için yapılandır
+Comment[tt]=KDE'nıñ berniçä küräk belän eşläw caylawı
+Comment[uk]=Налаштування декількох моніторів для KDE
+Comment[uz]=KDE'ni bir nechta monitor uchun moslash
+Comment[uz@cyrillic]=KDE'ни бир нечта монитор учун мослаш
+Comment[vi]=Cấu hình KDE cho nhiều màn hình
+Comment[wa]=Apontyî KDE po on håynaedje so sacwantès waitroûles
+Comment[zh_CN]=配置 KDE 的多个监视器
+Comment[zh_TW]=設定 KDE 支援多重顯示器
+Keywords=Xinerama,dual head,multihead,monitor
+Keywords[ar]=Xinerama,dual head,multihead,monitor,ثنائي الرؤوس,متعدد الرؤوس,شاشة
+Keywords[be]=Два маніторы,Манітор,Некалькі манітораў,Дысплей,Xinerama,dual head,multihead,monitor
+Keywords[bg]=много, монитори, монитор, екран, дисплей, Xinerama, dual head, multihead, monitor
+Keywords[ca]=Xinerama,dual head,doble dispositiu,multihead,multiples dispositius,monitor
+Keywords[csb]=Xinerama,dwa mònitorë,wiele mònitorów,mònitor
+Keywords[cy]=Xinerama,pen deuol,amlben,dangosydd
+Keywords[da]=Xinerama,dualt hovede,multihovede,skærm
+Keywords[de]=inerama,dual head,multihead,monitor
+Keywords[el]=Xinerama,dual head,multihead,οθόνη
+Keywords[eo]=duobla,duoblaj,oblaj,ekrano,ekranoj
+Keywords[et]=Xinerama,kaks monitori,mitu monitori,monitor
+Keywords[eu]=Xinerama,dual head,multihead,monitorea
+Keywords[fa]=Xinerama، سرآیند دوگان، سرآیند چندگانه، نمایشگر
+Keywords[fi]=Xinerama,näyttö,kaksi näyttöä,useita näyttöjä
+Keywords[fr]=Xinerama,dual head,multihead,moniteur,multitête,double écran, multiécran
+Keywords[fy]=Xinerama,dual head,multihead,monitor,byldskerm
+Keywords[gl]=Xinerama,cabeza dual,cabeza múltiple,monitor
+Keywords[he]=Xinerama,דו ראשי,רב ראשי,מסך, dual head,multihead,monitor
+Keywords[hi]=सिनेरामा,ड्यूएल हेड,मल्टी-हेड,मॉनीटर
+Keywords[hr]=Xinerama,dual head,multihead,monitor,višestruki monitori
+Keywords[hu]=Xinerama,két fejes,két fej,monitor
+Keywords[it]=Xinerama,dual head,multihead,monitor,monitor multipli
+Keywords[ja]=Xinerama,デュアルヘッド,マルチヘッド,モニタ
+Keywords[km]=Xinerama,ក្បាល​ពីរ,ក្បាល​ច្រើន,ម៉ូនីទ័រ
+Keywords[lt]=Xinerama,dual head,multihead,monitor,dviejų monitorių,monitorius
+Keywords[lv]=Xinerama,dual head,multihead,monitori
+Keywords[mk]=Xinerama,dual head,multihead,monitor,монитор
+Keywords[mn]=Xinerama,dual head,multihead,монитор
+Keywords[nb]=Xinerama,to skjermer,flere skjermer,skjerm,monitor
+Keywords[nds]=Xinerama,dual head,multihead,monitor,Mehrschirmbedrief,Dubbelschirm
+Keywords[ne]=जिनेरामा, डअल हेड, मल्टिहेड, मनिटर
+Keywords[nl]=Xinerama,dual head,multihead,monitor,beeldscherm
+Keywords[nn]=Xinerama,to skjermar,fleire skjermar,skjerm,monitor
+Keywords[pa]=Xinerama,dual head,multihead,monitor, ਦੋ ਮਾਨੀਟਰ, ਮਾਨੀਟਰ
+Keywords[pl]=Xinerama,dwa monitory,wiele monitorów,monitor
+Keywords[pt]=xinerama,vários monitores,multihead,monitor
+Keywords[pt_BR]=Xinerama,monitores,multihead,monitor
+Keywords[rw]=Xinerama,umutwe nyabibiri,mitwemyinshi,mugaragaza
+Keywords[sl]=Xinerama,dual head,multihead,monitor,zaslon,dva
+Keywords[sr]=Xinerama,dual head,multihead,monitor,монитор,више монитора
+Keywords[sr@Latn]=Xinerama,dual head,multihead,monitor,monitor,više monitora
+Keywords[sv]=Xinerama,dubbla skärmar,flera skärmar,bildskärm
+Keywords[ta]= Xinerama,இரட்டை தலைப்பு,பலதலைப்பு,திரை
+Keywords[th]=Xinerama,หัวต่อคู่,หลายหัวต่อ,จอภาพ
+Keywords[tr]=Xinerama,çift ekran,çoklu ekran,monitör
+Keywords[uk]=Xinerama,dual head,multihead,монітор,комбінація моніторів
+Keywords[uz@cyrillic]=Xinerama,dual head,multihead,монитор
+Keywords[vi]=Xinerama,đầu kép,đa đầu,màn hình
+Keywords[wa]=Xinerama,deus waitroûles,multi-waitroûles,waitroûle,dual head,multihead
+Keywords[zh_CN]=Xinerama,dual head,multihead,monitor,双头,多头,监视器,显示器
diff --git a/kcontrol/xinerama/xineramawidget.ui b/kcontrol/xinerama/xineramawidget.ui
new file mode 100644
index 000000000..cab732afd
--- /dev/null
+++ b/kcontrol/xinerama/xineramawidget.ui
@@ -0,0 +1,326 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>XineramaWidget</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>XineramaWidget</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>658</width>
+ <height>389</height>
+ </rect>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QTable" row="1" column="0" rowspan="1" colspan="2">
+ <column>
+ <property name="text">
+ <string>X Coordinate</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Y Coordinate</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Width</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Height</string>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>headTable</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="vScrollBarMode">
+ <enum>Auto</enum>
+ </property>
+ <property name="hScrollBarMode">
+ <enum>Auto</enum>
+ </property>
+ <property name="numRows">
+ <number>2</number>
+ </property>
+ <property name="numCols">
+ <number>4</number>
+ </property>
+ <property name="showGrid">
+ <bool>true</bool>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>NoSelection</enum>
+ </property>
+ <property name="focusStyle">
+ <enum>FollowStyle</enum>
+ </property>
+ </widget>
+ <widget class="QButtonGroup" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>ButtonGroup1</cstring>
+ </property>
+ <property name="title">
+ <string>Multiple Monitor Support</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>_enableXinerama</cstring>
+ </property>
+ <property name="text">
+ <string>Enable multiple monitor virtual desktop support</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>_enableResistance</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Enable multiple monitor window resistance support</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>_enablePlacement</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Enable multiple monitor window placement support</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>_enableMaximize</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Enable multiple monitor window maximize support</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>_enableFullscreen</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Enable multiple monitor window fullscreen support</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QPushButton" row="3" column="1">
+ <property name="name">
+ <cstring>_identify</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Identify All Displays</string>
+ </property>
+ </widget>
+ <spacer row="3" column="0">
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>431</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Show unmanaged windows on:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>_unmanagedDisplay</cstring>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="1" column="1">
+ <property name="name">
+ <cstring>_ksplashDisplay</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>TextLabel2_2</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Show KDE splash screen on:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>_unmanagedDisplay</cstring>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="0" column="1">
+ <property name="name">
+ <cstring>_unmanagedDisplay</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </grid>
+</widget>
+<connections>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>_enableResistance</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>_enablePlacement</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>_enableMaximize</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>TextLabel2</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>_unmanagedDisplay</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>clicked()</signal>
+ <receiver>XineramaWidget</receiver>
+ <slot>emitConfigChanged()</slot>
+ </connection>
+ <connection>
+ <sender>_enableResistance</sender>
+ <signal>clicked()</signal>
+ <receiver>XineramaWidget</receiver>
+ <slot>emitConfigChanged()</slot>
+ </connection>
+ <connection>
+ <sender>_enablePlacement</sender>
+ <signal>clicked()</signal>
+ <receiver>XineramaWidget</receiver>
+ <slot>emitConfigChanged()</slot>
+ </connection>
+ <connection>
+ <sender>_enableMaximize</sender>
+ <signal>clicked()</signal>
+ <receiver>XineramaWidget</receiver>
+ <slot>emitConfigChanged()</slot>
+ </connection>
+ <connection>
+ <sender>_unmanagedDisplay</sender>
+ <signal>activated(int)</signal>
+ <receiver>XineramaWidget</receiver>
+ <slot>emitConfigChanged()</slot>
+ </connection>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>TextLabel2_2</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>_ksplashDisplay</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>_ksplashDisplay</sender>
+ <signal>activated(int)</signal>
+ <receiver>XineramaWidget</receiver>
+ <slot>emitConfigChanged()</slot>
+ </connection>
+ <connection>
+ <sender>_enableFullscreen</sender>
+ <signal>clicked()</signal>
+ <receiver>XineramaWidget</receiver>
+ <slot>emitConfigChanged()</slot>
+ </connection>
+ <connection>
+ <sender>_enableXinerama</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>_enableFullscreen</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+</connections>
+<includes>
+ <include location="local" impldecl="in implementation">kdialog.h</include>
+ <include location="local" impldecl="in implementation">xineramawidget.ui.h</include>
+</includes>
+<signals>
+ <signal>configChanged()</signal>
+</signals>
+<slots>
+ <slot access="private">emitConfigChanged()</slot>
+</slots>
+<layoutdefaults spacing="3" margin="6"/>
+<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
+</UI>
diff --git a/kcontrol/xinerama/xineramawidget.ui.h b/kcontrol/xinerama/xineramawidget.ui.h
new file mode 100644
index 000000000..8373eadd2
--- /dev/null
+++ b/kcontrol/xinerama/xineramawidget.ui.h
@@ -0,0 +1,14 @@
+/****************************************************************************
+** ui.h extension file, included from the uic-generated form implementation.
+**
+** If you wish to add, delete or rename functions or slots use
+** Qt Designer which will update this file, preserving your code. Create an
+** init() function in place of a constructor, and a destroy() function in
+** place of a destructor.
+*****************************************************************************/
+
+
+void XineramaWidget::emitConfigChanged()
+{
+emit configChanged();
+}