[frameworks/kwallet] src: Port to KConfigXT

Nicolas Fella <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit dc47c0410ca4a5dd060ba949c3c066afa5cca118 by Nicolas Fella.
Committed on 29/07/2026 at 08:07.
Pushed by nicolasfella into branch 'master'.

Port to KConfigXT

M  +2    -0    src/CMakeLists.txt
M  +3    -1    src/api/KWallet/CMakeLists.txt
M  +4    -6    src/api/KWallet/kwallet.cpp
A  +51   -0    src/kwalletsettings.kcfg
M  +3    -0    src/runtime/ksecretd/CMakeLists.txt
M  +3    -0    src/runtime/ksecretd/autotests/CMakeLists.txt
M  +18   -18   src/runtime/ksecretd/ksecretd.cpp
M  +6    -10   src/runtime/ksecretd/kwalletfreedesktopservice.cpp
M  +1    -1    src/runtime/ksecretd/kwalletfreedesktopservice.h
M  +0    -2    src/runtime/ksecretd/main.cpp
M  +2    -1    src/runtime/kwalletbackend/CMakeLists.txt
M  +8    -21   src/runtime/kwalletbackend/kwalletbackend.cc
M  +3    -1    src/runtime/kwalletd/CMakeLists.txt
M  +16   -20   src/runtime/kwalletd/kwalletd.cpp
M  +4    -5    src/runtime/kwalletd/main.cpp
M  +4    -5    src/runtime/kwalletd/secretserviceclient.cpp

https://invent.kde.org/frameworks/kwallet/-/commit/dc47c0410ca4a5dd060ba949c3c066afa5cca118

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4ec4ca79..b1adc0fe 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -7,3 +7,5 @@ ecm_qt_install_logging_categories(
     FILE kwallet.categories
     DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
 )
+
+install(FILES kwalletsettings.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR})
diff --git a/src/api/KWallet/CMakeLists.txt b/src/api/KWallet/CMakeLists.txt
index 4be74961..184c9ec0 100644
--- a/src/api/KWallet/CMakeLists.txt
+++ b/src/api/KWallet/CMakeLists.txt
@@ -73,7 +73,7 @@ target_link_libraries(KF6Wallet
         Qt6::Gui
     PRIVATE
         Qt6::DBus
-        KF6::ConfigCore   # used to store the wallet to be used
+        KF6::ConfigGui   # used to store the wallet to be used
 )
 
 if(MAC_USE_OSXKEYCHAIN)
