https://bugs.kde.org/show_bug.cgi?id=527401
Bug ID: 527401
Summary: EDID-less virtual outputs all match the same saved
output entry; a stale "disabled" setup makes every new
virtual output fail to configure
Classification: Plasma
Product: kwin
Version First unspecified
Reported In:
Platform: Arch Linux
OS: Linux
Status: REPORTED
Severity: minor
Priority: NOR
Component: multi-screen
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
DESCRIPTION
A virtual output created via zkde_screencast stream_virtual_output (e.g.
krfb-virtualmonitor) never gets configured, and the client receives no frames,
if kwinoutputconfig.json contains an older virtual output that was saved as
disabled in a setup.
Every attempt logs:
kwin_wayland: Applying output configuration failed: Attempted to disable an
output that doesn't have the capability
Root cause (from reading src/outputconfigurationstore.cpp, Plasma/6.8):
OutputConfigurationStore::findOutputIndex() matches on EDID identifier first,
then EDID hash, and only falls back to connectorName as the last step. Virtual
outputs have an empty EDID identifier and hash. A saved entry for an old
virtual output also has no EDID fields. So for any new virtual output:
1. filter by edidIdentifier == "" -> exactly one match (the stale virtual
entry)
2. edidHashUniqueAmongOutputs is true (the other output is a real monitor
with an EDID), so narrow by hash -> still one match -> return it
The connector name is never compared, so a virtual output with a different name
(e.g. "Virtual-LaptopVNC") is still treated as the old "Virtual-Laptop".
findSetup() then picks the saved setup where that output has "enabled": false.
Workspace::applyOutputConfiguration() rejects it because virtual outputs lack
Capability::Disable, so the output is never set up.
In my case this made krfb-virtualmonitor segfault in libvncserver on the first
frame (NULL framebuffer), across every attempt over several months.
STEPS TO REPRODUCE
1. Have kwinoutputconfig.json contain a virtual output (e.g. "Virtual-Laptop")
with a setup where it is "enabled": false next to a physical monitor. (I don't
know exactly how mine got saved as disabled; it is from an earlier session.)
2. Run: krfb-virtualmonitor --resolution 1920x1080 --name AnythingElse --port
5900
3. Check the journal for the "Attempted to disable an output..." message; no
virtual output appears in kscreen-doctor -o.
OBSERVED RESULT
Any virtual output, regardless of name, inherits the stale disabled state and
fails to configure.
EXPECTED RESULT
EDID-less outputs should be matched by connector name (or at least not to an
entry with a different name), and/or a setup that disables an output lacking
Capability::Disable should be ignored or fixed up instead of failing the whole
apply.
SOFTWARE/OS VERSIONS
Operating System: CachyOS Linux
KDE Plasma Version: 6.8.0
KDE Frameworks Version: 6.31.0
Qt Version: 6.12.0
ADDITIONAL INFORMATION
I got around the issue by removing the stale Virtual-* entry and setups that
referenced it from ~/.config/kwinoutputconfig.json, then logging out and back
in (the store is only loaded at startup).
--
You are receiving this mail because:
You are watching all bug changes.