diff --git a/kded/config.cpp b/kded/config.cpp --- a/kded/config.cpp +++ b/kded/config.cpp @@ -185,6 +185,12 @@ info[QStringLiteral("primary")] = output->isPrimary(); info[QStringLiteral("enabled")] = output->isEnabled(); + QString replicationSourceHash; + if (int sourceId = output->replicationSource()) { + replicationSourceHash = m_data->output(sourceId)->hashMd5(); + } + info[QStringLiteral("replicate")] = replicationSourceHash; + QVariantMap pos; pos[QStringLiteral("x")] = output->pos().x(); pos[QStringLiteral("y")] = output->pos().y(); diff --git a/kded/output.cpp b/kded/output.cpp --- a/kded/output.cpp +++ b/kded/output.cpp @@ -310,6 +310,18 @@ } infoFound = true; readIn(output, info, control.getOutputRetention(output)); + + const QString replicationSourceHash = info[QStringLiteral("replicate")].toString(); + if (replicationSourceHash.isEmpty()) { + output->setReplicationSource(0); + } else { + for (const KScreen::OutputPtr out : outputs) { + if (out != output && out->hashMd5() == replicationSourceHash) { + output->setReplicationSource(out->id()); + break; + } + } + } break; } if (!infoFound) {