I see absolutely nothing about it online.
@gcarlo_f, is that what you did? I see the greyed overlay, but it fails to:
An error occurred while taking a screenshot.
KWin screenshot request failed:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Potentially relevant information:
Method:
CaptureScreen
Method specific arguments: “DP-1”
@developers, has this already been reported as a bug? I differs to previous errata:
yes, I set a 5 secs delay and lock the screen. But consider I am running kde on kubuntu 24.04 LTS:
$ plasmashell --version
plasmashell 5.27.12
$ kf5-config --version
Qt: 5.15.13
KDE Frameworks: 5.115.0
kf5-config: 1.0
@rokejulianlockhart I tried and have your same Issue with the same exact message.
But if you try to record with Spectacle (with the delay) the full window you’ll have a small video and from there you can do the screenshot.
I choosed to see the cursor but will be better without if you want to do a screenshot from the video.

Regards
@Krovikan, I’ve been unable to decipher what you mean by this. Are you willing to upload a video demonstrating how you do it to YouTube?
More easy. Steps:
- Meta + R and click in desktop (Spectacle records at fullscreen). Make sure that you see the message that Spectacle is recording.
- Meta + L (for lock the desktop)
- Enter password and stop Spectacle clicking the red circle in taskbar. You have the video for play and take a screenshot of the lock screen.
Regards
@Krovikan, thanks. So you’re saying I should extract a frame from a screencast? Ironically, I just realised that myself, per bugs.kde.org/show_bug.cgi?id=506534
.
Yes. Stop de video where you want and magical screenshot with Spectacle.
Regards
@rokejulianlockhart why do you want to screenshot the screenlocker?
You probably can screenshot the screenlocker in test mode:
/usr/lib/kscreenlocker_greet --testing
but I am unsure what you are trying to do?
@Duha, /usr/libexec/kscreenlocker_greet --testing
[1] merely SIGSEGV
s: [2]
Program terminated with signal SIGSEGV, Segmentation fault.
#0 QtWayland::wl_seat::object (this=0x4214) at /usr/include/qt6/QtWaylandClient/6.9.1/QtWaylandClient/private/qwayland-wayland.h:789
warning: Source file is more recent than executable.
789 struct ::wl_seat *object() { return m_wl_seat; }
[Current thread is 1 (Thread 0x7f17deb67e00 (LWP 59334))]
Missing rpms, try: dnf --enablerepo='*debug*' install mesa-va-drivers-freeworld-debuginfo-25.0.7-2.fc42.x86_64
(gdb) bt full
#0 QtWayland::wl_seat::object (this=0x4214) at /usr/include/qt6/QtWaylandClient/6.9.1/QtWaylandClient/private/qwayland-wayland.h:789
No locals.
#1 QtWaylandClient::QWaylandInputDevice::wl_seat (this=0x4204) at /usr/include/qt6/QtWaylandClient/6.9.1/QtWaylandClient/private/qwaylandinputdevice_p.h:96
No locals.
#2 QWaylandXdgActivationV1::requestXdgActivationToken (this=this@entry=0x558f84a5d450, display=0x558f8418f960, surface=<optimized out>, serial=std::optional = {...}, app_id=...)
at /usr/src/debug/layer-shell-qt-6.4.1-1.fc42.x86_64/src/qwaylandxdgactivationv1.cpp:38
wl = <optimized out>
provider = 0x7f17cc01b000
#3 0x00007f17e7904990 in LayerShellQt::QWaylandLayerSurface::requestActivate (this=0x558f84ebf480) at /usr/include/qt6/QtWaylandClient/6.9.1/QtWaylandClient/private/qwaylandwindow_p.h:141
seat = <optimized out>
tokenProvider = <optimized out>
focusWindow = <optimized out>
wlWindow = 0x558f84a4b160
activation = 0x558f84a5d450
#4 0x00007f17e515662c in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/corelib/kernel/qobject.cpp:1431
mce = <optimized out>
connections = <optimized out>
sender = {previous = 0x0, receiver = 0x7ffff5e332f0, sender = 0x0, signal = -1}
#5 0x00007f17e50f9f38 in QCoreApplication::notifyInternal2 (receiver=0x7ffff5e332f0, event=0x558f84948140) at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1106
d = <optimized out>
threadData = 0x558f84187540
selfRequired = <optimized out>
result = false
cbdata = {0x7ffff5e332f0, 0x558f84948140, 0x7ffff5e32b0f}
scopeLevelCounter = {threadData = 0x558f84187540}
#6 0x00007f17e50fa19d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1546
No locals.
#7 0x00007f17e50fdd26 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x558f84187540)
at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1879
e = 0x558f84948140
pe = <optimized out>
r = <optimized out>
relocker = <optimized out>
event_deleter = <optimized out>
locker = {_M_device = 0x558f84187588, _M_owns = false}
startOffset = 0
i = <optimized out>
cleanup = <optimized out>
#8 0x00007f17e541016f in postEventSourceDispatch (s=0x558f8418b6a0) at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:246
source = 0x558f8418b6a0
#9 0x00007f17e32eb880 in g_main_dispatch (context=0x7f17cc000f00) at ../glib/gmain.c:3398
dispatch = 0x7f17e5410150 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)>
prev_source = 0x0
begin_time_nsec = 15307197157608
was_in_call = 0
user_data = 0x0
callback = 0x0
cb_funcs = 0x0
cb_data = 0x0
need_destroy = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
source = 0x558f8418b6a0
current = 0x558f84e85ab0
i = 0
__func__ = <optimized out>
#10 g_main_context_dispatch_unlocked (context=0x7f17cc000f00) at ../glib/gmain.c:4249
No locals.
#11 0x00007f17e32f47a8 in g_main_context_iterate_unlocked (context=context@entry=0x7f17cc000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4314
max_priority = 0
timeout_usec = 0
some_ready = 1
nfds = 7
allocated_nfds = <optimized out>
fds = <optimized out>
begin_time_nsec = <optimized out>
#12 0x00007f17e32f4953 in g_main_context_iteration (context=0x7f17cc000f00, may_block=1) at ../glib/gmain.c:4379
retval = <optimized out>
#13 0x00007f17e540f9ad in QEventDispatcherGlib::processEvents (this=0x558f8418d400, flags=...) at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:399
d = 0x558f8419ca20
canWait = <optimized out>
savedFlags = {<QtPrivate::QFlagsStorageHelper<QEventLoop::ProcessEventsFlag, 4>> = {<QtPrivate::QFlagsStorage<QEventLoop::ProcessEventsFlag>> = {static IntegerSize = 4,
i = 0}, <No data fields>}, <No data fields>}
result = <optimized out>
#14 0x00007f17e5107b03 in QEventLoop::exec (this=this@entry=0x7ffff5e32e70, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/corelib/global/qflags.h:77
d = 0x558f84a47020
threadData = <optimized out>
locker = {m_mutex = 0x558f84187678, m_isLocked = false}
ref = <optimized out>
app = <optimized out>
#15 0x00007f17e5103419 in QCoreApplication::exec () at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1449
threadData = 0x558f84187540
eventLoop = {<QObject> = {_vptr.QObject = 0x7f17e56a1c70 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = {direct = 0x0},
stringdata = 0x7f17e551d7f0 <QObject::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN7QObjectE_t>+272>,
data = 0x7f17e551d6e0 <QObject::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN7QObjectE_t>>,
static_metacall = 0x7f17e51624c0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
metaTypes = 0x7f17e56a3a60 <QObject::qt_staticMetaObjectRelocatingContent<(anonymous namespace)::qt_meta_tag_ZN7QObjectE_t>>, extradata = 0x0}}, d_ptr = {d = 0x558f84a47020}},
static staticMetaObject = {d = {superdata = {direct = 0x7f17e569dc80 <QObject::staticMetaObject>},
stringdata = 0x7f17e551ab0c <QEventLoop::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN10QEventLoopE_t>+236>,
data = 0x7f17e551aa20 <QEventLoop::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN10QEventLoopE_t>>,
static_metacall = 0x7f17e51076e0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
metaTypes = 0x7f17e56a1d20 <QEventLoop::qt_staticMetaObjectRelocatingContent<(anonymous namespace)::qt_meta_tag_ZN10QEventLoopE_t>>, extradata = 0x0}}}
returnCode = <optimized out>
#16 0x00007f17e58ddbad in QGuiApplication::exec () at /usr/src/debug/qt6-qtbase-6.9.1-1.fc42.x86_64/src/gui/kernel/qguiapplication.cpp:1986
No locals.
#17 0x0000558f7b7068be in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kscreenlocker-6.4.1-1.fc42.x86_64/greeter/main.cpp:207
blockedSignals = {__val = {16896, 139740631330288, 139740497477120, 139740645422276, 14, 94074884890832, 140737318696016, 139740597252771, 94074884805680, 94072668684288, 139736760975360, 0,
140737318696224, 40, 94074739810848, 139740610014912}}
format = {d = 0x558f8415c360}
app = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x558f7b7357a8 <vtable for ScreenLocker::UnlockApp+16>, static staticMetaObject = {d = {superdata = {direct = 0x0},
stringdata = 0x7f17e551d7f0 <QObject::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN7QObjectE_t>+272>,
data = 0x7f17e551d6e0 <QObject::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN7QObjectE_t>>,
static_metacall = 0x7f17e51624c0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
metaTypes = 0x7f17e56a3a60 <QObject::qt_staticMetaObjectRelocatingContent<(anonymous namespace)::qt_meta_tag_ZN7QObjectE_t>>, extradata = 0x0}}, d_ptr = {d = 0x558f8418c440}},
static staticMetaObject = {d = {superdata = {direct = 0x7f17e569dc80 <QObject::staticMetaObject>},
stringdata = 0x7f17e55190e8 <QCoreApplication::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN16QCoreApplicationE_t>+392>,
data = 0x7f17e5518f60 <QCoreApplication::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN16QCoreApplicationE_t>>,
static_metacall = 0x7f17e5103c30 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
metaTypes = 0x7f17e56a1980 <QCoreApplication::qt_staticMetaObjectRelocatingContent<(anonymous namespace)::qt_meta_tag_ZN16QCoreApplicationE_t>>, extradata = 0x0}},
static self = 0x7ffff5e332f0}, static staticMetaObject = {d = {superdata = {direct = 0x7f17e56a1940 <QCoreApplication::staticMetaObject>},
stringdata = 0x7f17e60af910 <QGuiApplication::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN15QGuiApplicationE_t>+752>,
data = 0x7f17e60af620 <QGuiApplication::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN15QGuiApplicationE_t>>,
static_metacall = 0x7f17e58dec70 <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
metaTypes = 0x7f17e61ce640 <QGuiApplication::qt_staticMetaObjectRelocatingContent<(anonymous namespace)::qt_meta_tag_ZN15QGuiApplicationE_t>>, extradata = 0x0}}}, static staticMetaObject = {
d = {superdata = {direct = 0x558f7b734a40 <QGuiApplication::staticMetaObject>},
stringdata = 0x558f7b72da1c <ScreenLocker::UnlockApp::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN12ScreenLocker9UnlockAppE_t>+412>,
data = 0x558f7b72d880 <ScreenLocker::UnlockApp::qt_staticMetaObjectStaticContent<(anonymous namespace)::qt_meta_tag_ZN12ScreenLocker9UnlockAppE_t>>,
static_metacall = 0x558f7b710410 <ScreenLocker::UnlockApp::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
metaTypes = 0x558f7b7350a0 <ScreenLocker::UnlockApp::qt_staticMetaObjectRelocatingContent<(anonymous namespace)::qt_meta_tag_ZN12ScreenLocker9UnlockAppE_t>>, extradata = 0x0}}, m_packageName = {
d = {d = 0x0, ptr = 0x558f7b72ae60 u"org.kde.plasma.desktop", size = 22}}, m_mainQmlPath = {d = 0x558f844b3580},
m_views = {<QListSpecialMethods<PlasmaQuick::QuickViewSharedEngine*>> = {<QListSpecialMethodsBase<PlasmaQuick::QuickViewSharedEngine*>> = {<No data fields>}, <No data fields>}, d = {
d = 0x558f841fe240, ptr = 0x558f841fe250, size = 1}}, m_resetRequestIgnoreTimer = 0x558f845ef390, m_delayedLockTimer = 0x0, m_package = {
_vptr.Package = 0x7f17e78adfe0 <vtable for KPackage::Package+16>, d = {d = {ptr = 0x558f845d7d40}}}, m_testing = true, m_ignoreRequests = false, m_immediateLock = true,
m_runtimeInitialized = false, m_authenticators = 0x558f845d6510, m_graceTime = 0, m_noLock = false, m_defaultToSwitchUser = false, m_canSuspend = false, m_canHibernate = false, m_userName = {d = {
d = 0x558f84646460, ptr = 0x558f84646470 u"Mr. Roke Julian Lockhart Beedell (RJLB)", size = 39}}, m_userImage = {d = {d = 0x558f84646200,
ptr = 0x558f84646210 u"/var/lib/AccountsService/icons/RokeJulianLockhart", size = 49}}, m_display = 0x0, m_ksldInterface = 0x0, m_wallpaperPackage = {
_vptr.Package = 0x7f17e78adfe0 <vtable for KPackage::Package+16>, d = {d = {ptr = 0x558f845d6bc0}}}, m_shellIntegration = 0x558f841a1ac0}
disableSessionManagement = <optimized out>
parser = {d = 0x558f846590c0}
testingOption = {d = {d = {ptr = 0x558f84654940}}}
shellOption = {d = {d = {ptr = 0x558f84654c20}}}
immediateLockOption = {d = {d = {ptr = 0x558f84654dc0}}}
graceTimeOption = {d = {d = {ptr = 0x558f84654cf0}}}
nolockOption = {d = {d = {ptr = 0x558f846551e0}}}
switchUserOption = {d = {d = {ptr = 0x558f846553e0}}}
waylandFdOption = {d = {d = {ptr = 0x558f846556b0}}}
ok = true
graceTime = <optimized out>
If relevant, it prints an error in the CLI:
Locked at 1751566120 file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/lockscreen/LockOsd.qml:10:1: "../osd": no such directory
My terminal’s integrated LLM suggests a potential solution, which is novel!
We live in the future, indeed.
Screenshot KScreenLocker. Why do you ask: reckon it’s an X/Y problem?
Are you on Fedora 42?
Yes. Thats why I am asking. Because of the Fedora Bug? Because you want to screenshot a working screenlocker?
Thats unrelated to the SEGV. I also get those error messages, but I can screenshot the screenlocker in testing mode just fine (on Arch).
Same for me on a Fedora 42 with qt6-qtwayland
reverted. The error message appears, there’s no SEGV, and the screenshot is captured correctly.
@Duha, I wanted to capture an example of how github.com/luisbocanegra/plasma-smart-video-wallpaper-reborn/releases/tag/v2.3.2
adheres to what kcm_colors
exposes via KColorScheme
to the QPalette
, per the currently-applied .colors
when no video has been applied:
I wanted to screenshot this in order to provide a demonstration of why github.com/cvzi/darkmodewallpaper/releases/tag/v1.9.0
should be able to adhere to com.android.settings/.wallpaper.WallpaperSuggestionActivity
’s [1] Material You colouration, [2] since the user must currently manually apply the relevant RGB as base-16:
Is this relevant, somehow? I didn’t believe that it was.
Yes. cat /etc/os-release
returns:
PRETTY_NAME="Fedora Linux 42 (KDE Plasma Desktop Edition)"
@Duha, previously, I was using my FW16 (laptop). On my desktop, although the SIGSEGV
in QtWayland::wl_seat::object
reproduced 1 of the 6 times I invoked /usr/libexec/kscreenlocker_greet --testing
, [1] it works otherwise!
Environment
Operating System: Fedora Linux 42 KDE Plasma Version: 6.4.1 KDE Frameworks Version: 6.15.0 Qt Version: 6.9.1 Kernel Version: 6.15.4-200.fc42.x86_64 (64-bit) Graphics Platform: Wayland Graphics Processor 1: AMD Radeon RX 5700 Graphics Processor 2: AMD Radeon Graphics Manufacturer: ASRock Product Name: X670E Taichi
Output
/usr/libexec/kscreenlocker_greet --testing org.kde.plasma.libtaskmanager: The PlasmaWindowManagement protocol hasn't activated in time. The client possibly got denied by kwin? Check kwin output. qt.multimedia.ffmpeg: Using Qt multimedia with FFmpeg version 7.1.1 GPL version 3 or later Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory Locked at 1751577742 QProcess: Destroyed while process ("/home/RokeJulianLockhart/.local/share/plasma/wallpapers/luisbocanegra.smart.video.wallpaper.reborn/contents/ui/tools/gdbus_get_signal.sh") is still running. file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/lockscreen/LockOsd.qml:10:1: "../osd": no such directory Unlocked
Heck, with noborderrule=2
imported from a .kwinrules
via kcm_kwinrules
(on XOrg 11), [2] I can even resize kscreenlocker
for a good screenshot:
Unfocused | Focused |
---|---|
This was easier to capture, since I don’t have to time it, like I would under Wayland. |
Environment
Operating System: openSUSE Tumbleweed 20250701 KDE Plasma Version: 6.4.1 KDE Frameworks Version: 6.15.0 Qt Version: 6.9.1 Kernel Version: 6.15.4-1-default (64-bit) Graphics Platform: X11 Graphics Processor: llvmpipe Manufacturer: QEMU Product Name: Standard PC (i440FX + PIIX, 1996) System Version: pc-i440fx-9.2
Thanks! That’s quite versatile.
I’ve since ascertained that invoking it from PowerShell appears to be what causes the cascade of /usr/libexec/kscreenlocker_greet --testing
segmentation fault-ing. It’s really inconsistent, though. Perhaps it always requires a POSIX-compliant shell.
At least DBus doesn’t:
busctl --user call org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver Lock
qdbus-qt6 org.freedesktop.ScreenSaver /ScreenSaver Lock
Damnned Spectacle doesn’t work when it’s invoked in this manner, though.