forked from pool/kinfocenter6
Compare commits
42 Commits
Author | SHA256 | Date | |
---|---|---|---|
|
1032db6e44 | ||
|
5b960576e0 | ||
|
9811977847 | ||
|
d67fd7a7dd | ||
|
6fd6e3d303 | ||
|
292428ea93 | ||
|
83e03f802e | ||
|
8784907685 | ||
|
fae10281e0 | ||
|
f8298c7b5e | ||
|
2143d8257f | ||
|
508e429528 | ||
|
45fd960f7b | ||
|
4f4da483dd | ||
|
8123c26635 | ||
|
20c189215d | ||
|
a5b0db87de | ||
|
262d774734 | ||
|
d640b12663 | ||
|
e9808a504a | ||
|
973b7d7e00 | ||
|
06885aabc7 | ||
|
2890656574 | ||
|
78c85b8c60 | ||
|
1808227a45 | ||
|
6c2c36fb61 | ||
|
e02a8f075e | ||
|
a014462a03 | ||
|
66c42f3e47 | ||
|
9a19407776 | ||
|
a4a6acb0a4 | ||
|
5ef713f48e | ||
|
275db9eefc | ||
|
fa2577dfb1 | ||
|
6ddc806833 | ||
|
5de860c1f4 | ||
|
cdc87adf0e | ||
ec7aba9473 | |||
|
afd376eb21 | ||
3ad57c7634 | |||
|
d6af5ce121 | ||
|
cce241a791 |
73
0001-kcms-pull-dmidecode-helper-into-a-separate-dir.patch
Normal file
73
0001-kcms-pull-dmidecode-helper-into-a-separate-dir.patch
Normal file
@ -0,0 +1,73 @@
|
||||
From 582cbde53cfb9e79182663bfd7c86aa46c0b46eb Mon Sep 17 00:00:00 2001
|
||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
Date: Thu, 29 Aug 2024 15:20:54 -0400
|
||||
Subject: [PATCH 1/3] kcms: pull dmidecode-helper into a separate dir
|
||||
|
||||
This allows us to reuse the helper in other
|
||||
places, like the memory info kcm.
|
||||
---
|
||||
kcms/CMakeLists.txt | 1 +
|
||||
kcms/about-distro/src/CMakeLists.txt | 2 --
|
||||
kcms/helpers/CMakeLists.txt | 4 ++++
|
||||
.../src => helpers}/dmidecode-helper/CMakeLists.txt | 0
|
||||
.../{about-distro/src => helpers}/dmidecode-helper/helper.cpp | 0
|
||||
kcms/{about-distro/src => helpers}/dmidecode-helper/helper.h | 0
|
||||
.../dmidecode-helper/org.kde.kinfocenter.dmidecode.actions | 0
|
||||
7 files changed, 5 insertions(+), 2 deletions(-)
|
||||
create mode 100644 kcms/helpers/CMakeLists.txt
|
||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/CMakeLists.txt (100%)
|
||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/helper.cpp (100%)
|
||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/helper.h (100%)
|
||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions (100%)
|
||||
|
||||
diff --git a/kcms/CMakeLists.txt b/kcms/CMakeLists.txt
|
||||
index f283f477..ce534f40 100644
|
||||
--- a/kcms/CMakeLists.txt
|
||||
+++ b/kcms/CMakeLists.txt
|
||||
@@ -1,3 +1,4 @@
|
||||
+add_subdirectory(helpers)
|
||||
|
||||
add_subdirectory( about-distro )
|
||||
add_subdirectory(vulkan)
|
||||
diff --git a/kcms/about-distro/src/CMakeLists.txt b/kcms/about-distro/src/CMakeLists.txt
|
||||
index fffb24d6..961ac959 100644
|
||||
--- a/kcms/about-distro/src/CMakeLists.txt
|
||||
+++ b/kcms/about-distro/src/CMakeLists.txt
|
||||
@@ -1,8 +1,6 @@
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/Version.h)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
-add_subdirectory(dmidecode-helper)
|
||||
-
|
||||
set(kcm_SRCS
|
||||
CPUEntry.cpp
|
||||
CPUEntry.h
|
||||
diff --git a/kcms/helpers/CMakeLists.txt b/kcms/helpers/CMakeLists.txt
|
||||
new file mode 100644
|
||||
index 00000000..cbf024bd
|
||||
--- /dev/null
|
||||
+++ b/kcms/helpers/CMakeLists.txt
|
||||
@@ -0,0 +1,4 @@
|
||||
+# SPDX-License-Identifier: BSD-3-Clause
|
||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
+
|
||||
+add_subdirectory(dmidecode-helper)
|
||||
diff --git a/kcms/about-distro/src/dmidecode-helper/CMakeLists.txt b/kcms/helpers/dmidecode-helper/CMakeLists.txt
|
||||
similarity index 100%
|
||||
rename from kcms/about-distro/src/dmidecode-helper/CMakeLists.txt
|
||||
rename to kcms/helpers/dmidecode-helper/CMakeLists.txt
|
||||
diff --git a/kcms/about-distro/src/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
similarity index 100%
|
||||
rename from kcms/about-distro/src/dmidecode-helper/helper.cpp
|
||||
rename to kcms/helpers/dmidecode-helper/helper.cpp
|
||||
diff --git a/kcms/about-distro/src/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
||||
similarity index 100%
|
||||
rename from kcms/about-distro/src/dmidecode-helper/helper.h
|
||||
rename to kcms/helpers/dmidecode-helper/helper.h
|
||||
diff --git a/kcms/about-distro/src/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
similarity index 100%
|
||||
rename from kcms/about-distro/src/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
rename to kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
--
|
||||
2.47.0
|
||||
|
150
0002-refactor-dmidecode-helper-support-multiple-methods.patch
Normal file
150
0002-refactor-dmidecode-helper-support-multiple-methods.patch
Normal file
@ -0,0 +1,150 @@
|
||||
From e6f449a1aa0bf5b1dceaff13390955bd3d21de9d Mon Sep 17 00:00:00 2001
|
||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
Date: Thu, 5 Sep 2024 13:03:45 -0400
|
||||
Subject: [PATCH 2/3] refactor(dmidecode-helper): support multiple methods
|
||||
|
||||
This allows the helper to extend and support other
|
||||
types of information, eg. memory information.
|
||||
---
|
||||
kcms/helpers/dmidecode-helper/helper.cpp | 60 +++++++++++++++++-------
|
||||
kcms/helpers/dmidecode-helper/helper.h | 15 ++++++
|
||||
2 files changed, 58 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/kcms/helpers/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
index 396b2d74..e9d068dc 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
+++ b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
@@ -1,5 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
// SPDX-FileCopyrightText: 2021-2022 Harald Sitter <sitter@kde.org>
|
||||
+// SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
|
||||
#include "helper.h"
|
||||
|
||||
@@ -16,16 +17,18 @@ auto make_array(Input &&...args) -> std::array<Output, sizeof...(args)> // NB: w
|
||||
return {std::forward<Input>(args)...};
|
||||
}
|
||||
|
||||
-KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
+DMIDecodeHelper::DMIDecodeHelper(QObject *parent)
|
||||
+ : QObject(parent)
|
||||
{
|
||||
- Q_UNUSED(args);
|
||||
-
|
||||
// PATH is super minimal when invoked through dbus
|
||||
setenv("PATH", "/usr/sbin:/sbin:/usr/local/sbin", 1);
|
||||
- const QString dmidecode = QStandardPaths::findExecutable("dmidecode");
|
||||
- if (dmidecode.isEmpty()) {
|
||||
- return KAuth::ActionReply::HelperErrorReply();
|
||||
- }
|
||||
+
|
||||
+ m_dmidecodePath = QStandardPaths::findExecutable("dmidecode");
|
||||
+}
|
||||
+
|
||||
+KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
+{
|
||||
+ Q_UNUSED(args);
|
||||
|
||||
// NB: Microsoft also outlines a limited set of DMI values to be required for IOT OEM licensing, as such we
|
||||
// can rely on the same fields to have sound content . Since this only applies to OEMs we still need to filter
|
||||
@@ -33,19 +36,20 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
// https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/license-requirements?view=windows-11#smbios-support
|
||||
|
||||
KAuth::ActionReply reply;
|
||||
- for (const auto &key : {QStringLiteral("system-manufacturer"),
|
||||
- QStringLiteral("system-product-name"),
|
||||
- QStringLiteral("system-version"),
|
||||
- QStringLiteral("system-serial-number")}) {
|
||||
- QProcess proc;
|
||||
- proc.start(dmidecode, {QStringLiteral("--string"), key});
|
||||
- proc.waitForFinished();
|
||||
- const QByteArray output = proc.readAllStandardOutput().trimmed();
|
||||
-
|
||||
- if (output.isEmpty() || proc.error() != QProcess::UnknownError || proc.exitStatus() != QProcess::NormalExit) {
|
||||
+
|
||||
+ const auto keys = {QStringLiteral("system-manufacturer"),
|
||||
+ QStringLiteral("system-product-name"),
|
||||
+ QStringLiteral("system-version"),
|
||||
+ QStringLiteral("system-serial-number")};
|
||||
+
|
||||
+ for (const auto &key : keys) {
|
||||
+ auto result = executeDmidecode({QStringLiteral("--string"), key});
|
||||
+ if (result.failed()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
+ const auto output = result.data().value("result").toString();
|
||||
+
|
||||
// Fairly exhaustive filter list based on a dozen or so samples gathered from reddit and other places.
|
||||
// These are values that may appear in the DMI system information but aren't really useful.
|
||||
static const auto dummyData = make_array<QString>(QStringLiteral("system version"),
|
||||
@@ -59,12 +63,34 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
QStringLiteral("not specified"),
|
||||
QStringLiteral("not applicable")
|
||||
/* may also be empty, but that is filtered above already */);
|
||||
+
|
||||
if (std::find(dummyData.cbegin(), dummyData.cend(), output.toLower()) != dummyData.cend()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
reply.addData(key, output);
|
||||
}
|
||||
+
|
||||
+ return reply;
|
||||
+}
|
||||
+
|
||||
+KAuth::ActionReply DMIDecodeHelper::executeDmidecode(const QStringList &arguments)
|
||||
+{
|
||||
+ if (m_dmidecodePath.isEmpty()) {
|
||||
+ return KAuth::ActionReply::HelperErrorReply();
|
||||
+ }
|
||||
+
|
||||
+ QProcess proc;
|
||||
+ proc.start(m_dmidecodePath, arguments);
|
||||
+ proc.waitForFinished();
|
||||
+ const QByteArray output = proc.readAllStandardOutput().trimmed();
|
||||
+
|
||||
+ if (output.isEmpty() || proc.error() != QProcess::UnknownError || proc.exitStatus() != QProcess::NormalExit) {
|
||||
+ return KAuth::ActionReply::HelperErrorReply();
|
||||
+ }
|
||||
+
|
||||
+ KAuth::ActionReply reply;
|
||||
+ reply.addData("result", output);
|
||||
return reply;
|
||||
}
|
||||
|
||||
diff --git a/kcms/helpers/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
||||
index dd8fe90d..c1b588e8 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/helper.h
|
||||
+++ b/kcms/helpers/dmidecode-helper/helper.h
|
||||
@@ -1,5 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
// SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
|
||||
+// SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
|
||||
#pragma once
|
||||
|
||||
@@ -8,6 +9,20 @@
|
||||
class DMIDecodeHelper : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
+
|
||||
+public:
|
||||
+ explicit DMIDecodeHelper(QObject *parent = nullptr);
|
||||
+
|
||||
public Q_SLOTS:
|
||||
KAuth::ActionReply systeminformation(const QVariantMap &args);
|
||||
+
|
||||
+private:
|
||||
+ KAuth::ActionReply executeDmidecode(const QStringList &arguments);
|
||||
+
|
||||
+ /**
|
||||
+ * Path to the dmidecode binary.
|
||||
+ *
|
||||
+ * If the binary is not found, this helper will not work.
|
||||
+ */
|
||||
+ QString m_dmidecodePath;
|
||||
};
|
||||
--
|
||||
2.47.0
|
||||
|
254
0003-kcms-memory-use-KAuth-dmidecode-helper.patch
Normal file
254
0003-kcms-memory-use-KAuth-dmidecode-helper.patch
Normal file
@ -0,0 +1,254 @@
|
||||
From 375abcd571b991aa1ea8436fad6c7a4d30f62fa1 Mon Sep 17 00:00:00 2001
|
||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
Date: Mon, 14 Oct 2024 15:45:02 -0400
|
||||
Subject: [PATCH 3/3] kcms/memory: use KAuth dmidecode helper
|
||||
|
||||
Refactor to use a KAuth helper to run dmidecode as
|
||||
root, rather than using the CommandOutputContext.
|
||||
|
||||
This means the KCM no longer requires the user to
|
||||
enter their password to view memory information,
|
||||
and won't show an obtuse error like before if the
|
||||
user cancelled the password dialog.
|
||||
---
|
||||
kcms/helpers/dmidecode-helper/helper.cpp | 26 ++++++++++
|
||||
kcms/helpers/dmidecode-helper/helper.h | 5 ++
|
||||
.../org.kde.kinfocenter.dmidecode.actions | 7 +++
|
||||
kcms/memory/CMakeLists.txt | 9 +++-
|
||||
kcms/memory/main.cpp | 48 ++++++++++++++++---
|
||||
kcms/memory/ui/main.qml | 25 ++++++++--
|
||||
6 files changed, 108 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/kcms/helpers/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
index e9d068dc..11921934 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
+++ b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
@@ -26,6 +26,24 @@ DMIDecodeHelper::DMIDecodeHelper(QObject *parent)
|
||||
m_dmidecodePath = QStandardPaths::findExecutable("dmidecode");
|
||||
}
|
||||
|
||||
+KAuth::ActionReply DMIDecodeHelper::memoryinformation(const QVariantMap &args)
|
||||
+{
|
||||
+ Q_UNUSED(args);
|
||||
+
|
||||
+ KAuth::ActionReply reply;
|
||||
+ auto result = executeDmidecode({QStringLiteral("--type"), QStringLiteral("17")});
|
||||
+
|
||||
+ if (result.failed()) {
|
||||
+ qWarning() << "DMIDecodeHelper: Unable to get memory information";
|
||||
+ return KAuth::ActionReply::HelperErrorReply();
|
||||
+ }
|
||||
+
|
||||
+ const QString output = result.data().value("result").toString();
|
||||
+ reply.addData("memory", output);
|
||||
+
|
||||
+ return reply;
|
||||
+}
|
||||
+
|
||||
KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
{
|
||||
Q_UNUSED(args);
|
||||
@@ -45,6 +63,8 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
for (const auto &key : keys) {
|
||||
auto result = executeDmidecode({QStringLiteral("--string"), key});
|
||||
if (result.failed()) {
|
||||
+ qWarning() << "DMIDecodeHelper: Unable to get system information for " << key;
|
||||
+ // We don't want to fail the entire action if we can't get a single piece of information.
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -71,6 +91,12 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
reply.addData(key, output);
|
||||
}
|
||||
|
||||
+ if (reply.data().isEmpty()) {
|
||||
+ qWarning() << "DMIDecodeHelper: Unable to get system information";
|
||||
+ // If we didn't get any data, we should fail the action.
|
||||
+ return KAuth::ActionReply::HelperErrorReply();
|
||||
+ }
|
||||
+
|
||||
return reply;
|
||||
}
|
||||
|
||||
diff --git a/kcms/helpers/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
||||
index c1b588e8..805d5fa6 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/helper.h
|
||||
+++ b/kcms/helpers/dmidecode-helper/helper.h
|
||||
@@ -14,6 +14,11 @@ public:
|
||||
explicit DMIDecodeHelper(QObject *parent = nullptr);
|
||||
|
||||
public Q_SLOTS:
|
||||
+ /**
|
||||
+ * Retrieves memory (RAM) information from dmidecode.
|
||||
+ */
|
||||
+ KAuth::ActionReply memoryinformation(const QVariantMap &args);
|
||||
+
|
||||
KAuth::ActionReply systeminformation(const QVariantMap &args);
|
||||
|
||||
private:
|
||||
diff --git a/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
index 66d3aa99..9f0c76f3 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
+++ b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
# SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
|
||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
+
|
||||
[Domain]
|
||||
Icon=computer
|
||||
URL=https://www.kde.org
|
||||
@@ -47,6 +49,11 @@ Name[x-test]=xxDesktop Management Interfacexx
|
||||
Name[zh_CN]=桌面管理界面 (DMI)
|
||||
Name[zh_TW]=桌面管理介面
|
||||
|
||||
+[org.kde.kinfocenter.dmidecode.memoryinformation]
|
||||
+Policy=yes
|
||||
+Name=Memory Information
|
||||
+Description=Read memory information from system's Desktop Management Interface (DMI)
|
||||
+
|
||||
[org.kde.kinfocenter.dmidecode.systeminformation]
|
||||
Policy=yes
|
||||
PolicyInactive=yes
|
||||
diff --git a/kcms/memory/CMakeLists.txt b/kcms/memory/CMakeLists.txt
|
||||
index 49219ac4..59c93b69 100644
|
||||
--- a/kcms/memory/CMakeLists.txt
|
||||
+++ b/kcms/memory/CMakeLists.txt
|
||||
@@ -1,5 +1,6 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
|
||||
find_package(dmidecode)
|
||||
set_package_properties(dmidecode PROPERTIES TYPE RUNTIME)
|
||||
@@ -7,4 +8,10 @@ set_package_properties(dmidecode PROPERTIES TYPE RUNTIME)
|
||||
add_definitions(-DTRANSLATION_DOMAIN=\"kcm_memory\")
|
||||
|
||||
kinfocenter_add_kcm(kcm_memory main.cpp)
|
||||
-target_link_libraries(kcm_memory PRIVATE KF6::CoreAddons KF6::KCMUtilsQuick KF6::I18n KInfoCenterInternal)
|
||||
+target_link_libraries(kcm_memory PRIVATE
|
||||
+ KF6::AuthCore
|
||||
+ KF6::CoreAddons
|
||||
+ KF6::KCMUtilsQuick
|
||||
+ KF6::I18n
|
||||
+ KInfoCenterInternal
|
||||
+)
|
||||
diff --git a/kcms/memory/main.cpp b/kcms/memory/main.cpp
|
||||
index d2190140..7aab18ce 100644
|
||||
--- a/kcms/memory/main.cpp
|
||||
+++ b/kcms/memory/main.cpp
|
||||
@@ -1,30 +1,64 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
||||
+ SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
*/
|
||||
|
||||
+#include <KAuth/Action>
|
||||
+#include <KAuth/ExecuteJob>
|
||||
+#include <KLocalizedString>
|
||||
#include <KPluginFactory>
|
||||
#include <KQuickConfigModule>
|
||||
|
||||
-#include "CommandOutputContext.h"
|
||||
-
|
||||
class KCMMemory : public KQuickConfigModule
|
||||
{
|
||||
Q_OBJECT
|
||||
- Q_PROPERTY(CommandOutputContext *infoOutputContext READ outputContext CONSTANT FINAL)
|
||||
+ Q_PROPERTY(QString memoryInformation READ memoryInformation NOTIFY changed)
|
||||
public:
|
||||
explicit KCMMemory(QObject *parent, const KPluginMetaData &data)
|
||||
: KQuickConfigModule(parent, data)
|
||||
{
|
||||
- m_outputContext = new CommandOutputContext(QStringLiteral("pkexec"), {"dmidecode", "--type", "17"}, parent);
|
||||
+ loadData();
|
||||
}
|
||||
- CommandOutputContext *outputContext() const
|
||||
+
|
||||
+ QString memoryInformation() const
|
||||
{
|
||||
- return m_outputContext;
|
||||
+ return m_memoryInformation;
|
||||
}
|
||||
|
||||
private:
|
||||
- CommandOutputContext *m_outputContext;
|
||||
+ Q_SIGNAL void changed();
|
||||
+
|
||||
+ /**
|
||||
+ * The memory information that will be displayed in the KCM.
|
||||
+ */
|
||||
+ QString m_memoryInformation;
|
||||
+
|
||||
+ /**
|
||||
+ * Load the memory information from the dmidecode helper.
|
||||
+ */
|
||||
+ void loadData()
|
||||
+ {
|
||||
+ KAuth::Action action(QStringLiteral("org.kde.kinfocenter.dmidecode.memoryinformation"));
|
||||
+ action.setHelperId(QStringLiteral("org.kde.kinfocenter.dmidecode"));
|
||||
+ KAuth::ExecuteJob *job = action.execute();
|
||||
+
|
||||
+ connect(job, &KJob::result, this, [this, job]() {
|
||||
+ if (job->error()) {
|
||||
+ qWarning() << "Failed to retrieve memory information: " << job->errorString();
|
||||
+ return;
|
||||
+ } else {
|
||||
+ const auto reply = job->data();
|
||||
+ if (reply.contains("memory")) {
|
||||
+ m_memoryInformation = reply["memory"].toString();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ Q_EMIT changed();
|
||||
+ });
|
||||
+
|
||||
+ job->start();
|
||||
+ }
|
||||
};
|
||||
|
||||
K_PLUGIN_CLASS_WITH_JSON(KCMMemory, "kcm_memory.json")
|
||||
diff --git a/kcms/memory/ui/main.qml b/kcms/memory/ui/main.qml
|
||||
index 0300d619..42fdcbc7 100644
|
||||
--- a/kcms/memory/ui/main.qml
|
||||
+++ b/kcms/memory/ui/main.qml
|
||||
@@ -1,14 +1,31 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
||||
+ SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
*/
|
||||
|
||||
-import QtQuick 2.5
|
||||
+import QtQuick 2.15
|
||||
|
||||
+import org.kde.kirigami 2.20 as Kirigami
|
||||
import org.kde.kcmutils as KCM
|
||||
|
||||
-import org.kde.kinfocenter.private 1.0 as KInfoCenter
|
||||
+KCM.SimpleKCM {
|
||||
+ id: kcm_memory
|
||||
+ Kirigami.Theme.colorSet: Kirigami.Theme.View
|
||||
+ Kirigami.Theme.inherit: false
|
||||
|
||||
-KInfoCenter.CommandOutputKCM {
|
||||
- output: kcm.infoOutputContext
|
||||
+ Kirigami.PlaceholderMessage {
|
||||
+ anchors.centerIn: parent
|
||||
+ width: parent.width - (Kirigami.Units.largeSpacing * 8)
|
||||
+ visible: kcm.memoryInformation === ""
|
||||
+ icon.name: "data-warning"
|
||||
+ text: i18ndc("kinfocenter", "@info the KCM has no data to display", "No data available")
|
||||
+ }
|
||||
+
|
||||
+ Kirigami.SelectableLabel {
|
||||
+ id: text
|
||||
+ text: kcm.memoryInformation
|
||||
+ font.family: "monospace"
|
||||
+ visible: kcm.memoryInformation !== ""
|
||||
+ }
|
||||
}
|
||||
--
|
||||
2.47.0
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:69c4bebf97c5a980c3da57deedfff628254f03b7c094cca8d742f537bfc45738
|
||||
size 718828
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmaWVKMACgkQ11dEg7tX
|
||||
sY3JMQ//Vdl6zMvBjoSN2gQQZK0Cq+lEiZHQsewVQXT9SgiZPrrjyHX0fv2l0Mpp
|
||||
h8Q+wyQuvgBY5JYOslz5UVp/FdQwIeglWKTQ/SzifOizPsBT4P0brqDJEzcz5BJJ
|
||||
eZtnzqVMMu2avmdOoBpgNR/oiSu4FSgwsRsSFrKEBTDT7DPE0CUsbTuUEIX5zy4l
|
||||
iDjc2Nyv5On/O8OCCgN7aMV3Rp0fZtdrJXiqPeP05iY/R/AtBjzr3gk724Rc6T2N
|
||||
zMHEZQDAsp1uluWhIKL/Wo8mkHdxSuQUk2fefnQ9USVPRb4oB3F2eIteYqzi4lVl
|
||||
9FA9BptbZfvB9dcd9b8MPBg0ZKQ6ft1KbqdP2pKOBOHHcImaBvAhf8+3zHJL4mNP
|
||||
AG+kvCfAhfAy1HrZX3w2LaT0H29N85ACgXAEiseUvSW7gRK18DNhTATztVMYF1tV
|
||||
Nf1PFumtvtVFPhkqYYBAGv/bnTVRXQGVA5uI/4aN/CRN/y6tA3RbvkqHf4aZH/K0
|
||||
/kK8tLcoy6sNyiPXZ+8N35PUDRrNl8A+6C39RgYznjFr4IVuODXSSmJtnRFm7RZB
|
||||
c4kBzrylL7wdPHPGjjnADHj7bC7VZo2zxLqD6iHvIVZhknRxKbZsJL96CziFspD0
|
||||
/4dEIYE6KpR6yjhjZ3qdq/0AmiOcE+DPDEpwZ+mj7RhAvxjukaI=
|
||||
=H72k
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:179dfdc224ff66f1d692456560b1c9f0dd74b568e233347182316709ac2520d9
|
||||
size 718988
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmayGCEACgkQ11dEg7tX
|
||||
sY0/kw/9HIB8Hbw4Mz0qmz0xmswOKEkoRErJhUR56EhPh0uNFQsvMidUB5ubpHyJ
|
||||
x4JDX8dvAzT1uPITDfG7fLq9gPRUoJkALLXl4serf61nE5zdWAGVuSgK+NMQFN8t
|
||||
fHrH/cZfqKMbtszFDO/IDpPj5Kr2Irwdi/bgVkZSrkyaKrznOVkAZp1GIwo79y97
|
||||
jRet86vZPwmlhSTtmcCeIOgkMz7JkxZ6O0pb+bb7m6cIE2IIITNFWXBv0xgcPsO0
|
||||
AmqZc4hnR3yf91dFoQp4M2PQZwBmV+MboIRxmvJFkojd3uiqAeXjKllKP/zp/3Gn
|
||||
KA/U8lbsP0qAzvRrJGn8QZ5L2pWsSdPjiT9hkJ5qFgkNOxM+xZyvGPbAte/yo58i
|
||||
VDrReeiQKoIcnvworlcZUiEMNai0kRJP+UA6MUhV9vViOB6ZTgRIQ/imukeSJana
|
||||
+qC8kz6dzcKdzU8b/gu88VKJfTEARjLpAhwx3JqLKKgR6fq3XUfK5AqdELrJV1gc
|
||||
Asjsix4mFV5QzDQaPwk4k/ye0kV2L45cLue072R3kqGWstWM5hbAh5NjffSIyqPt
|
||||
Zy+E/f5JxtFh4u3WZRyZPHF9wR66lTe4CzYXCnploFMBz7gA7f+dtyiA5uQ+YdYU
|
||||
ulTrwTTX0H4RJEADErfZkWMlFOE+eQsn3yCA9uZy9/6uRv78F1A=
|
||||
=lLoV
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0976ae43756b6ddbf4e70e750cb17f422dabe7604c5e2f824ab4f1e0161ae5d0
|
||||
size 720016
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmbgCFQACgkQ11dEg7tX
|
||||
sY2jxRAAukjAlx7cA4jJNgoqhjKhqjoYTJuhcZPxkwKVqyyGcArtHlciKGndpz/d
|
||||
2YyoN6HDY9z8tIbwJTgJ2mPNqHnwaT8FPitkA8fO54McoWnfqCUNCVOE56wKYZPq
|
||||
T3bqlLfO1fipyGsffs+ivTXl1jYWjt8wGSSnVI/a89/HKcn/snqAoTvhlfnzQg5m
|
||||
SIsxPEXjP9lPuDJtKbvUWHV5ZzlZ8RY/EfeOzIYzypBP9eftqsEgVrZqdSnaiSat
|
||||
+16ffHMl2CThSJ8y/6yUIAo65MNX+Ikw1oYWjRPhArmUPDpes15r+wdd/gkqWAJi
|
||||
GfDL5pSwv5A8h+0BF9y0DHLpjAP5TDpja0kyVfGeUFfoSg9mNGWmfux4C5NOjW0D
|
||||
ul0jalqz0D+PbIE7Q3ft2X65gQaoUfyI4qN49M649UHN04e5Eu15P5Wkbimo/qo2
|
||||
Js+ESeYvBTkYGiWrGlJ6iSqOJgAM1olmaSw/7smuMYJA7RtRKwk26QOOZmEvzlST
|
||||
UmrG8Ljto8FKRFuIvLha6vIsvbGjSLcI4Cu9doX3DZ7sw99msB49EUI5GRtM3n37
|
||||
GWrzHwKswlNrjdUXrJVpbVYc1mHsrghOWGv2pwm73gYyUm3jU7+pHTTc1xcdozw/
|
||||
4oxAlZyoUTvDPA5432JLObQf+jScjXIOSASzuiZcpdNkMEFmYeE=
|
||||
=acRA
|
||||
-----END PGP SIGNATURE-----
|
3
kinfocenter-6.2.5.tar.xz
Normal file
3
kinfocenter-6.2.5.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9ed87edb3a24256189f8dc79c821b8f45589aab7032d8dde78d5d94cf0639ff9
|
||||
size 732392
|
16
kinfocenter-6.2.5.tar.xz.sig
Normal file
16
kinfocenter-6.2.5.tar.xz.sig
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmdy7PgACgkQ11dEg7tX
|
||||
sY3N8hAAsQDSequKrBIJc6JJYxMSimq2LOBRTRMKp4nGDRIXMFzUKMVxjLiQY3DH
|
||||
IgwGY7o12cxYvRnM3Ub3UEpFyeLfYgGFno9qIntp/cfj7Ef7T13z0a1xKjAXGaZT
|
||||
5D14BRhRkCspSe6wXQB7Y4tkct16Uag7/Wk7jLb+FIU4VIFU5PiINT59L2YfOp1U
|
||||
1guzAyiA9J6rbj9317IAMBWq/poHVYr8gqUOjCV3r+KcKzG7AHBHBbjfbwPHcXu4
|
||||
RBCc7zTISi6/rTD5+5M3G5j5x4AYmHzZS44+TvNt82u17Nl+9yzhRFmSuYgtkojw
|
||||
7zZ33RLgGkalYGvuQia/MeiUUGyTT4ygitanF+Q+qbYVV9jbnOjzfmLKHGt7MMQ+
|
||||
gA1trPk2VUoRsxE5IOI+KrvEAuj40DUQKHYkz0ZoKOLpFXsIohguX2zAlq1QfSB3
|
||||
XeFquIq/MYusgw99AS/A4NWa8Qz/lrM75kE6CdbDfyAXabXrCdj0XpxgqYHJyjVW
|
||||
7vKD4WeUtp7Vx7frm488SWxCqblRmf0R6j+USpAXCs7MZHQACmw4PBMGZCFbrA0O
|
||||
AEnoU0JgbjKsOc+jbta263m+qxF1yDol2tzX2w8PagwzgJaAhJNV31P4g6EIW3+g
|
||||
Izq2PJoS64C9mkAUdSt95IBoc+EbLoRs5DZhkY/WY7wmmzBA6tg=
|
||||
=BdEQ
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +1,85 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 31 20:48:49 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 6.2.5:
|
||||
* New bugfix release
|
||||
* For more details see https://kde.org/announcements/plasma/6/6.2.5
|
||||
- Changes since 6.2.4:
|
||||
* update version for new release
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 26 15:45:55 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 6.2.4:
|
||||
* New bugfix release
|
||||
* For more details see https://kde.org/announcements/plasma/6/6.2.4
|
||||
- Changes since 6.2.3:
|
||||
* update version for new release
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 5 13:30:17 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 6.2.3:
|
||||
* New bugfix release
|
||||
* For more details see https://kde.org/announcements/plasma/6/6.2.3
|
||||
- Changes since 6.2.2:
|
||||
* update version for new release
|
||||
* appiumtests: fix wayland
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 22 14:07:23 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 6.2.2:
|
||||
* New bugfix release
|
||||
* For more details see https://kde.org/announcements/plasma/6/6.2.2
|
||||
- Changes since 6.2.1:
|
||||
* update version for new release
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 17 08:32:43 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Add patches to fix the memory info page by switching from pkexec
|
||||
to KAuth:
|
||||
* 0001-kcms-pull-dmidecode-helper-into-a-separate-dir.patch
|
||||
* 0002-refactor-dmidecode-helper-support-multiple-methods.patch
|
||||
* 0003-kcms-memory-use-KAuth-dmidecode-helper.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 15 16:53:24 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 6.2.1:
|
||||
* New bugfix release
|
||||
* For more details see https://kde.org/announcements/plasma/6/6.2.1
|
||||
- Changes since 6.2.0:
|
||||
* update version for new release
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Oct 5 10:44:16 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 6.2.0:
|
||||
* New bugfix release
|
||||
* For more details see https://kde.org/announcements/plasma/6/6.2.0
|
||||
- Changes since 6.1.90:
|
||||
* update version for new release
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 17 14:53:27 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to 6.1.90:
|
||||
* New feature release
|
||||
* For more details see https://kde.org/announcements/plasma/6/6.1.90
|
||||
- Changes since 6.1.5:
|
||||
* update version for new release
|
||||
* Use ECMDeprecationSettings
|
||||
* kcms: Add memory information KCM
|
||||
* update version for new release
|
||||
* remove dup appstream versions
|
||||
* update version for new release
|
||||
* appstream versions
|
||||
* update version for new release
|
||||
* Drop no longer needed KF6Widgets dependency
|
||||
* update version for new release
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 10 14:53:42 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
|
@ -16,8 +16,8 @@
|
||||
#
|
||||
|
||||
|
||||
%define kf6_version 6.2.0
|
||||
%define qt6_version 6.6.0
|
||||
%define kf6_version 6.5.0
|
||||
%define qt6_version 6.7.0
|
||||
|
||||
%define rname kinfocenter
|
||||
%bcond_without released
|
||||
@ -26,7 +26,7 @@
|
||||
# Latest ABI-stable Plasma (e.g. 6.0 in KF6, but 6.0.80 in KUF)
|
||||
%{!?_plasma6_version: %define _plasma6_version %(echo %{_plasma6_bugfix} | awk -F. '{print $1"."$2}')}
|
||||
Name: kinfocenter6
|
||||
Version: 6.1.5
|
||||
Version: 6.2.5
|
||||
Release: 0
|
||||
Summary: Utility that provides information about a computer system
|
||||
License: GPL-2.0-or-later
|
||||
@ -36,6 +36,10 @@ Source: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{ver
|
||||
Source1: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz.sig
|
||||
Source2: plasma.keyring
|
||||
%endif
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch1: 0001-kcms-pull-dmidecode-helper-into-a-separate-dir.patch
|
||||
Patch2: 0002-refactor-dmidecode-helper-support-multiple-methods.patch
|
||||
Patch3: 0003-kcms-memory-use-KAuth-dmidecode-helper.patch
|
||||
# PATCH-FIX-OPENSUSE
|
||||
Patch100: 0002-Look-for-binaries-in-Mesa-demos-path-as-well.patch
|
||||
BuildRequires: kf6-extra-cmake-modules >= %{kf6_version}
|
||||
@ -121,6 +125,7 @@ KDE Utility that provides information about a computer system.
|
||||
%{_kf6_plugindir}/plasma/kcms/kinfocenter/kcm_glx.so
|
||||
%{_kf6_plugindir}/plasma/kcms/kinfocenter/kcm_interrupts.so
|
||||
%{_kf6_plugindir}/plasma/kcms/kinfocenter/kcm_kwinsupportinfo.so
|
||||
%{_kf6_plugindir}/plasma/kcms/kinfocenter/kcm_memory.so
|
||||
%{_kf6_plugindir}/plasma/kcms/kinfocenter/kcm_network.so
|
||||
%{_kf6_plugindir}/plasma/kcms/kinfocenter/kcm_opencl.so
|
||||
%{_kf6_plugindir}/plasma/kcms/kinfocenter/kcm_pci.so
|
||||
|
Loading…
Reference in New Issue
Block a user