Commit 2f83a443 authored by Martin Flöser's avatar Martin Flöser

[kcms] Remove window manager component chooser

In a Wayland world it doesn't make much sense to offer a different
WM anymore. But also on X11 it becomes more and more questionable to
allow changing the WM. E.g. also tooltips need KWin now.

The provided wms were also questionable with Compiz and Metacity being
basically dead and openbox the only working one.

If someone still wants to change WM it's still possibly my modifying the
KDEWM environment envariable.

This change was approved by the shared Plasma and VDG meeting at the
CERN sprint.
parent 20ef422f
......@@ -2,7 +2,6 @@
add_subdirectory( componentservices )
add_subdirectory( windowmanagers )
......@@ -14,7 +13,6 @@ set(kcm_componentchooser_SRCS
......@@ -26,7 +24,6 @@ ki18n_wrap_ui(kcm_componentchooser_SRCS
add_library(kcm_componentchooser MODULE ${kcm_componentchooser_SRCS})
......@@ -21,10 +21,6 @@
#ifdef Q_OS_UNIX
#include "componentchooserterminal.h"
#include <config-X11.h>
#if HAVE_X11
#include "componentchooserwm.h"
#include <QCheckBox>
......@@ -191,16 +187,6 @@ void ComponentChooser::slotServiceSelected(QListWidgetItem* it) {
#if HAVE_X11
else if (cfgType==QLatin1String("internal_wm"))
if (!(configWidget && qobject_cast<CfgWm*>(configWidget)))
newConfigWidget = new CfgWm(configContainer);
else if (cfgType==QLatin1String("internal_filemanager"))
componentchooserwm.cpp - description
copyright : (C) 2002 by Joseph Wenninger
email :
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License verstion 2 as *
* published by the Free Software Foundation *
* *
#include <config-workspace.h>
#include "componentchooserwm.h"
#include <kglobal.h>
#include <kdebug.h>
#include <kdesktopfile.h>
#include <kmessagebox.h>
#include <kprocess.h>
#include <kshell.h>
#include <kstandarddirs.h>
#include <ktimerdialog.h>
#include <qdbusinterface.h>
#include <qdbusconnectioninterface.h>
#include <netwm.h>
#include <qx11info_x11.h>
CfgWm::CfgWm(QWidget *parent)
: QWidget(parent)
, Ui::WmConfig_UI()
, CfgPlugin()
, wmLaunchingState( WmNone )
, wmProcess( NULL )
connect(wmCombo,SIGNAL(activated(int)), this, SLOT(configChanged()));
KGlobal::dirs()->addResourceType( "windowmanagers", "data", "ksmserver/windowmanagers" );
void CfgWm::configChanged()
emit changed(true);
void CfgWm::defaults()
wmCombo->setCurrentIndex( 0 );
void CfgWm::load(KConfig *)
KConfig cfg(QStringLiteral("ksmserverrc"), KConfig::NoGlobals);
KConfigGroup c( &cfg, "General");
loadWMs(c.readEntry("windowManager", KWIN_BIN));
emit changed(false);
void CfgWm::save(KConfig *)
bool CfgWm::saveAndConfirm()
KConfig cfg(QStringLiteral("ksmserverrc"), KConfig::NoGlobals);
KConfigGroup c( &cfg, "General");
c.writeEntry("windowManager", currentWm());
emit changed(false);
if( oldwm == currentWm())
return true;
QString restartArgument = currentWmData().restartArgument;
if( restartArgument.isEmpty())
KMessageBox::information( this,
i18n( "The new window manager will be used when Plasma is started the next time." ),
i18n( "Window Manager Change" ), QStringLiteral("windowmanagerchange") );
oldwm = currentWm();
return true;
if( tryWmLaunch())
oldwm = currentWm();
QDBusInterface ksmserver(QStringLiteral("org.kde.ksmserver"), QStringLiteral("/KSMServer") ); QDBus::NoBlock, QStringLiteral("wmChanged") );
KMessageBox::information( window(),
i18n( "A new window manager is running.\n"
"It is still recommended to restart this KDE session to make sure "
"all running applications adjust for this change." ),
i18n( "Window Manager Replaced" ), QStringLiteral("restartafterwmchange") );
return true;
{ // revert config
emit changed(true);
c.writeEntry("windowManager", oldwm);
if( oldwm == KWIN_BIN )
kwinRB->setChecked( true );
wmCombo->setEnabled( false );
differentRB->setChecked( true );
wmCombo->setEnabled( true );
for( QHash< QString, WmData >::ConstIterator it = wms.constBegin();
it != wms.constEnd();
++it )
if( (*it).internalName == oldwm ) // make it selected
wmCombo->setCurrentIndex( wmCombo->findText( it.key()));
return false;
bool CfgWm::tryWmLaunch()
if( currentWm() == KWIN_BIN
&& qstrcmp( NETRootInfo( QX11Info::connection(), NET::SupportingWMCheck ).wmName(), "KWin" ) == 0 )
return true; // it is already running, don't necessarily restart e.g. after a failure with other WM
KMessageBox::information( window(), i18n( "Your running window manager will be now replaced with "
"the configured one." ), i18n( "Window Manager Change" ), QStringLiteral("windowmanagerchange") );
wmLaunchingState = WmLaunching;
wmProcess = new KProcess;
*wmProcess << KShell::splitArgs( currentWmData().exec ) << currentWmData().restartArgument;
connect( wmProcess, SIGNAL( error( QProcess::ProcessError )), this, SLOT( wmLaunchError()));
connect( wmProcess, SIGNAL( finished( int, QProcess::ExitStatus )),
this, SLOT( wmLaunchFinished( int, QProcess::ExitStatus )));
wmDialog = new KTimerDialog( 20000, KTimerDialog::CountDown, window(), i18n( "Config Window Manager Change" ),
KTimerDialog::Ok | KTimerDialog::Cancel, KTimerDialog::Cancel );
wmDialog->setButtonGuiItem( KDialog::Ok, KGuiItem( i18n( "&Accept Change" ), QStringLiteral("dialog-ok") ));
wmDialog->setButtonGuiItem( KDialog::Cancel, KGuiItem( i18n( "&Revert to Previous" ), QStringLiteral("dialog-cancel") ));
QLabel *label = new QLabel(
i18n( "The configured window manager is being launched.\n"
"Please check it has started properly and confirm the change.\n"
"The launch will be automatically reverted in 20 seconds." ), wmDialog );
label->setWordWrap( true );
wmDialog->setMainWidget( label );
if( wmDialog->exec() == QDialog::Accepted ) // the user confirmed
wmLaunchingState = WmOk;
else // cancelled for some reason
if( wmLaunchingState == WmLaunching )
{ // time out
wmLaunchingState = WmFailed;
KProcess::startDetached( KWIN_BIN, QStringList() << QStringLiteral("--replace") );
// Let's hope KWin never fails.
KMessageBox::sorry( window(),
i18n( "The running window manager has been reverted to the default KDE window manager KWin." ));
else if( wmLaunchingState == WmFailed )
KProcess::startDetached( KWIN_BIN, QStringList() << QStringLiteral("--replace") );
// Let's hope KWin never fails.
KMessageBox::sorry( window(),
i18n( "The new window manager has failed to start.\n"
"The running window manager has been reverted to the default KDE window manager KWin." ));
bool ret = ( wmLaunchingState == WmOk );
wmLaunchingState = WmNone;
delete wmDialog;
wmDialog = NULL;
// delete wmProcess; - it is intentionally leaked, since there is no KProcess:detach()
wmProcess = NULL;
return ret;
void CfgWm::wmLaunchError()
if( wmLaunchingState != WmLaunching || sender() != wmProcess )
wmLaunchingState = WmFailed;
void CfgWm::wmLaunchFinished( int exitcode, QProcess::ExitStatus exitstatus )
if( wmLaunchingState != WmLaunching || sender() != wmProcess )
if( exitstatus == QProcess::NormalExit && exitcode == 0 )
{ // assume it's forked into background
wmLaunchingState = WmOk;
// otherwise it's a failure
wmLaunchingState = WmFailed;
void CfgWm::loadWMs( const QString& current )
WmData kwin;
kwin.internalName = KWIN_BIN;
kwin.exec = KWIN_BIN;
kwin.configureCommand = QLatin1String("");
kwin.restartArgument = QStringLiteral("--replace");
kwin.parentArgument = QLatin1String("");
wms[ QStringLiteral("KWin") ] = kwin;
oldwm = KWIN_BIN;
kwinRB->setChecked( true );
wmCombo->setEnabled( false );
QStringList list = KGlobal::dirs()->findAllResources( "windowmanagers", QString(), KStandardDirs::NoDuplicates );
QRegExp reg( QStringLiteral(".*/([^/\\.]*)\\.[^/\\.]*") );
foreach( const QString& wmfile, list )
KDesktopFile file( wmfile );
if( file.noDisplay())
if( !file.tryExec())
QString testexec = file.desktopGroup().readEntry( "X-KDE-WindowManagerTestExec" );
if( !testexec.isEmpty())
KProcess proc;
proc.setShellCommand( testexec );
if( proc.execute() != 0 )
QString name = file.readName();
if( name.isEmpty())
if( !reg.exactMatch( wmfile ))
QString wm = reg.cap( 1 );
if( wms.contains( name ))
WmData data;
data.internalName = wm;
data.exec = file.desktopGroup().readEntry( "Exec" );
if( data.exec.isEmpty())
data.configureCommand = file.desktopGroup().readEntry( "X-KDE-WindowManagerConfigure" );
data.restartArgument = file.desktopGroup().readEntry( "X-KDE-WindowManagerRestartArgument" );
data.parentArgument = file.desktopGroup().readEntry( "X-KDE-WindowManagerConfigureParentArgument" );
wms[ name ] = data;
wmCombo->addItem( name );
if( wms[ name ].internalName == current ) // make it selected
wmCombo->setCurrentIndex( wmCombo->count() - 1 );
oldwm = wm;
differentRB->setChecked( true );
wmCombo->setEnabled( true );
differentRB->setEnabled( wmCombo->count()>0 );
CfgWm::WmData CfgWm::currentWmData() const
return kwinRB->isChecked() ? wms[ QStringLiteral("KWin") ] : wms[ wmCombo->currentText() ];
QString CfgWm::currentWm() const
return currentWmData().internalName;
void CfgWm::checkConfigureWm()
configureButton->setEnabled( !currentWmData().configureCommand.isEmpty());
void CfgWm::configureWm()
if( oldwm != currentWm() // needs switching first
&& !saveAndConfirm())
QStringList args;
if( !currentWmData().parentArgument.isEmpty())
args << currentWmData().parentArgument << QString::number( window()->winId());
if( !KProcess::startDetached( currentWmData().configureCommand, args ))
KMessageBox::sorry( window(), i18n( "Running the configuration tool failed" ));
componentchooserwm.h - description
copyright : (C) 2002 by Joseph Wenninger
email :
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License version 2 as *
* published by the Free Software Foundationi *
* *
#include "ui_wmconfig_ui.h"
#include "componentchooser.h"
#include <kprocess.h>
class KTimerDialog;
class CfgWm: public QWidget, public Ui::WmConfig_UI, public CfgPlugin
CfgWm(QWidget *parent);
virtual ~CfgWm();
virtual void load(KConfig *cfg);
virtual void save(KConfig *cfg);
virtual void defaults();
protected Q_SLOTS:
void configChanged();
void configureWm();
void checkConfigureWm();
void wmLaunchError();
void wmLaunchFinished( int exitcode, QProcess::ExitStatus exitstatus );
void changed(bool);
bool tryWmLaunch();
void loadWMs( const QString& current );
QString currentWm() const;
bool saveAndConfirm();
struct WmData
QString internalName;
QString exec;
QString configureCommand;
QString restartArgument;
QString parentArgument;
WmData currentWmData() const;
QHash< QString, WmData > wms; // i18n text -> data
QString oldwm; // the original value
enum Launch
WmNone, // not trying to launch any WM at the moment
WmLaunching, // launching
WmOk, // was successful
WmFailed // it failed
Launch wmLaunchingState;
KTimerDialog* wmDialog;
KProcess* wmProcess;
install( FILES kcm_kemail.desktop kcm_browser.desktop kcm_filemanager.desktop DESTINATION ${DATA_INSTALL_DIR}/kcm_componentchooser )
install( FILES kcm_terminal.desktop kcm_wm.desktop DESTINATION ${DATA_INSTALL_DIR}/kcm_componentchooser)
install( FILES kcm_terminal.desktop DESTINATION ${DATA_INSTALL_DIR}/kcm_componentchooser)
# ctxt: standard desktop component
Name=Window Manager
Name[ar]=مدير النّوافذ
Name[ast]=Xestor de ventanes
Name[bs]=Upravitelj prozora
Name[ca]=Gestor de finestres
Name[ca@valencia]=Gestor de finestres
Name[cs]=Správce oken
Name[el]=Διαχειριστής παραθύρων
Name[en_GB]=Window Manager
Name[es]=Gestor de ventanas
Name[fr]=Gestionnaire de fenêtres
Name[gl]=Xestor de xanelas
Name[hr]=Upravitelj prozorima
Name[ia]=Gerente de Fenestra
Name[id]=Manajer Jendela
Name[it]=Gestore delle finestre
Name[ko]=창 관리자
Name[lt]=Langų tvarkyklė
Name[mr]=चौकट व्यवस्थापक
Name[pa]=ਵਿੰਡੋ ਮੈਨੇਜਰ
Name[pl]=Zarządzanie oknami
Name[pt]=Gestor de Janelas
Name[pt_BR]=Gerenciador de janelas
Name[ru]=Диспетчер окон
Name[sk]=Správca okien
Name[sl]=Upravljalnik oken
Name[sr]=менаџер прозора
Name[sr@ijekavian]=менаџер прозора
Name[sr@ijekavianlatin]=menadžer prozora
Name[sr@latin]=menadžer prozora
Name[tr]=Pencere Yöneticisi
Name[uk]=Керування вікнами
Name[vi]=Trình quản lý cửa sổ
Name[x-test]=xxWindow Managerxx
Comment=Here you can select the window manager to be run in your KDE session.
Comment[ar]=يمكنك هنا اختيار مدير النّوافذ ليُشغّل في جلسة كدي.
Comment[ast]=Equí pues esbillar el xestor de xeres que s'executará na to sesión KDE.
Comment[be@latin]=Tut možna vybrać akońnika, jaki ŭklučajecca pry ŭvachodzie ŭ KDE.
Comment[bg]=Тук можете да изберете мениджъра на прозорци, който да се стартира при нова сесия.
Comment[bn]=আপনার কে.ডি.ই. সেশন-এ যে উইণ্ডো ম্যানেজার ব্যবহার করা হবে সেটি আপনি এখানে পছন্দ করতে পারেন।
Comment[bs]=Izaberite menadžer prozora za upotrebu u KDE sesijama.
Comment[ca]=Aquí podeu seleccionar el gestor de finestres que s'executarà en la sessió del KDE.
Comment[ca@valencia]=Ací podeu seleccionar el gestor de finestres que s'executarà en la sessió del KDE.
Comment[cs]=Zde si můžete zvolit správce oken pro své sezení KDE.
Comment[csb]=Tuwò mòżesz wëbrac menadżerã òknów jakô mô bëc zrëszonô w twòji sesëji KDE.
Comment[da]=Her kan du vælge, den vindueshåndtering der skal køre i din KDE-session.
Comment[de]=Hier können Sie den Fenstermanager wählen, der für Ihre KDE-Sitzung verwendet werden soll.
Comment[el]=Εδώ μπορείτε να επιλέξετε τον διαχειριστή παραθύρων που θα εκτελείται κατά την KDE συνεδρία σας.
Comment[en_GB]=Here you can select the window manager to be run in your KDE session.
Comment[eo]=Ĉi tie vi povas elekti la uzendan fenestran agordilon en via seanco de KDE.
Comment[es]=Puede seleccionar el gestor de ventanas que se usará en su sesión de KDE.
Comment[et]=Siin saab valida KDE seansis kasutatava aknahalduri.
Comment[eu]=KDE saioetan erabiltzea nahi duzun leiho-kudeatzailea hauta dezakezu hemen.
Comment[fa]=شما در اینجا میتوانید مدیر پنجره را انتخاب کنید تا در نشست کی‌دی‌ای شما اجرا شود.
Comment[fi]=Tästä voit valita KDE-työpöydän käyttämän ikkunointiohjelman.
Comment[fr]=Vous pouvez configurer votre gestionnaire de fenêtres par défaut ici.
Comment[fy]=Hjir kinne jo de finstersbehearder dy jo yn jo KDE-sesje brûke wolle selektearje.
Comment[ga]=Anseo is féidir leat an bainisteoir fuinneog a rithfear i do sheisiún KDE.
Comment[gl]=Aquí pode escoller o xestor de xanelas que desexe executar na sesión de KDE.
Comment[gu]=અહીં તમે તમારા KDE સત્ર માટે વિન્ડો વ્યવસ્થાપક પસંદ કરી શકો છો.
Comment[he]=כאן ניתן לבחור את מנהל החלונות שיהיה בשימוש בהפעלת KDE שלך.
Comment[hi]=यहाँ आप अपने केडीई सत्र में चलाये जाने के लिये विंडो प्रबंधक का चयन कर सकते हैं.
Comment[hne]=इहां आप मन विंडो प्रबंधक ल चुन सकथो जे हर आपके केडीई सत्र मं चलही.
Comment[hr]=Ovdje možete odabrati upravitelj prozorima koji će se izvoditi u vašoj KDE sjednici
Comment[hsb]=Tule móžeće woknowy manager za swoje KDE-posedźenje wubrać.
Comment[hu]=Itt lehet kiválasztani, melyik ablakkezelőt használja a KDE.
Comment[ia]=Ci tu pote selectionar le gerente de fenestra que on debe usar se in tu session KDE.
Comment[id]=Di sini anda dapat memilih manajer jendela yang akan dijalankan di sesi KDE anda.
Comment[is]=Hér geturðu valið gluggastjóra til keyrslu í KDE setum.
Comment[it]=Qui puoi scegliere il gestore delle finestre da eseguire nella sessione di KDE.
Comment[ja]=KDE セッションで使うウィンドウマネージャを選択します。
Comment[kk]=Мұнда KDE сеансыңызда жегілетін терезе менеджерін таңдай аласыз.
Comment[km]=នៅ​ទីនេះ អ្នក​អាច​ជ្រើស​កម្មវិធី​គ្រប់គ្រង​បង្អួច​ឲ្យ​រត់​នៅ​ក្នុង​សម័យ KDE របស់​អ្នក ។
Comment[kn]=ಇಲ್ಲಿ ನೀನು ಕೆಡಿಇ ಅಧಿವೇಶನದಲ್ಲಿ ಚಾಲ್ತಿಯಲ್ಲಿರಬೇಕಾದ ಕಿಟಕಿ ವ್ಯವಸ್ಥಾಪಕವನ್ನು ಆರಿಸಿಕೊಳ್ಳಬಹುದು.
Comment[ko]=KDE 세션에서 실행할 창 관리자를 선택할 수 있습니다.
Comment[ku]=Li vir tu dikarî rêveberê pace yê hilbijêrî ku di nav danişîna KDE de bimeşînî.
Comment[lt]=Čia galite pasirinkti langų tvarkyklę, paleidžiamą jūsų KDE sesijoje.
Comment[lv]=Šeit varat izvēlēties logu pārvaldnieku jūsu KDE sesijai.
Comment[mai]=एतए अहाँ विंडो प्रबंधक केँ चुन सकैत छी जकरा अहाँक KDE सत्र मे चलाएल जएनाइ अछि.
Comment[mk]=Тука може да го изберете менаџерот на прозорци што ќе се користи од Вашата KDE-сесија.
Comment[ml]=ഇവിടെ നിങ്ങള്‍ക്ക് കെഡിഇ സെഷനില്‍ പ്രവര്‍ത്തിക്കേണ്ട ജാലക-പരിപാലന പ്രവര്‍ത്തനങ്ങള്‍ തിരഞ്ഞെടുക്കാം
Comment[mr]=केडीई सत्र अंतर्गत चालविण्याजोगी चौकट व्यवस्थापक येथे निवडले जाऊ शकते.
Comment[nb]=Her kan du velge vindusbehandler som skal kjøres i KDE-økta.
Comment[nds]=Hier kannst Du den Finsterpleger utsöken, den Du för Dien KDE-Törns bruken wullt.
Comment[nl]=Hier kunt u de windowmanager die u in uw KDE-sessie wilt gebruiken selecteren.
Comment[nn]=Her kan du velja kva vindaugshandsamar som skal brukast i KDE-øktene dine.
Comment[or]=ଆପଣଙ୍କର KDE ଅଧିବେଶନରେ ଚଲାଇବା ପାଇଁ ୱିଣ୍ଡୋ ପରିଚାଳକଙ୍କୁ ଏଠାରେ ଚୟନ କରିପାରିବେ।
Comment[pa]=ਤੁਹਾਡੇ KDE ਸ਼ੈਸ਼ਨ ਵਿੱਚ ਚਲਾਉਣ ਲਈ ਤੁਸੀਂ ਵਿੰਡੋ ਮੈਨੇਜਰ ਚੁਣ ਸਕਦੇ ਹੋ।
Comment[pl]=Tu możesz wybrać program zarządzający oknami w twojej sesji KDE.
Comment[pt]=Aqui poderá seleccionar o gestor de janelas a executar na sua sessão do KDE.
Comment[pt_BR]=Aqui você pode selecionar o gerenciador de janelas a ser executado na sua sessão do KDE.
Comment[ro]=Aici puteți alege gestionarul de ferestre ce va rula în sesiunea KDE.
Comment[ru]=Здесь можно указать диспетчер окон, который будет использоваться в сеансах KDE.
Comment[si]=මෙහිදි KDE වාරයේ ක්‍රියාත්මක වන කවුළු පාලකය තෝරාගත හැක.
Comment[sk]=Tu si môžete vybrať správcu okien, ktorý sa bude spúšťať vo vašom KDE sedení.
Comment[sl]=Tu lahko izberete upravljalnika oken, ki bo zagnan v vaši seji KDE.
Comment[sr]=Изаберите менаџер прозора за употребу у КДЕ сесијама.
Comment[sr@ijekavian]=Изаберите менаџер прозора за употребу у КДЕ сесијама.
Comment[sr@ijekavianlatin]=Izaberite menadžer prozora za upotrebu u KDE sesijama.
Comment[sr@latin]=Izaberite menadžer prozora za upotrebu u KDE sesijama.
Comment[sv]=Här kan du välja fönsterhanterare som ska köras i KDE-sessionen.
Comment[ta]=Here you can select the window manager to be run in your KDE session.
Comment[te]=విండో నిర్వాహిక మీ KDE సెషన్‌నందు నడుచునట్లు మీరు యిక్కడ యెంచుకొనగలరు.
Comment[tg]=Дар ин ҷо шумо метавонед Мудири тирезаҳоро барои иҷрошавӣ дар сессияҳои KDE интихоб кунед.
Comment[th]=คุณสามารถเลือกตัวจัดการหน้าต่างที่จะให้ทำงานในวาระงาน KDE ของคุณ ได้ที่นี่
Comment[tr]=Buradan KDE oturumunuzda çalıştırmak istediğiniz pencere yöneticisini seçebilirsiniz.
Comment[ug]=بۇ جايدا KDE ئەڭگىمەدە ئىجرا قىلماقچى بولغان كۆزنەك باشقۇرغۇچنى تاللىيالايسىز.
Comment[uk]=Тут ви можете обрати засіб керування вікнами, який буде запущено у вашому сеансі KDE.
Comment[vi]=Ở đây bạn có thể chọn trình quản lý cửa sổ để chạy trong phiên làm việc KDE.
Comment[wa]=Vos ploz tchoezi chal li manaedjeu des finiesses a enonder dins vosse session KDE.
Comment[x-test]=xxHere you can select the window manager to be run in your KDE session.xx
Comment[zh_CN]=您可以在此选择要在 KDE 会话中运行的窗口管理器。
Comment[zh_TW]=您可以在此選擇 KDE 工作階段執行的視窗管理員。
########### install files ###############
file(GLOB desktop_file "*.desktop")
install( FILES ${desktop_file}
DESTINATION ${DATA_INSTALL_DIR}/ksmserver/windowmanagers )
The list of window managers that the config module offers for using.
The format is normal .desktop files:
Name - required, name to display in the configuration dialog.
Exec - required, the command to execute to launch the window manager.
If launching fails for any reason, it must quit with non-zero exit
value and not do anything else (show an error dialog, try to run
a fallback, etc.).
TryExec - optional.
X-KDE-WindowManagerTestExec - optional, a command that will be run and if
the exit code is not 0, the window manager won't be used (can be used
e.g. to detect that a window manager which requires compositing support
cannot be run on systems without such support).
X-KDE-WindowManagerId - optional, the name under which the window manager
registers with the session manager (if different from the name
of the .desktop file)
X-KDE-WindowManagerConfigure - optional, the command to run to configure
the window manager
X-KDE-WindowManagerRestartArgument - optional, the argument to pass
to the window manager to restart it directly in the running KDE
session; if not present, KDE restart is required (which is generally
a good idea anyway, but this can be useful for e.g. checking)
X-KDE-WindowManagerConfigureParentArgument - option, if present, this
argument and the X window id of the configuration dialog will be passed
to the configuration command (e.g. '--parent 13254543'). The configuration
tool may specify this window as the parent of its window.
[Desktop Entry]
Name=Compiz custom (create wrapper script 'compiz-kde-launcher' to launch it)
Name[be@latin]=Ułasny „Compiz” (stvary skrypt „compiz-kde-launcher”)
Name[bg]=Потребителски compiz (създайте скрипт 'compiz-kde-launcher' за зареждането му)
Name[bs]=Posebni Kompiz (napravite omotačku skriptu ‘compiz-kde-launcher’ za pokretanje)
Name[ca]=Compiz personalitzat (crea un script embolcall «compiz-kde-launcher» per a llançar-lo)
Name[ca@valencia]=Compiz personalitzat (crea un script embolcall «compiz-kde-launcher» per a llançar-lo)
Name[cs]=Uživatelsky upravený Compiz (pro jeho spouštění vytvořte skript 'compiz-kde-launcher' )
Name[csb]=Dopasownié Compiza (ùsôdzô skript 'compiz-kde-launcher' do zrëszëniô)
Name[da]=Brugerdefineret Compiz (opret wrapper-scriptet 'compiz-kde-launcher' for at starte den)
Name[de]=Compiz benutzerdefiniert (erstellen Sie ein Aufrufskript namens „compiz-kde-launcher“, um es zu starten)
Name[el]=Προσαρμοσμένο Compiz (δημιουργία σεναρίου 'compiz-kde-launcher' για την εκκίνησή του)
Name[en_GB]=Compiz custom (create wrapper script 'compiz-kde-launcher' to launch it)
Name[eo]=Propra Compiz (kreu skriptaĵon 'compiz-kde-launcher' por ruli ĝin)
Name[es]=Compiz personalizado (crea un script «compiz-kde-launcher» para ejecutarlo)
Name[et]=Kohandatud Compiz (käivitamiseks loo kohandav skript 'compiz-kde-launcher')
Name[eu]=Compiz pertsonalizatua (sortu 'compiz-kde-launcher' scripta, hura abiarazteko)
Name[fa]=کامپیز سفارشی (create wrapper script 'compiz-kde-launcher' to launch it)
Name[fi]=Räätälöity Compiz (luo käärinskripti 'compiz-kde-launcher' sen käynnistämiseksi)
Name[fr]=Compiz personnalisé (créez un script «