<div dir="ltr">Hi,<div>I am Rahul, a college student from India.</div><div>I am working on a project where I need to take screenshots of the screen for further processing. From looking online and looking at the spectacle code, I have figured out that you need to install the application in /usr/bin and that the .desktop file must contain the following</div><div><br></div><div>X-DBUS-StartupType=Unique<br>X-DBUS-ServiceName=org.kde.koolintelligence<br>X-KDE-DBUS-Restricted-Interfaces=org.kde.KWin.ScreenShot2<br>X-KDE-Wayland-Interfaces=org_kde_plasma_window_management,zkde_screencast_unstable_v1<br></div><div><br></div><div>However, even after doing this, I am getting the following error</div><div><br></div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0)">Screenshot failed: No such method 'CaptureWorkspace' in interface 'org.</span><br>kde.KWin.ScreenShot2' at object path '/org/kde/KWin/ScreenShot2' (signature '')<br></span></div><div><span style="font-family:monospace"><br></span></div><div>My code is attached below for reference. Please let me know how I can resolve this issue.</div><div><br></div><div>#include <QtDBus/QtDBus><br>#include <QDBusUnixFileDescriptor><br>#include "logging.hpp"<br>#include <fcntl.h><br>static const QString screenShotService = QString().fromStdString("org.kde.KWin.ScreenShot2");<br>static const QString screenShotObjectPath = QString().fromStdString("/org/kde/KWin/ScreenShot2");<br>static const QString screenShotInterface = QString().fromStdString("org.kde.KWin.ScreenShot2");<br>void takeScreenshotKwin(std::string path) {<br>    // Connect to KWin's screenshot service<br>    QDBusInterface interface(<br>        screenShotService,<br>        screenShotObjectPath,<br>        screenShotInterface,<br>        QDBusConnection::sessionBus() // Bus connection<br>    );<br><br>    if (!interface.isValid()) {<br>        LOG_ERROR("takeScreenshotKwin", "Failed to connect to KWin Screenshot interface");<br>        return;<br>    }<br> <br>    QDBusReply<QString> reply = interface.call(QString().fromStdString("CaptureWorkspace"));<br><br>    if (reply.isValid()) {<br>        LOG_INFO("takeScreenshotKwin", "Screenshot saved at: " + path);<br>    } else {<br>        LOG_ERROR("takeScreenshotKwin", "Screenshot failed: " + reply.error().message().toStdString());<br>    }<br>}<br></div></div>