<div dir="ltr">Yes, I am running plasma 6.1 on fedora 40. The details of my system are as follows<div>Operating System: Fedora Linux 40<br>KDE Plasma Version: 6.1.5<br>KDE Frameworks Version: 6.6.0<br>Qt Version: 6.7.2<br>Kernel Version: 6.10.11-200.fc40.x86_64 (64-bit)<br>Graphics Platform: Wayland<br>Processors: 16 × 12th Gen Intel® Core™ i9-12900K<br>Memory: 46.8 GB of RAM<br>Graphics Processor: NVIDIA GeForce RTX 3080/PCIe/SSE2<br>Manufacturer: Gigabyte Technology Co., Ltd.<br>Product Name: Z690 UD AX DDR4<br></div><div><br></div><div>Even if CaptureWorkspace returns a dictionary, I shouldn't be getting the error that the API doesn't exist. </div><div><br></div><div>To provide more context, I am making a kirigami app. I am using the .desktop file as given in the previous email. I am also using the following command for compiling and testing </div><div><br></div><div>cmake -S . -B build -GNinja && cmake --build build --parallel && sudo  cmake --install build/ --prefix "/usr" && koolintelligence<br></div><div><br></div><div>I cannot tell where I am going wrong with this. Is there anything else that I can try that might help?</div><div><br></div><div>Thanks for your help,</div><div>Rahul</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 4 Oct 2024 at 19:13, Vlad Zahorodnii <<a href="mailto:vlad.zahorodnii@kde.org">vlad.zahorodnii@kde.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Also note that CaptureWorkspace returns a dictionary. The API can be <br>
found here <br>
<a href="https://invent.kde.org/plasma/kwin/-/blob/master/src/plugins/screenshot/org.kde.KWin.ScreenShot2.xml?ref_type=heads#L350" rel="noreferrer" target="_blank">https://invent.kde.org/plasma/kwin/-/blob/master/src/plugins/screenshot/org.kde.KWin.ScreenShot2.xml?ref_type=heads#L350</a><br>
<br>
On 10/4/24 4:40 PM, Vlad Zahorodnii wrote:<br>
> Hi,<br>
><br>
> CaptureWorkspace was introduced in Plasma 6.0. Are you running Plasma 6?<br>
><br>
> Vlad<br>
><br>
> On 10/3/24 6:51 PM, rahul vadhyar wrote:<br>
>> Hi,<br>
>> I am Rahul, a college student from India.<br>
>> I am working on a project where I need to take screenshots of the <br>
>> screen for further processing. From looking online and looking at the <br>
>> spectacle code, I have figured out that you need to install the <br>
>> application in /usr/bin and that the .desktop file must contain the <br>
>> following<br>
>><br>
>> 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>
>><br>
>><br>
>> However, even after doing this, I am getting the following error<br>
>><br>
>> Screenshot failed: No such method 'CaptureWorkspace' in interface 'org.<br>
>> kde.KWin.ScreenShot2' at object path '/org/kde/KWin/ScreenShot2' <br>
>> (signature '')<br>
>><br>
>> My code is attached below for reference. Please let me know how I can <br>
>> resolve this issue.<br>
>><br>
>> #include <QtDBus/QtDBus><br>
>> #include <QDBusUnixFileDescriptor><br>
>> #include "logging.hpp"<br>
>> #include <fcntl.h><br>
>> static const QString screenShotService = <br>
>> QString().fromStdString("org.kde.KWin.ScreenShot2");<br>
>> static const QString screenShotObjectPath = <br>
>> QString().fromStdString("/org/kde/KWin/ScreenShot2");<br>
>> static const QString screenShotInterface = <br>
>> 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 <br>
>> Screenshot interface");<br>
>>         return;<br>
>>     }<br>
>><br>
>>     QDBusReply<QString> reply = <br>
>> 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: " + <br>
>> reply.error().message().toStdString());<br>
>>     }<br>
>> }<br>
</blockquote></div>