KWin
Loading...
Searching...
No Matches
workspace_wrapper.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2010 Rohan Prabhu <rohan@rohanprabhu.com>
6 SPDX-FileCopyrightText: 2012 Martin Gräßlin <mgraesslin@kde.org>
7
8 SPDX-License-Identifier: GPL-2.0-or-later
9*/
10
11#pragma once
12
13#include "effect/globals.h"
14#include <QObject>
15#include <QQmlListProperty>
16#include <QRect>
17#include <QSize>
18#include <QStringList>
19
20namespace KWin
21{
22// forward declarations
23class TileManager;
24class Window;
25class Output;
26class VirtualDesktop;
27
28class WorkspaceWrapper : public QObject
29{
30 Q_OBJECT
31 Q_PROPERTY(QList<KWin::VirtualDesktop *> desktops READ desktops NOTIFY desktopsChanged)
34 // TODO: write and notify?
38 Q_PROPERTY(int workspaceWidth READ workspaceWidth)
39 Q_PROPERTY(int workspaceHeight READ workspaceHeight)
40 Q_PROPERTY(QSize workspaceSize READ workspaceSize)
42 Q_PROPERTY(QList<KWin::Output *> screens READ screens NOTIFY screensChanged)
44 Q_PROPERTY(QStringList activities READ activityList NOTIFY activitiesChanged)
61 Q_PROPERTY(QList<KWin::Window *> stackingOrder READ stackingOrder)
65 Q_PROPERTY(QPoint cursorPos READ cursorPos NOTIFY cursorPosChanged)
66
68 Q_DISABLE_COPY(WorkspaceWrapper)
69
70Q_SIGNALS:
71 void windowAdded(KWin::Window *window);
72 void windowRemoved(KWin::Window *window);
73 void windowActivated(KWin::Window *window);
92 void currentActivityChanged(const QString &id);
97 void activitiesChanged(const QString &id);
102 void activityAdded(const QString &id);
108 void activityRemoved(const QString &id);
130
131public:
132 //------------------------------------------------------------------
133 // enums copy&pasted from kwinglobals.h because qtscript is evil
134
153 Q_ENUM(ClientAreaOption)
166 Q_ENUM(ElectricBorder)
167
168protected:
169 explicit WorkspaceWrapper(QObject *parent = nullptr);
170
171public:
172 Window *activeWindow() const;
173 void setActiveWindow(Window *window);
174
175 QString currentActivity() const;
176 void setCurrentActivity(const QString &activity);
177
178 QSize desktopGridSize() const;
179 int desktopGridWidth() const;
180 int desktopGridHeight() const;
181 int workspaceWidth() const;
182 int workspaceHeight() const;
183 QSize workspaceSize() const;
184 KWin::Output *activeScreen() const;
185 QList<KWin::Output *> screens() const;
186 QStringList activityList() const;
187 QSize virtualScreenSize() const;
188 QRect virtualScreenGeometry() const;
189 QPoint cursorPos() const;
190
191 QList<VirtualDesktop *> desktops() const;
193 void setCurrentDesktop(VirtualDesktop *desktop);
194
195 Q_INVOKABLE KWin::Output *screenAt(const QPointF &pos) const;
196
197 Q_INVOKABLE KWin::TileManager *tilingForScreen(const QString &screenName) const;
198 Q_INVOKABLE KWin::TileManager *tilingForScreen(KWin::Output *output) const;
199
210 Q_SCRIPTABLE QRectF clientArea(ClientAreaOption option, KWin::Output *output, KWin::VirtualDesktop *desktop) const;
216 Q_SCRIPTABLE QRectF clientArea(ClientAreaOption option, KWin::Window *client) const;
217 Q_SCRIPTABLE QRectF clientArea(ClientAreaOption option, const KWin::Window *client) const;
223 Q_SCRIPTABLE void createDesktop(int position, const QString &name) const;
227 Q_SCRIPTABLE void removeDesktop(KWin::VirtualDesktop *desktop) const;
231 Q_SCRIPTABLE QString supportInformation() const;
232
237 QList<KWin::Window *> stackingOrder() const;
242 Q_INVOKABLE void raiseWindow(KWin::Window *window);
248 Q_SCRIPTABLE KWin::Window *getClient(qulonglong windowId);
257 Q_INVOKABLE QList<KWin::Window *> windowAt(const QPointF &pos, int count = 1) const;
258
265 Q_INVOKABLE bool isEffectActive(const QString &pluginId) const;
266
267public Q_SLOTS:
268 // all the available key bindings
275
288
290
300
317
322
325
335
342
346 void sendClientToScreen(KWin::Window *client, KWin::Output *output);
347
353 void showOutline(const QRect &geometry);
357 void showOutline(int x, int y, int width, int height);
361 void hideOutline();
362};
363
365{
366 Q_OBJECT
367public:
371 Q_INVOKABLE QList<KWin::Window *> windowList() const;
372
373 explicit QtScriptWorkspaceWrapper(QObject *parent = nullptr);
374};
375
377{
378 Q_OBJECT
379
380 Q_PROPERTY(QQmlListProperty<KWin::Window> windows READ windows)
381public:
382 QQmlListProperty<KWin::Window> windows();
383 static qsizetype countWindowList(QQmlListProperty<KWin::Window> *window);
384 static KWin::Window *atWindowList(QQmlListProperty<KWin::Window> *windows, qsizetype index);
385
386 explicit DeclarativeScriptWorkspaceWrapper(QObject *parent = nullptr);
387};
388
389}
QQmlListProperty< KWin::Window > windows
QQmlListProperty< KWin::Window > windows()
static qsizetype countWindowList(QQmlListProperty< KWin::Window > *window)
DeclarativeScriptWorkspaceWrapper(QObject *parent=nullptr)
static KWin::Window * atWindowList(QQmlListProperty< KWin::Window > *windows, qsizetype index)
QtScriptWorkspaceWrapper(QObject *parent=nullptr)
Q_INVOKABLE QList< KWin::Window * > windowList() const
void setCurrentActivity(const QString &activity)
Q_SCRIPTABLE QString supportInformation() const
void activitiesChanged(const QString &id)
Q_SCRIPTABLE QRectF clientArea(ClientAreaOption option, KWin::Output *output, KWin::VirtualDesktop *desktop) const
void setActiveWindow(Window *window)
WorkspaceWrapper(QObject *parent=nullptr)
void windowAdded(KWin::Window *window)
Q_INVOKABLE QList< KWin::Window * > windowAt(const QPointF &pos, int count=1) const
void slotWindowQuickTileBottomRight()
@ MaximizeArea
like MaximizeArea, but ignore struts - used e.g. for topmenu
@ PlacementArea
geometry where a window will be initially placed after being mapped
@ MovementArea
geometry to which a window will be maximized
@ MaximizeFullArea
area for fullscreen windows
@ FullArea
one whole screen, ignore struts
@ FullScreenArea
whole workarea (all screens together)
@ WorkArea
whole area (all screens together), ignore struts
Q_SCRIPTABLE void createDesktop(int position, const QString &name) const
void slotWindowQuickTileTopRight()
void currentDesktopChanged(KWin::VirtualDesktop *previous)
void virtualScreenGeometryChanged()
void setCurrentDesktop(VirtualDesktop *desktop)
QList< KWin::Window * > stackingOrder
Q_SCRIPTABLE void removeDesktop(KWin::VirtualDesktop *desktop) const
void showOutline(const QRect &geometry)
QList< KWin::Output * > screens
QList< KWin::VirtualDesktop * > desktops
QStringList activityList() const
void sendClientToScreen(KWin::Window *client, KWin::Output *output)
Q_SCRIPTABLE KWin::Window * getClient(qulonglong windowId)
void activityAdded(const QString &id)
void windowActivated(KWin::Window *window)
KWin::VirtualDesktop * currentDesktop
void currentActivityChanged(const QString &id)
void activityRemoved(const QString &id)
void slotWindowToPreviousDesktop()
Q_INVOKABLE KWin::TileManager * tilingForScreen(const QString &screenName) const
Q_INVOKABLE KWin::Output * screenAt(const QPointF &pos) const
void slotActivateAttentionWindow()
void slotWindowMaximizeHorizontal()
Q_INVOKABLE bool isEffectActive(const QString &pluginId) const
Q_INVOKABLE void raiseWindow(KWin::Window *window)
void slotWindowQuickTileBottomLeft()
void windowRemoved(KWin::Window *window)
ElectricBorder
Definition globals.h:60
#define private