This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Source of ScreenConnectors section of plasmashellrc

Tags: None
(comma "," separated)
benbel
Registered Member
Posts
4
Karma
0
Does anyone know how KDE generates the [ScreenConnectors] section of plasmashellrc? I've been digging online for hours but have found no documentation on how plasmashellrc is generated within KDE. I have found out it is not through the kscreen background service. Is it directly from Xorg in some fashion? Is there some way to keep plasmashell from updating this section (make it static)?

P.S. I am in search of this information in a quest to solve the issue posted on the Manjaro forums here: https://forum.manjaro.org/t/plasmashell-multi-monitor-unwanted-screen-reorder-on-wake-displaced-panels, and it seems like I am not the only one with this problem trying to find this out https://www.reddit.com/r/kdeneon/comments/biyx46/plasmashellrc_and_multimonitor/
User avatar
genpfault
Registered Member
Posts
3
Karma
0
See the ScreenPool constructor in plasma-workspace:shell/screenpool.cpp for the initial load of the ScreenConnectors config:
Code: Select all
ScreenPool::ScreenPool(const KSharedConfig::Ptr &config, QObject *parent)
    : QObject(parent),
      m_configGroup(KConfigGroup(config, QStringLiteral("ScreenConnectors")))
{
...

ScreenPool::save() looks like it sets up a timer that will sync m_configGroup to disk every 30s.
User avatar
genpfault
Registered Member
Posts
3
Karma
0
Might try switching out the QScreen::name() usages with QScreen::serialNumber() (or possibly a string-ified manufacturer()/model()/serialNumber() tuple) since the QXcbScreen implementation actually does the right thing and parses out the EDID serial number from XRandr.

EDIT: Don't forget to fix up ScreenPool callers that use QScreen::name() like ShellCorona::load() too.
User avatar
genpfault
Registered Member
Posts
3
Karma
0
genpfault wrote:Might try switching out the QScreen::name() usages with QScreen::serialNumber() (or possibly a string-ified manufacturer()/model()/serialNumber() tuple) since the QXcbScreen implementation actually does the right thing and parses out the EDID serial number from XRandr.

EDIT: Don't forget to fix up ScreenPool callers that use QScreen::name() like ShellCorona::load() too.

That approach seems to work pretty well.


Bookmarks



Who is online

Registered users: Bing [Bot], Google [Bot], Yahoo [Bot]