22#include <QDBusContext>
23#include <QDBusMessage>
40class QtScriptWorkspaceWrapper;
46 AbstractScript(
int id, QString scriptName, QString pluginName, QObject *parent =
nullptr);
65 KConfigGroup config()
const;
69 virtual void run() = 0;
77 if (m_running == running) {
81 Q_EMIT runningChanged(m_running);
100 Q_INVOKABLE
ScriptTimer(QObject *parent =
nullptr);
107 Script(
int id, QString scriptName, QString
pluginName, QObject *parent =
nullptr);
110 Q_INVOKABLE QVariant
readConfig(
const QString &key,
const QVariant &defaultValue = QVariant());
112 Q_INVOKABLE
void callDBus(
const QString &service,
const QString &path,
113 const QString &interface,
const QString &method,
114 const QJSValue &arg1 = QJSValue(),
115 const QJSValue &arg2 = QJSValue(),
116 const QJSValue &arg3 = QJSValue(),
117 const QJSValue &arg4 = QJSValue(),
118 const QJSValue &arg5 = QJSValue(),
119 const QJSValue &arg6 = QJSValue(),
120 const QJSValue &arg7 = QJSValue(),
121 const QJSValue &arg8 = QJSValue(),
122 const QJSValue &arg9 = QJSValue());
124 Q_INVOKABLE
bool registerShortcut(
const QString &objectName,
const QString &text,
125 const QString &keySequence,
const QJSValue &callback);
195 void slotScriptLoadedFromFile();
207 QByteArray loadScriptFromFile(
const QString &
fileName);
216 QAction *scriptValueToAction(
const QJSValue &value, QMenu *parent);
232 QAction *createAction(
const QString &title,
const QJSValue &item, QMenu *parent);
242 QAction *createMenu(
const QString &title,
const QJSValue &items, QMenu *parent);
245 QDBusMessage m_invocationContext;
247 QHash<int, QJSValueList> m_screenEdgeCallbacks;
248 QHash<int, QAction *> m_touchScreenEdgeCallbacks;
249 QJSValueList m_userActionsMenuCallbacks;
260 Q_SCRIPTABLE
void run()
override;
263 void createComponent();
266 QQmlContext *m_context;
267 QQmlComponent *m_component;
300 QVariant
readConfig(
const QString &key, QVariant defaultValue = QVariant());
312 Q_CLASSINFO(
"D-Bus Interface",
"org.kde.kwin.Scripting")
315 QStringList scriptList;
316 QList<KWin::AbstractScript *> scripts;
320 std::unique_ptr<QRecursiveMutex> m_scriptsLock;
327 Q_SCRIPTABLE Q_INVOKABLE
int loadScript(
const QString &filePath,
const QString &pluginName = QString());
328 Q_SCRIPTABLE Q_INVOKABLE
int loadDeclarativeScript(
const QString &filePath,
const QString &pluginName = QString());
329 Q_SCRIPTABLE Q_INVOKABLE
bool isScriptLoaded(
const QString &pluginName)
const;
330 Q_SCRIPTABLE Q_INVOKABLE
bool unloadScript(
const QString &pluginName);
339 QList<QAction *> actionsForUserActionMenu(
Window *c, QMenu *parent);
341 QQmlEngine *qmlEngine()
const;
342 QQmlEngine *qmlEngine();
343 QQmlContext *declarativeScriptSharedContext()
const;
344 QQmlContext *declarativeScriptSharedContext();
350 static Scripting *create(QObject *parent);
353 void scriptDestroyed(QObject *
object);
354 Q_SCRIPTABLE
void start();
357 void slotScriptsQueried();
363 QQmlEngine *m_qmlEngine;
364 QQmlContext *m_declarativeScriptSharedContext;
380 return m_declarativeScriptSharedContext;
385 return m_declarativeScriptSharedContext;
390 return m_workspaceWrapper;
void setRunning(bool running)
void runningChanged(bool)
const QString & pluginName()
Q_SCRIPTABLE void run() override
~DeclarativeScript() override
DeclarativeScript(int id, QString scriptName, QString pluginName, QObject *parent=nullptr)
~JSEngineGlobalMethodsWrapper() override
JSEngineGlobalMethodsWrapper(DeclarativeScript *parent)
@ PlacementArea
geometry where a window will be initially placed after being mapped
@ FullArea
one whole screen, ignore struts
@ MaximizeArea
like MaximizeArea, but ignore struts - used e.g. for topmenu
@ MaximizeFullArea
area for fullscreen windows
@ WorkArea
whole area (all screens together), ignore struts
@ MovementArea
geometry to which a window will be maximized
@ FullScreenArea
whole workarea (all screens together)
QVariant readConfig(const QString &key, QVariant defaultValue=QVariant())
Q_INVOKABLE QVariant readConfig(const QString &key, const QVariant &defaultValue=QVariant())
Q_INVOKABLE bool unregisterTouchScreenEdge(int edge)
Script(int id, QString scriptName, QString pluginName, QObject *parent=nullptr)
Q_INVOKABLE void callDBus(const QString &service, const QString &path, const QString &interface, const QString &method, const QJSValue &arg1=QJSValue(), const QJSValue &arg2=QJSValue(), const QJSValue &arg3=QJSValue(), const QJSValue &arg4=QJSValue(), const QJSValue &arg5=QJSValue(), const QJSValue &arg6=QJSValue(), const QJSValue &arg7=QJSValue(), const QJSValue &arg8=QJSValue(), const QJSValue &arg9=QJSValue())
Q_INVOKABLE bool registerTouchScreenEdge(int edge, const QJSValue &callback)
Q_INVOKABLE bool registerShortcut(const QString &objectName, const QString &text, const QString &keySequence, const QJSValue &callback)
QList< QAction * > actionsForUserActionMenu(Window *client, QMenu *parent)
Creates actions for the UserActionsMenu by invoking the registered callbacks.
Q_INVOKABLE void registerUserActionsMenu(const QJSValue &callback)
Registers the given callback to be invoked whenever the UserActionsMenu is about to be showed....
Q_INVOKABLE bool unregisterScreenEdge(int edge)
Q_INVOKABLE bool registerScreenEdge(int edge, const QJSValue &callback)
Q_INVOKABLE ScriptTimer(QObject *parent=nullptr)
QQmlContext * declarativeScriptSharedContext() const
QtScriptWorkspaceWrapper * workspaceWrapper() const
static Scripting * self()
QQmlEngine * qmlEngine() const
QList< QPair< bool, QPair< QString, QString > > > LoadScriptList
true == javascript, false == qml