main: directly set Xwayland scale, instead of starting a KCM to do the same

master
Xaver Hugl 12 months ago
parent 3654b76ec2
commit 2eb72d0820

@ -383,8 +383,15 @@ void Application::setXwaylandScale(qreal scale)
{ {
if (scale != m_xwaylandScale) { if (scale != m_xwaylandScale) {
m_xwaylandScale = scale; m_xwaylandScale = scale;
// rerun the fonts kcm init that does the appropriate xrdb call with the new settings // change the font dpi to match
QProcess::startDetached("kcminit", {"kcm_fonts", "kcm_style"}); const int dpi = std::round(scale * 96);
const QByteArray input = "Xft.dpi: " + QByteArray::number(dpi);
QProcess p;
p.start(QStringLiteral("xrdb"), {QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp")});
p.setProcessChannelMode(QProcess::ForwardedChannels);
p.write(input);
p.closeWriteChannel();
p.waitForFinished(-1);
Q_EMIT xwaylandScaleChanged(); Q_EMIT xwaylandScaleChanged();
} }
} }

Loading…
Cancel
Save