diff options
-rw-r--r-- | wayland/democompositor/processlauncher.cpp | 13 | ||||
-rw-r--r-- | wayland/democompositor/processlauncher.h | 1 | ||||
-rw-r--r-- | wayland/democompositor/qml/Screen.qml | 1 | ||||
-rw-r--r-- | wayland/democompositor/qml/main.qml | 8 |
4 files changed, 23 insertions, 0 deletions
diff --git a/wayland/democompositor/processlauncher.cpp b/wayland/democompositor/processlauncher.cpp index c8fe15c..bb11cb9 100644 --- a/wayland/democompositor/processlauncher.cpp +++ b/wayland/democompositor/processlauncher.cpp @@ -74,6 +74,19 @@ WaylandProcessLauncher::~WaylandProcessLauncher() { } +QVariant WaylandProcessLauncher::appStateForPid(int pid) const +{ + for (auto state : m_appStates) { + if (state.process->pid() == pid) { + qCDebug(procs) << "Found state for" << pid << state.appEntry.executableName; + return QVariant::fromValue(state); + } + } + + qCDebug(procs) << "Couldn't find entry for" << pid; + return QVariant(); +} + bool WaylandProcessLauncher::isRunning(const AppEntry& entry) const { for (auto state : m_appStates) { diff --git a/wayland/democompositor/processlauncher.h b/wayland/democompositor/processlauncher.h index 84f9cb8..f21be98 100644 --- a/wayland/democompositor/processlauncher.h +++ b/wayland/democompositor/processlauncher.h @@ -81,6 +81,7 @@ public: ~WaylandProcessLauncher(); Q_INVOKABLE void launch(const AppEntry &entry); + Q_INVOKABLE QVariant appStateForPid(int pid) const; Q_INVOKABLE bool isRunning(const AppEntry& entry) const; Q_SIGNALS: diff --git a/wayland/democompositor/qml/Screen.qml b/wayland/democompositor/qml/Screen.qml index fb8d4ea..ffb8490 100644 --- a/wayland/democompositor/qml/Screen.qml +++ b/wayland/democompositor/qml/Screen.qml @@ -59,6 +59,7 @@ import com.theqtcompany.wlapplistmodel 1.0 WaylandOutput { id: output property alias surfaceArea: background + property alias appLauncher: launcher property var windowList: [ ] property int hiddenWindowCount diff --git a/wayland/democompositor/qml/main.qml b/wayland/democompositor/qml/main.qml index 8c0c621..75d1adc 100644 --- a/wayland/democompositor/qml/main.qml +++ b/wayland/democompositor/qml/main.qml @@ -57,6 +57,7 @@ WaylandCompositor { property var primarySurfacesArea: null Screen { + id: mainScreen compositor: comp } @@ -69,6 +70,13 @@ WaylandCompositor { WlShell { id: defaultShell onWlShellSurfaceCreated: { + const pid = shellSurface.surface.client.processId; + const appState = mainScreen.appLauncher.appStateForPid(pid); + if (!appState) { + console.log("shellSurface of unknown application. Continuing. PID=" + pid); + } else { + console.log("shellSurface belonging to " + appState.appEntry.executableName); + } chromeComponent.createObject(defaultOutput.surfaceArea, { "shellSurface": shellSurface } ); defaultOutput.relayout(); } |