12#include "compositingadaptor.h" 
   13#include "pluginsadaptor.h" 
   14#include "virtualdesktopmanageradaptor.h" 
   21#include "kwinadaptor.h" 
   28#if KWIN_BUILD_ACTIVITIES 
   33#include <QDBusConnection> 
   34#include <QOpenGLContext> 
   41    , m_serviceName(QStringLiteral(
"org.kde.KWin"))
 
   43    (void)
new KWinAdaptor(
this);
 
   45    QDBusConnection dbus = QDBusConnection::sessionBus();
 
   46    dbus.registerObject(QStringLiteral(
"/KWin"), 
this);
 
   47    dbus.registerService(m_serviceName);
 
   48    dbus.connect(QString(), QStringLiteral(
"/KWin"), QStringLiteral(
"org.kde.KWin"), QStringLiteral(
"reloadConfig"),
 
 
   56    QDBusConnection::sessionBus().unregisterService(m_serviceName);
 
 
   96#if KWIN_BUILD_ACTIVITIES 
 
  108#if KWIN_BUILD_ACTIVITIES 
 
  120    return VirtualDesktopManager::self()->current();
 
 
  125    return VirtualDesktopManager::self()->setCurrent(desktop);
 
 
  146    QCoreApplication::exit(133);
 
 
  151QVariantMap clientToVariantMap(
const Window *c)
 
  163            {QStringLiteral(
"x"), c->
x()},
 
  164            {QStringLiteral(
"y"), c->
y()},
 
  165            {QStringLiteral(
"width"), c->
width()},
 
  166            {QStringLiteral(
"height"), c->
height()},
 
  167            {QStringLiteral(
"desktops"), c->
desktopIds()},
 
  169            {QStringLiteral(
"shaded"), c->
isShade()},
 
  171            {QStringLiteral(
"keepAbove"), c->
keepAbove()},
 
  172            {QStringLiteral(
"keepBelow"), c->
keepBelow()},
 
  173            {QStringLiteral(
"noBorder"), c->
noBorder()},
 
  175            {QStringLiteral(
"skipPager"), c->
skipPager()},
 
  179            {QStringLiteral(
"uuid"), c->
internalId().toString()},
 
  180#if KWIN_BUILD_ACTIVITIES 
  181            {QStringLiteral(
"activities"), c->
activities()},
 
  183            {QStringLiteral(
"layer"), c->
layer()},
 
  190    m_replyQueryWindowInfo = message();
 
  191    setDelayedReply(
true);
 
  192    kwinApp()->startInteractiveWindowSelection(
 
  195                QDBusConnection::sessionBus().send(m_replyQueryWindowInfo.createErrorReply(
 
  196                    QStringLiteral(
"org.kde.KWin.Error.UserCancel"),
 
  197                    QStringLiteral(
"User cancelled the query")));
 
  201                QDBusConnection::sessionBus().send(m_replyQueryWindowInfo.createReply(clientToVariantMap(t)));
 
  203                QDBusConnection::sessionBus().send(m_replyQueryWindowInfo.createErrorReply(
 
  204                    QStringLiteral(
"org.kde.KWin.Error.InvalidWindow"),
 
  205                    QStringLiteral(
"Tried to query information about an unmanaged window")));
 
  208    return QVariantMap{};
 
 
  215        return clientToVariantMap(window);
 
 
  226    if (m.service().isEmpty()) {
 
  233    static QPointer<QDBusServiceWatcher> watcher;
 
  240            watcher->deleteLater();
 
  243        watcher = 
new QDBusServiceWatcher(m.service(), QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForUnregistration, 
this);
 
  244        connect(watcher, &QDBusServiceWatcher::serviceUnregistered, []() {
 
  246            watcher->deleteLater();
 
  248    } 
else if (watcher) {
 
  251        watcher->deleteLater();
 
 
  255void DBusInterface::onShowingDesktopChanged(
bool show, 
bool )
 
  262    , m_compositor(parent)
 
  265    new CompositingAdaptor(
this);
 
  266    QDBusConnection dbus = QDBusConnection::sessionBus();
 
  267    dbus.registerObject(QStringLiteral(
"/Compositor"), 
this);
 
  268    dbus.connect(QString(), QStringLiteral(
"/Compositor"), QStringLiteral(
"org.kde.kwin.Compositing"),
 
 
  275        return QStringLiteral(
"none");
 
  279        if (QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES) {
 
  280            return QStringLiteral(
"gles");
 
  282            return QStringLiteral(
"gl2");
 
  285        return QStringLiteral(
"qpainter");
 
  288        return QStringLiteral(
"none");
 
 
  324    QStringList interfaces;
 
  325    bool supportsGlx = 
false;
 
  329    if (QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES) {
 
  333        interfaces << QStringLiteral(
"glx");
 
  335    interfaces << QStringLiteral(
"egl");
 
 
  343    qDBusRegisterMetaType<KWin::DBusDesktopDataStruct>();
 
  344    qDBusRegisterMetaType<KWin::DBusDesktopDataVector>();
 
  346    new VirtualDesktopManagerAdaptor(
this);
 
  347    QDBusConnection::sessionBus().registerObject(QStringLiteral(
"/VirtualDesktopManager"),
 
  348                                                 QStringLiteral(
"org.kde.KWin.VirtualDesktopManager"),
 
  366    const QList<VirtualDesktop *> allDesks = m_manager->
desktops();
 
  367    for (
auto *vd : allDesks) {
 
 
  402    return m_manager->
count();
 
 
  417    return m_manager->
rows();
 
 
  453    const auto desks = m_manager->
desktops();
 
  455    desktopVect.reserve(m_manager->
count());
 
  457    std::transform(desks.constBegin(), desks.constEnd(),
 
  458                   std::back_inserter(desktopVect),
 
  460                       return DBusDesktopDataStruct{.position = vd->x11DesktopNumber() - 1, .id = vd->id(), .name = vd->name()};
 
 
  466void VirtualDesktopManagerDBusInterface::createDesktop(uint position, 
const QString &name)
 
  468    m_manager->createVirtualDesktop(position, name);
 
 
  471void VirtualDesktopManagerDBusInterface::setDesktopName(
const QString &
id, 
const QString &name)
 
  477    if (vd->
name() == name) {
 
 
  485void VirtualDesktopManagerDBusInterface::removeDesktop(
const QString &
id)
 
  487    m_manager->removeVirtualDesktop(
id);
 
 
  490PluginManagerDBusInterface::PluginManagerDBusInterface(
PluginManager *manager)
 
  494    new PluginsAdaptor(
this);
 
  496    QDBusConnection::sessionBus().registerObject(QStringLiteral(
"/Plugins"),
 
  497                                                 QStringLiteral(
"org.kde.KWin.Plugins"),
 
 
  523#include "moc_dbusinterface.cpp" 
@ OperationModeX11
KWin uses only X11 for managing windows and compositing.
QString compositingNotPossibleReason
The reason why compositing is not possible. Empty String if compositing is possible.
bool isOpenGLBroken() const
QStringList supportedOpenGLPlatformInterfaces
All currently supported OpenGLPlatformInterfaces.
void compositingToggled(bool active)
void reinitialize()
Used by Compositing KCM after settings change.
bool platformRequiresCompositing
CompositorDBusInterface(Compositor *parent)
bool isCompositingPossible() const
void compositingToggled(bool active)
virtual bool openGLCompositingIsBroken() const
static bool compositing()
Static check to test whether the Compositor is available and active.
virtual void reinitialize()
virtual bool compositingPossible() const
RenderBackend * backend() const
virtual QString compositingNotPossibleReason() const
bool stopActivity(const QString &in0)
Q_NOREPLY void unclutterDesktop()
bool setCurrentDesktop(int desktop)
Q_NOREPLY void showDebugConsole()
bool startActivity(const QString &in0)
DBusInterface(QObject *parent)
QString supportInformation()
QVariantMap queryWindowInfo()
Q_NOREPLY void showDesktop(bool show)
Q_NOREPLY void cascadeDesktop()
~DBusInterface() override
QString activeOutputName()
Q_NOREPLY void reconfigure()
void showingDesktopChanged(bool showing)
Q_NOREPLY void killWindow()
QVariantMap getWindowInfo(const QString &uuid)
void UnloadPlugin(const QString &name)
QStringList availablePlugins() const
QStringList loadedPlugins() const
bool LoadPlugin(const QString &name)
QStringList loadedPlugins() const
QStringList availablePlugins() const
bool loadPlugin(const QString &pluginId)
void unloadPlugin(const QString &pluginId)
virtual CompositingType compositingType() const =0
void x11DesktopNumberChanged()
void setName(const QString &name)
void desktopRemoved(const QString &id)
VirtualDesktopManagerDBusInterface(VirtualDesktopManager *parent)
KWin::DBusDesktopDataVector desktops
void countChanged(uint count)
void setNavigationWrappingAround(bool wraps)
bool isNavigationWrappingAround() const
void desktopDataChanged(const QString &id, KWin::DBusDesktopDataStruct)
void navigationWrappingAroundChanged(bool wraps)
void setCurrent(const QString &id)
void desktopCreated(const QString &id, KWin::DBusDesktopDataStruct)
void currentChanged(const QString &id)
void desktopsChanged(KWin::DBusDesktopDataVector)
void rowsChanged(uint rows)
Manages the number of available virtual desktops, the layout of those and which virtual desktop is th...
const VirtualDesktopGrid & grid() const
VirtualDesktop * desktopForId(const QString &id) const
void desktopAdded(KWin::VirtualDesktop *desktop)
void countChanged(uint previousCount, uint newCount)
QList< VirtualDesktop * > desktops() const
VirtualDesktop * currentDesktop() const
void navigationWrappingAroundChanged()
void currentChanged(KWin::VirtualDesktop *previousDesktop, KWin::VirtualDesktop *newDesktop)
void rowsChanged(uint rows)
void setNavigationWrappingAround(bool enabled)
bool setCurrent(uint current)
void desktopRemoved(KWin::VirtualDesktop *desktop)
bool isNavigationWrappingAround() const
virtual bool isLocalhost() const
virtual bool isClient() const
QString wmClientMachine(bool use_localhost) const
virtual bool isFullScreen() const
virtual QString captionNormal() const =0
QStringList desktopIds() const
virtual MaximizeMode maximizeMode() const
Window * findWindow(const QUuid &internalId) const
Output * activeOutput() const
void showingDesktopChanged(bool showing, bool animated)
Placement * placement() const
static Workspace * self()
bool showingDesktop() const
void setShowingDesktop(bool showing, bool animated=true)
QString supportInformation() const
QList< DBusDesktopDataStruct > DBusDesktopDataVector
@ MaximizeVertical
The window is maximized vertically.