@@ -96,6 +96,8 @@ ecm_generate_headers(KWallet_HEADERS
 
 ecm_generate_qdoc(KF6Wallet kwallet.qdocconf)
 
+kconfig_target_kcfg_file(KF6Wallet FILE ${CMAKE_SOURCE_DIR}/src/kwalletsettings.kcfg CLASS_NAME KWalletSettings)
+
 install(TARGETS KF6Wallet EXPORT KF6WalletTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
 install(FILES
   ${CMAKE_CURRENT_BINARY_DIR}/kwallet_export.h
diff --git a/src/api/KWallet/kwallet.cpp b/src/api/KWallet/kwallet.cpp
index 4b88d40a..2bfa628d 100644
--- a/src/api/KWallet/kwallet.cpp
+++ b/src/api/KWallet/kwallet.cpp
@@ -14,10 +14,8 @@
 #include <QDBusConnection>
 #include <QRegularExpression>
 
-#include <KConfigGroup>
-#include <KSharedConfig>
-
 #include "kwallet_interface.h"
+#include "kwalletsettings.h"
 
 typedef QMap<QString, QByteArray> StringByteArrayMap;
 Q_DECLARE_METATYPE(StringByteArrayMap)
@@ -34,7 +32,6 @@ public:
     org::kde::KWallet &getInterface();
 
     org::kde::KWallet *m_wallet_deamon;
-    KConfigGroup m_cgroup;
     bool m_walletEnabled;
 };
 
@@ -882,10 +879,11 @@ void Wallet::virtual_hook(int, void *)
 
 KWalletDLauncher::KWalletDLauncher()
     : m_wallet_deamon(nullptr)
-    , m_cgroup(KSharedConfig::openConfig(QStringLiteral("kwalletrc"), KConfig::NoGlobals)->group(QStringLiteral("Wallet")))
     , m_walletEnabled(false)
 {
-    m_walletEnabled = m_cgroup.readEntry("Enabled", true);
+    KWalletSettings settings;
+
+    m_walletEnabled = settings.kWalletDEnabled();
     if (!m_walletEnabled) {
         qCDebug(KWALLET_API_LOG) << "The wallet service was disabled by the user";
         return;
diff --git a/src/kwalletsettings.kcfg b/src/kwalletsettings.kcfg
new file mode 100644
index 00000000..ebcb385e
--- /dev/null
+++ b/src/kwalletsettings.kcfg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- SPDX-FileCopyrightText: 2026 Nicolas Fella <[email protected]> -->
+<!-- SPDX-License-Identifier: GPL-2.0-or-later -->
+<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0       http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
+    <kcfgfile name="kwalletrc"/>
+    <group name="Wallet">
+        <entry key="First Use" type="Bool">
+            <default>true</default>
+        </entry>
+        <entry key="Launch Manager" type="Bool">
+            <default>false</default>
+        </entry>
+        <entry key="Close When Idle" type="Bool">
+            <default>false</default>
+        </entry>
+        <entry key="Prompt on Open" type="Bool">
+            <default>false</default>
+        </entry>
+        <entry key="Leave Open" type="Bool">
+            <default>true</default>
+        </entry>
+        <entry name="KWalletDEnabled" key="Enabled" type="Bool">
+            <default>true</default>
+        </entry>
+        <entry key="Idle Timeout" type="Int">
+            <default>10</default>
+        </entry>
+        <entry key="Default Wallet" type="String">
+            <default>kdewallet</default>
+        </entry>
+        <entry key="Use One Wallet" type="Bool">
+            <default>true</default>
+        </entry>
+        <entry key="Local Wallet" type="String">
+            <default>localwallet</default>
+        </entry>
+    </group>
+    <group name="KSecretD">
+        <entry name="KSecretDEnabled" key="Enabled" type="Bool">
+            <default>true</default>
+        </entry>
+    </group>
+    <group name="Migration">
+        <entry key="MigrateTo3rdParty" type="Bool">
+            <default>false</default>
+        </entry>
+        <entry key="WalletsMigratedToSecretService" type="StringList">
+            <default></default>
+        </entry>
+    </group>
+</kcfg>
diff --git a/src/runtime/ksecretd/CMakeLists.txt b/src/runtime/ksecretd/CMakeLists.txt
index 1a9eb8f2..ea3321cf 100644
--- a/src/runtime/ksecretd/CMakeLists.txt
+++ b/src/runtime/ksecretd/CMakeLists.txt
@@ -79,6 +79,8 @@ ki18n_wrap_ui(ksecretd
    kwalletwizardpagepassword.ui
 )
 
+kconfig_target_kcfg_file(ksecretd FILE ${CMAKE_SOURCE_DIR}/src/kwalletsettings.kcfg CLASS_NAME KWalletSettings MUTATORS)
+
 if (Gpgmepp_FOUND)
     target_sources(ksecretd PRIVATE
         knewwalletdialog.cpp
@@ -136,6 +138,7 @@ target_link_libraries(ksecretd
     KF6::ColorScheme
     KF6::CoreAddons
     KF6::ConfigCore
+    KF6::ConfigGui
     KF6::DBusAddons
     KF6::WidgetsAddons
     KF6::WindowSystem
diff --git a/src/runtime/ksecretd/autotests/CMakeLists.txt b/src/runtime/ksecretd/autotests/CMakeLists.txt
index 2499edc6..3871db58 100644
--- a/src/runtime/ksecretd/autotests/CMakeLists.txt
+++ b/src/runtime/ksecretd/autotests/CMakeLists.txt
@@ -72,5 +72,8 @@ ecm_add_test(
         Qt6::Test
         KF6::DBusAddons
         KF6::ConfigCore
+        KF6::ConfigGui
         ${Qca_LIBRARY}
 )
+
+kconfig_target_kcfg_file(fdo_secrets_test FILE ${CMAKE_SOURCE_DIR}/src/kwalletsettings.kcfg CLASS_NAME KWalletSettings MUTATORS)
diff --git a/src/runtime/ksecretd/ksecretd.cpp b/src/runtime/ksecretd/ksecretd.cpp
index 88753832..e8043aef 100644
--- a/src/runtime/ksecretd/ksecretd.cpp
+++ b/src/runtime/ksecretd/ksecretd.cpp
@@ -16,6 +16,7 @@
 #include "kwalletfreedesktopservice.h"
 #include "kwalletfreedesktopsession.h"
 #include "kwalletportalsecrets.h"
+#include "kwalletsettings.h"
 #include "kwalletwizard.h"
 
 #ifdef HAVE_GPGMEPP
@@ -466,15 +467,15 @@ int KSecretD::doTransactionOpen(const QString &appid, const QString &wallet, boo
         // if the user specifies a wallet name, the use it as the default
         // wallet name
         if (wallet != KWallet::Backend::localWallet()) {
-            KConfig kwalletrc(QStringLiteral("kwalletrc"));
-            KConfigGroup cfg(&kwalletrc, "Wallet");
-            cfg.writeEntry("Default Wallet", wallet);
+            KWalletSettings settings;
+            settings.setDefaultWallet(wallet);
+            settings.save();
         }
         if (wallets().contains(KWallet::Backend::localWallet())) {
-            KConfig kwalletrc(QStringLiteral("kwalletrc"));
-            KConfigGroup cfg(&kwalletrc, "Wallet");
+            KWalletSettings settings;
             _firstUse = false;
-            cfg.writeEntry("First Use", false);
+            settings.setFirstUse(false);
+            settings.save();
         }
         //         else {
         //             // First use wizard
@@ -1659,17 +1660,16 @@ void KSecretD::emitWalletListDirty()
 
 void KSecretD::reconfigure()
 {
-    KConfig cfg(QStringLiteral("kwalletrc"));
-    KConfigGroup walletGroup(&cfg, "Wallet");
-    _firstUse = walletGroup.readEntry("First Use", true);
-    _launchManager = walletGroup.readEntry("Launch Manager", false);
-    _leaveOpen = walletGroup.readEntry("Leave Open", true);
+    KWalletSettings settings;
+    _firstUse = settings.firstUse();
+    _launchManager = settings.launchManager();
+    _leaveOpen = settings.leaveOpen();
     bool idleSave = _closeIdle;
-    _closeIdle = walletGroup.readEntry("Close When Idle", false);
-    _openPrompt = walletGroup.readEntry("Prompt on Open", false);
+    _closeIdle = settings.closeWhenIdle();
+    _openPrompt = settings.promptonOpen();
     int timeSave = _idleTime;
     // in minutes!
-    _idleTime = walletGroup.readEntry("Idle Timeout", 10) * 60 * 1000;
+    _idleTime = settings.idleTimeout() * 60 * 1000;
     // Handle idle changes
     if (_closeIdle) {
         if (_idleTime != timeSave) { // Timer length changed
@@ -1691,6 +1691,7 @@ void KSecretD::reconfigure()
         _closeTimers.clear();
     }
 
+    KConfig cfg(QStringLiteral("kwalletrc"));
     // Update the implicit allow stuff
     _implicitAllowMap.clear();
     const KConfigGroup autoAllowGroup(&cfg, "Auto Allow");
@@ -1719,13 +1720,12 @@ void KSecretD::reconfigure()
 
 bool KSecretD::isEnabled()
 {
-    KConfig cfg(QStringLiteral("kwalletrc"));
-    KConfigGroup walletGroup(&cfg, "Wallet");
-    KConfigGroup ksecretdGroup(&cfg, "KSecretD");
+    KWalletSettings settings;
+
     // For KSecredD to be enabled, it needs both global kwallet enabled and ksecretd enabled
     // values, as it does not make sense without kwallet, but is possible kwallet without
     // ksecretd
-    return ksecretdGroup.readEntry("Enabled", true) && walletGroup.readEntry("Enabled", true);
+    return settings.kSecretDEnabled() && settings.kWalletDEnabled();
 }
 
 bool KSecretD::folderDoesNotExist(const QString &wallet, const QString &folder)
diff --git a/src/runtime/ksecretd/kwalletfreedesktopservice.cpp b/src/runtime/ksecretd/kwalletfreedesktopservice.cpp
index 6c667de4..fbed4b8e 100644
--- a/src/runtime/ksecretd/kwalletfreedesktopservice.cpp
+++ b/src/runtime/ksecretd/kwalletfreedesktopservice.cpp
@@ -13,6 +13,7 @@
 #include "kwalletfreedesktopprompt.h"
 #include "kwalletfreedesktopserviceadaptor.h"
 #include "kwalletfreedesktopsession.h"
+#include "kwalletsettings.h"
 #include <KConfigGroup>
 #include <QWidget>
 #include <string.h>
@@ -304,8 +305,7 @@ QDBusObjectPath KWalletFreedesktopService::ReadAlias(const QString &name)
 
     m_kwalletrc.reparseConfiguration();
     if (name == QStringLiteral("default")) {
-        KConfigGroup cfg(&m_kwalletrc, "Wallet");
-        walletName = defaultWalletName(cfg);
+        walletName = defaultWalletName();
 
     } else {
         KConfigGroup cfg(&m_kwalletrc, "org.freedesktop.secrets.aliases");
@@ -447,13 +447,10 @@ QString KWalletFreedesktopService::createSession(std::unique_ptr<KWalletFreedesk
     return sessionPath;
 }
 
-QString KWalletFreedesktopService::defaultWalletName(KConfigGroup &cfg)
+QString KWalletFreedesktopService::defaultWalletName()
 {
-    auto walletName = cfg.readEntry("Default Wallet", "kdewallet");
-    if (walletName.isEmpty()) {
-        walletName = QStringLiteral("kdewallet");
-    }
-    return walletName;
+    KWalletSettings settings;
+    return settings.defaultWallet();
 }
 
 QDBusObjectPath KWalletFreedesktopService::promptUnlockCollection(const QString &walletName, int handle)
@@ -732,8 +729,7 @@ QStringList KWalletFreedesktopService::readAliasesFor(const QString &walletName)
         }
     }
 
-    KConfigGroup cfgWallet(&m_kwalletrc, "Wallet");
-    if (defaultWalletName(cfgWallet) == walletName) {
+    if (defaultWalletName() == walletName) {
         aliases.push_back(QStringLiteral("default"));
     }
 
diff --git a/src/runtime/ksecretd/kwalletfreedesktopservice.h b/src/runtime/ksecretd/kwalletfreedesktopservice.h
index bd574305..5cf9f13a 100644
--- a/src/runtime/ksecretd/kwalletfreedesktopservice.h
+++ b/src/runtime/ksecretd/kwalletfreedesktopservice.h
@@ -174,7 +174,7 @@ private:
     std::unique_ptr<KWalletFreedesktopSessionAlgorithm> createSessionAlgorithmPlain() const;
     std::unique_ptr<KWalletFreedesktopSessionAlgorithm> createSessionAlgorithmDhAes(const QByteArray &clientKey) const;
     QString createSession(std::unique_ptr<KWalletFreedesktopSessionAlgorithm> algorithm);
-    QString defaultWalletName(KConfigGroup &cfg);
+    QString defaultWalletName();
 
 private:
     // must come first for the proper construction/destruction order
diff --git a/src/runtime/ksecretd/main.cpp b/src/runtime/ksecretd/main.cpp
index 3fa6f3ef..130b1c36 100644
--- a/src/runtime/ksecretd/main.cpp
+++ b/src/runtime/ksecretd/main.cpp
@@ -8,8 +8,6 @@
 
 #include "ksecretd_debug.h"
 #include <KAboutData>
-#include <KConfig>
-#include <KConfigGroup>
 #include <KCrash>
 #include <KDBusService>
 #include <KLocalizedString>
diff --git a/src/runtime/kwalletbackend/CMakeLists.txt b/src/runtime/kwalletbackend/CMakeLists.txt
index 21673381..76733058 100644
--- a/src/runtime/kwalletbackend/CMakeLists.txt
+++ b/src/runtime/kwalletbackend/CMakeLists.txt
@@ -61,6 +61,7 @@ ecm_qt_declare_logging_category(KF6WalletBackend
     EXPORT KWALLET
 )
 
+kconfig_target_kcfg_file(KF6WalletBackend FILE ${CMAKE_SOURCE_DIR}/src/kwalletsettings.kcfg CLASS_NAME KWalletSettings)
 
 generate_export_header(KF6WalletBackend
     BASE_NAME kwalletbackend
@@ -71,7 +72,7 @@ target_link_libraries(KF6WalletBackend
     KF6::WidgetsAddons
     KF6::CoreAddons
     KF6::Notifications
-    KF6::ConfigCore
+    KF6::ConfigGui
     KF6::I18n
     ${LIBGCRYPT_LIBRARIES}
 )
diff --git a/src/runtime/kwalletbackend/kwalletbackend.cc b/src/runtime/kwalletbackend/kwalletbackend.cc
index c35af3d1..d29536ec 100644
--- a/src/runtime/kwalletbackend/kwalletbackend.cc
+++ b/src/runtime/kwalletbackend/kwalletbackend.cc
@@ -14,10 +14,8 @@
 #ifdef HAVE_GPGMEPP
 #include <gpgme++/key.h>
 #endif
-#include <KConfigGroup>
 #include <KLocalizedString>
 #include <KNotification>
-#include <KSharedConfig>
 #include <gcrypt.h>
 
 #include <QDir>
@@ -31,6 +29,7 @@
 #include "blowfish.h"
 #include "sha1.h"
 #include "cbc.h"
+#include "kwalletsettings.h"
 
 #include <assert.h>
 #include <cerrno>
@@ -66,31 +65,19 @@ QString Backend::decodeWalletName(const QString &encodedName) {
 
 QString Backend::networkWallet()
 {
-    KConfigGroup cfg(KSharedConfig::openConfig(QStringLiteral("kwalletrc"))->group(QStringLiteral("Wallet")));
-
-    QString tmp = cfg.readEntry("Default Wallet", "kdewallet");
-    if (tmp.isEmpty()) {
-        return QStringLiteral("kdewallet");
-    }
-    return tmp;
+    KWalletSettings settings;
+    return settings.defaultWallet();
 }
 
 QString Backend::localWallet()
 {
-    KConfigGroup cfg(KSharedConfig::openConfig(QStringLiteral("kwalletrc"))->group(QStringLiteral("Wallet")));
-    if (!cfg.readEntry("Use One Wallet", true)) {
-        QString tmp = cfg.readEntry("Local Wallet", "localwallet");
-        if (tmp.isEmpty()) {
-            return QStringLiteral("localwallet");
-        }
-        return tmp;
-    }
+    KWalletSettings settings;
 
-    QString tmp = cfg.readEntry("Default Wallet", "kdewallet");
-    if (tmp.isEmpty()) {
-        return QStringLiteral("kdewallet");
+    if (!settings.useOneWallet()) {
+        return settings.localWallet();
     }
-    return tmp;
+
+    return settings.defaultWallet();
 }
 
 gcry_error_t ensureGcryptInit()
diff --git a/src/runtime/kwalletd/CMakeLists.txt b/src/runtime/kwalletd/CMakeLists.txt
index 5d9bdcf6..e3b55f94 100644
--- a/src/runtime/kwalletd/CMakeLists.txt
+++ b/src/runtime/kwalletd/CMakeLists.txt
@@ -51,6 +51,8 @@ target_sources(kwalletd6 PRIVATE
     ${kwalletd6_SRCS}
 )
 
+kconfig_target_kcfg_file(kwalletd6 FILE ${CMAKE_SOURCE_DIR}/src/kwalletsettings.kcfg CLASS_NAME KWalletSettings MUTATORS)
+
 ecm_qt_declare_logging_category(kwalletd6
     HEADER kwalletd_debug.h
     IDENTIFIER KWALLETD_LOG
@@ -61,7 +63,7 @@ ecm_qt_declare_logging_category(kwalletd6
 
 target_link_libraries(kwalletd6
     KF6WalletBackend
-    KF6::ConfigCore
+    KF6::ConfigGui
     KF6::CoreAddons
     KF6::WidgetsAddons
     KF6::Crash
diff --git a/src/runtime/kwalletd/kwalletd.cpp b/src/runtime/kwalletd/kwalletd.cpp
index fc37abb4..4f7d1695 100644
--- a/src/runtime/kwalletd/kwalletd.cpp
+++ b/src/runtime/kwalletd/kwalletd.cpp
@@ -9,12 +9,11 @@
 #include <QDBusConnection>
 #include <QDebug>
 
-#include <KConfig>
-#include <KConfigGroup>
 #include <KLocalizedString>
 #include <KPasswordDialog>
 
 #include "kwalletadaptor.h"
+#include "kwalletsettings.h"
 #include "secretserviceclient.h"
 
 #include "../kwalletbackend/kwalletbackend.h"
@@ -169,15 +168,14 @@ void KWalletD::migrateData()
     if (!m_backend->isAvailable() || m_backend->useKSecretBackend()) {
         return;
     }
-    KConfig cfg(QStringLiteral("kwalletrc"));
-    KConfigGroup walletGroup(&cfg, QStringLiteral("Wallet"));
-    KConfigGroup migrationGroup(&cfg, QStringLiteral("Migration"));
 
-    if (!migrationGroup.readEntry(QStringLiteral("MigrateTo3rdParty"), false)) {
+    KWalletSettings settings;
+
+    if (!settings.migrateTo3rdParty()) {
         return;
     }
 
-    QStringList walletsMigrated = migrationGroup.readEntry(QStringLiteral("WalletsMigratedToSecretService"), QStringList());
+    QStringList walletsMigrated = settings.walletsMigratedToSecretService();
 
     // Get the list of all known kwallets
     const QString path = KWallet::Backend::getSaveLocation();
@@ -198,7 +196,7 @@ void KWalletD::migrateData()
     }
 
     bool ok = false;
-    const QString oldDefaultWallet = walletGroup.readEntry(QStringLiteral("Default Wallet"), QStringLiteral("kdewallet"));
+    const QString oldDefaultWallet = settings.defaultWallet();
     for (const QString &sourceWallet : std::as_const(wallets)) {
         QString destWallet = sourceWallet;
         // Use the SecretService default collection as the new default wallet
@@ -213,8 +211,8 @@ void KWalletD::migrateData()
         }
     }
 
-    migrationGroup.writeEntry(QStringLiteral("WalletsMigratedToSecretService"), walletsMigrated);
-    cfg.sync();
+    settings.setWalletsMigratedToSecretService(walletsMigrated);
+    settings.save();
 }
 
 QString KWalletD::walletForHandle(int handle, const QString &appId)
@@ -996,16 +994,16 @@ bool KWalletD::disconnectApplication(const QString &wallet, const QString &appli
 
 void KWalletD::reconfigure()
 {
-    KConfig cfg(QStringLiteral("kwalletrc"));
-    KConfigGroup walletGroup(&cfg, QStringLiteral("Wallet"));
+    KWalletSettings settings;
+
     const bool wasEnabled = m_enabled;
-    m_enabled = walletGroup.readEntry("Enabled", true);
-    m_launchManager = walletGroup.readEntry("Launch Manager", false);
+    m_enabled = settings.kWalletDEnabled();
+    m_launchManager = settings.launchManager();
     const bool closeIdle = m_closeIdle;
-    m_closeIdle = walletGroup.readEntry("Close When Idle", false);
+    m_closeIdle = settings.closeWhenIdle();
     const int idleTime = m_idleTime;
     // in minutes!
-    m_idleTime = walletGroup.readEntry("Idle Timeout", 10) * 60 * 1000;
+    m_idleTime = settings.idleTimeout();
 
     if (wasEnabled != m_enabled) {
         if (isEnabled()) {
@@ -1096,11 +1094,9 @@ QString KWalletD::networkWallet()
 
 QString KWalletD::localWallet()
 {
-    KConfig cfg(QStringLiteral("kwalletrc"));
-    KConfigGroup ksecretdGroup(&cfg, QStringLiteral("KSecretD"));
-    const bool ksecretdEnabled = ksecretdGroup.readEntry("Enabled", true);
+    KWalletSettings settings;
 
-    if (ksecretdEnabled) {
+    if (settings.kSecretDEnabled()) {
         return KWallet::Backend::localWallet();
     } else {
         bool ok;
diff --git a/src/runtime/kwalletd/main.cpp b/src/runtime/kwalletd/main.cpp
index 1d0a86bc..96037972 100644
--- a/src/runtime/kwalletd/main.cpp
+++ b/src/runtime/kwalletd/main.cpp
@@ -7,8 +7,6 @@
 #include "kwalletd.h"
 
 #include <KAboutData>
-#include <KConfig>
-#include <KConfigGroup>
 #include <KCrash>
 #include <KDBusService>
 #include <KLocalizedString>
@@ -16,11 +14,12 @@
 #include <QApplication>
 #include <QCommandLineParser>
 
+#include "kwalletsettings.h"
+
 static bool isWalletEnabled()
 {
-    KConfig cfg(QStringLiteral("kwalletrc"));
-    KConfigGroup walletGroup(&cfg, QStringLiteral("Wallet"));
-    return walletGroup.readEntry(QStringLiteral("Enabled"), true);
+    KWalletSettings settings;
+    return settings.kWalletDEnabled();
 }
 
 int main(int argc, char **argv)
diff --git a/src/runtime/kwalletd/secretserviceclient.cpp b/src/runtime/kwalletd/secretserviceclient.cpp
index 6340a156..d664b1b1 100644
--- a/src/runtime/kwalletd/secretserviceclient.cpp
+++ b/src/runtime/kwalletd/secretserviceclient.cpp
@@ -7,8 +7,6 @@
 #include "secretserviceclient.h"
 #include "kwalletd_debug.h"
 
-#include <KConfig>
-#include <KConfigGroup>
 #include <KLocalizedString>
 #include <QDBusConnection>
 #include <QDBusInterface>
@@ -17,6 +15,8 @@
 #include <QEventLoop>
 #include <QTimer>
 
+#include "kwalletsettings.h"
+
 // Copied from
 // https://github.com/frankosterfeld/qtkeychain/blob/main/qtkeychain/libsecret.cpp
 // This is intended to be a data format compatible with QtKeychain
@@ -104,9 +104,8 @@ static SecretServiceClient::Type stringToType(const QString &typeName)
 SecretServiceClient::SecretServiceClient(QObject *parent)
     : QObject(parent)
 {
-    KConfig cfg(QStringLiteral("kwalletrc"));
-    KConfigGroup ksecretGroup(&cfg, QStringLiteral("KSecretD"));
-    m_useKSecretBackend = ksecretGroup.readEntry("Enabled", true);
+    KWalletSettings settings;
+    m_useKSecretBackend = settings.kSecretDEnabled();
 
     if (m_useKSecretBackend) {
         // Tell libsecret where the secretservice api is
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.