some more branding

This commit is contained in:
tumillanino
2026-03-26 14:36:06 +11:00
parent 204c1638b9
commit e7d6daf595
317 changed files with 23146 additions and 1 deletions

View File

@@ -0,0 +1,25 @@
import QtQuick
import org.kde.ksysguard.sensors as Sensors
import org.kde.plasma.plasmoid
import org.kde.plasma.configuration
ConfigModel {
ConfigCategory {
name: i18n("Appearance")
icon: "preferences-desktop-color"
source: "config/ConfigAppearance.qml"
}
ConfigCategory {
name: i18n("%1 Details", Plasmoid.faceController.name)
icon: Plasmoid.faceController.icon
visible: Plasmoid.faceController.faceConfigUi !== null
source: "config/FaceDetails.qml"
}
ConfigCategory {
name: i18n("Sensors Details")
icon: "ksysguardd"
source: "config/ConfigSensors.qml"
}
}

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<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=""/>
<group name="Appearance">
<entry name="title" type="String"/>
<entry name="chartFace" type="String">
<default>org.kde.ksysguard.piechart</default>
</entry>
</group>
<group name="Sensors">
<entry name="totalSensor" type="String">
</entry>
<entry name="sensorIds" type="StringList">
</entry>
<entry name="sensorColors" type="StringList"/>
<entry name="textOnlySensorIds" type="StringList"/>
</group>
</kcfg>

View File

@@ -0,0 +1,62 @@
/*
SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org>
SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQml
import org.kde.plasma.plasmoid
import org.kde.plasma.core as PlasmaCore
import org.kde.ksysguard.faces as Faces
Control {
id: chartFace
Layout.fillWidth: contentItem ? contentItem.Layout.fillWidth : false
Layout.fillHeight: contentItem ? contentItem.Layout.fillHeight : false
Layout.minimumWidth: (contentItem ? contentItem.Layout.minimumWidth : 0) + leftPadding + rightPadding
Layout.minimumHeight: (contentItem ? contentItem.Layout.minimumHeight : 0) + leftPadding + rightPadding
Layout.preferredWidth: (contentItem ? contentItem.Layout.preferredWidth : 0) + leftPadding + rightPadding
Layout.preferredHeight: (contentItem ? contentItem.Layout.preferredHeight : 0) + leftPadding + rightPadding
Layout.maximumWidth: (contentItem ? contentItem.Layout.maximumWidth : 0) + leftPadding + rightPadding
Layout.maximumHeight: (contentItem ? contentItem.Layout.maximumHeight : 0) + leftPadding + rightPadding
leftPadding: 0
topPadding: 0
rightPadding: 0
bottomPadding: 0
anchors.fill: parent
contentItem: Plasmoid.faceController.compactRepresentation
Binding {
target: Plasmoid.faceController.compactRepresentation
property: "formFactor"
value: {
switch (Plasmoid.formFactor) {
case PlasmaCore.Types.Horizontal:
return Faces.SensorFace.Horizontal;
case PlasmaCore.Types.Vertical:
return Faces.SensorFace.Vertical;
default:
return Faces.SensorFace.Planar;
}
}
restoreMode: Binding.RestoreBinding
}
MouseArea {
parent: chartFace
anchors.fill: parent
onClicked: root.expanded = !root.expanded
}
}

View File

@@ -0,0 +1,62 @@
/*
SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org>
SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Window
import Qt5Compat.GraphicalEffects
import QtQml
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.plasmoid
import org.kde.ksysguard.faces as Faces
Control {
id: chartFace
Layout.minimumWidth: (contentItem ? contentItem.Layout.minimumWidth : 0) + leftPadding + rightPadding
Layout.minimumHeight: (contentItem ? contentItem.Layout.minimumHeight : 0) + leftPadding + rightPadding
Layout.preferredWidth: (contentItem
? (contentItem.Layout.preferredWidth > 0 ? contentItem.Layout.preferredWidth : contentItem.implicitWidth)
: 0) + leftPadding + rightPadding
Layout.preferredHeight: (contentItem
? (contentItem.Layout.preferredHeight > 0 ? contentItem.Layout.preferredHeight: contentItem.implicitHeight)
: 0) + leftPadding + rightPadding
Layout.maximumWidth: (contentItem ? contentItem.Layout.maximumWidth : 0) + leftPadding + rightPadding
Layout.maximumHeight: (contentItem ? contentItem.Layout.maximumHeight : 0) + leftPadding + rightPadding
contentItem: Plasmoid.faceController.fullRepresentation
// This empty mousearea serves for the sole purpose of refusing touch events
// which otherwise are eaten by Control stealing the event from any of its parents
// TODO KF6: Check if this is still needed as Qt6 doesn't accept touch by default on Control
MouseArea {
parent: chartFace
anchors.fill:parent
}
Binding {
target: Plasmoid.faceController.fullRepresentation
property: "formFactor"
value: {
switch (Plasmoid.formFactor) {
case PlasmaCore.Types.Horizontal:
return Faces.SensorFace.Horizontal;
case PlasmaCore.Types.Vertical:
return Faces.SensorFace.Vertical;
default:
return Faces.SensorFace.Planar;
}
}
restoreMode: Binding.RestoreBinding
}
}

View File

@@ -0,0 +1,52 @@
/*
SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org>
SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import org.kde.plasma.plasmoid
import org.kde.kcmutils as KCM
KCM.SimpleKCM {
id: root
signal configurationChanged
function saveConfig() {
configUi.saveConfig()
Plasmoid.faceController.reloadConfig()
}
// Workaround for Bug 424458, when reusing the controller/item things break
readonly property Item configUi: Plasmoid.workaroundController(root).appearanceConfigUi
// We cannot directly override the contentItem since SimpleKCM is a
// Kirigami.ScrollablePage which breaks if we override the contentItem. So
// instead use a placeholder item and reparent the config UI into that item,
// making sure to bind the required properties so sizing is correct.
Item {
id: contents
implicitWidth: root.configUi.implicitWidth
implicitHeight: root.configUi.implicitHeight
children: root.configUi
Binding {
target: root.configUi
property: "width"
value: contents.width
}
}
Connections {
target: root.configUi
function onConfigurationChanged() {
root.configurationChanged()
}
}
}

View File

@@ -0,0 +1,50 @@
/*
SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org>
SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import org.kde.plasma.plasmoid
import org.kde.kcmutils as KCM
KCM.SimpleKCM {
id: root
signal configurationChanged
function saveConfig() {
configUi.saveConfig();
}
readonly property Item configUi: Plasmoid.faceController.sensorsConfigUi
// We cannot directly override the contentItem since SimpleKCM is a
// Kirigami.ScrollablePage which breaks if we override the contentItem. So
// instead use a placeholder item and reparent the config UI into that item,
// making sure to bind the required properties so sizing is correct.
Item {
id: contents
implicitWidth: root.configUi.implicitWidth
implicitHeight: root.configUi.implicitHeight
children: root.configUi
Binding {
target: root.configUi
property: "width"
value: contents.width
}
}
Connections {
target: root.configUi
function onConfigurationChanged() {
root.configurationChanged()
}
}
}

View File

@@ -0,0 +1,50 @@
/*
SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org>
SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import org.kde.plasma.plasmoid
import org.kde.kcmutils as KCM
KCM.SimpleKCM {
id: root
signal configurationChanged
function saveConfig() {
configUi.saveConfig();
}
readonly property Item configUi: Plasmoid.faceController.faceConfigUi
// We cannot directly override the contentItem since SimpleKCM is a
// Kirigami.ScrollablePage which breaks if we override the contentItem. So
// instead use a placeholder item and reparent the config UI into that item,
// making sure to bind the required properties so sizing is correct.
Item {
id: contents
implicitWidth: root.configUi.implicitWidth
implicitHeight: root.configUi.implicitHeight
children: root.configUi
Binding {
target: root.configUi
property: "width"
value: contents.width
}
}
Connections {
target: root.configUi
function onConfigurationChanged() {
root.configurationChanged()
}
}
}

View File

@@ -0,0 +1,96 @@
/*
SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org>
SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import QtQuick.Layouts
import QtQuick.Window
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.plasmoid
import org.kde.kirigami as Kirigami
import org.kde.ksysguard.sensors as Sensors
PlasmoidItem {
id: root
Plasmoid.backgroundHints: PlasmaCore.Types.DefaultBackground | PlasmaCore.Types.ConfigurableBackground
// Determine the right value to use for representation switching
function switchSizeFromSize(formFactor, compactMax, fullMin) {
// If we are planar (aka on the desktop), do not do any switching
if (Plasmoid.formFactor === PlasmaCore.Types.Planar) {
return -1
}
// If we are in a form factor where we can extend freely one way, don't
// use that for determining switching.
if (Plasmoid.formFactor === formFactor) {
// 0 or less is considered as "no switching" so return the smallest
// possible still valid value.
return 1
}
// Layout.maximumWidth will return Infinity if it isn't set, so handle that.
if (!Number.isFinite(compactMax)) {
// This is the default maximum size for compact reps, with 1 subtracted
// to ensure we switch if the maximum is reached.
compactMax = Kirigami.Units.iconSizes.enormous - 1
}
// Layout.minimumWidth will return -1 if it is not set, handle that.
if (fullMin <= 0) {
fullMin = Kirigami.Units.iconSizes.enormous - 1
}
// Use the larger of the two sizes to ensure we switch when the compact
// rep reaches its maximum but we don't try to cram in a full rep that
// won't actually fit.
return Math.max(compactMax, fullMin)
}
switchWidth: switchSizeFromSize(PlasmaCore.Types.Horizontal, compactRepresentationItem?.Layout.maximumWidth ?? Infinity, fullRepresentationItem?.Layout.minimumWidth ?? -1)
switchHeight: switchSizeFromSize(PlasmaCore.Types.Vertical, compactRepresentationItem?.Layout.maximumHeight ?? Infinity, fullRepresentationItem?.Layout.minimumHeight ?? -1)
preferredRepresentation: Plasmoid.formFactor === PlasmaCore.Types.Planar ? fullRepresentation : null
Plasmoid.title: Plasmoid.faceController?.title || i18n("System Monitor")
toolTipSubText: totalSensor.sensorId ? i18nc("Sensor name: value", "%1: %2", totalSensor.name, totalSensor.formattedValue) : ""
compactRepresentation: CompactRepresentation {
}
fullRepresentation: FullRepresentation {
}
Plasmoid.configurationRequired: (Plasmoid.faceController ?? false) &&
Plasmoid.faceController.highPrioritySensorIds.length == 0 &&
Plasmoid.faceController.lowPrioritySensorIds.length == 0 &&
Plasmoid.faceController.totalSensors.length == 0 &&
! (["org.kde.ksysguard.applicationstable",
"org.kde.ksysguard.processtable"].includes(Plasmoid.faceController.faceId))
Sensors.Sensor {
id: totalSensor
sensorId: Plasmoid.faceController?.totalSensors[0] || ""
updateRateLimit: Plasmoid.faceController?.updateRateLimit
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.MiddleButton
onClicked: Plasmoid.openSystemMonitor()
}
Plasmoid.contextualActions: [
PlasmaCore.Action {
text: i18nc("@action", "Open System Monitor…")
icon.name: "utilities-system-monitor"
onTriggered: Plasmoid.openSystemMonitor()
}
]
}

View File

@@ -0,0 +1,169 @@
{
"KPackageStructure": "Plasma/Applet",
"KPlugin": {
"Authors": [
{
"Name": "Marco Martin",
"Name[ar]": "ماركو مارتن",
"Name[ast]": "Marco Martin",
"Name[az]": "Marco Martin",
"Name[be]": "Marco Martin",
"Name[bg]": "Марко Мартин",
"Name[ca@valencia]": "Marco Martin",
"Name[ca]": "Marco Martin",
"Name[cs]": "Marco Martin",
"Name[da]": "Marco Martin",
"Name[de]": "Marco Martin",
"Name[el]": "Marco Martin",
"Name[en_GB]": "Marco Martin",
"Name[eo]": "Marco Martin",
"Name[es]": "Marco Martin",
"Name[et]": "Marco Martin",
"Name[eu]": "Marco Martin",
"Name[fi]": "Marco Martin",
"Name[fr]": "Marco Martin",
"Name[ga]": "Marco Martin",
"Name[gl]": "Marco Martin",
"Name[he]": "מרקו מרטין",
"Name[hi]": "मार्को मार्टिन",
"Name[hu]": "Marco Martin",
"Name[ia]": "Marco Martin",
"Name[id]": "Marco Martin",
"Name[is]": "Marco Martin",
"Name[it]": "Marco Martin",
"Name[ja]": "Marco Martin",
"Name[ka]": "მაკრო მარტინი",
"Name[ko]": "Marco Martin",
"Name[lt]": "Marco Martin",
"Name[lv]": "Marco Martin",
"Name[nb]": "Marco Martin",
"Name[nl]": "Marco Martin",
"Name[nn]": "Marco Martin",
"Name[pa]": "ਮਾਰਕੋ ਮਾਰਟਿਨ",
"Name[pl]": "Marco Martin",
"Name[pt]": "Marco Martin",
"Name[pt_BR]": "Marco Martin",
"Name[ro]": "Marco Martin",
"Name[ru]": "Marco Martin",
"Name[sa]": "मार्को मार्टिन्",
"Name[sk]": "Marco Martin",
"Name[sl]": "Marco Martin",
"Name[sv]": "Marco Martin",
"Name[ta]": "மார்க்கோ மார்ட்டின்",
"Name[tr]": "Marco Martin",
"Name[uk]": "Marco Martin",
"Name[vi]": "Marco Martin",
"Name[zh_CN]": "Marco Martin",
"Name[zh_TW]": "Marco Martin"
}
],
"BugReportUrl": "https://bugs.kde.org/enter_bug.cgi?product=plasmashell&component=System%20Monitor%20widgets",
"Category": "System Information",
"Description": "Displays a configurable chart of a system monitor sensor",
"Description[ar]": "يعرض مخططًا قابلًا للضبط لمتحسسات مراقبة النظام",
"Description[az]": "Sistem monitoru sensorunun ayarlana bilən zolaqlarını göstərir",
"Description[be]": "Паказвае наладжвальную дыяграму сэнсара сістэмнага назіральніка",
"Description[bg]": "Показва конфигурируема диаграма на сензор за системен монитор",
"Description[ca@valencia]": "Mostra un diagrama configurable d'un sensor del monitor del sistema",
"Description[ca]": "Mostra un diagrama configurable d'un sensor del monitor del sistema",
"Description[da]": "Viser et konfigurerbart diagram over en systemovervågning-sensor",
"Description[de]": "Zeigt ein anpassbares Diagramm eines Systemmonitor-Sensors an",
"Description[el]": "Εμφανίζει ένα διαμορφώσιμο διάγραμμα ενός αισθητήρα παρακολούθησης συστήματος",
"Description[en_GB]": "Displays a configurable chart of a system monitor sensor",
"Description[eo]": "Montras agordeblan diagramon de sistemmonitora sensilo",
"Description[es]": "Muestra un gráfico configurable de un sensor del monitor del sistema",
"Description[et]": "Süsteemi jälgija sensori seadistatava diagrammi näitamine",
"Description[eu]": "Sistema gainbegiratzeko sentsore baten diagrama konfiguragarri bat azaltzen du",
"Description[fi]": "Näyttää mukautettavissa olevan kaavion järjestelmänvalvonnan anturista",
"Description[fr]": "Affiche un graphique configurable du senseur de surveillance du système.",
"Description[gl]": "Amosa un gráfico configurábel dun sensor de vixilancia do sistema",
"Description[he]": "יישומון צג מערכת שמציג את חיישן צג המערכת",
"Description[hi]": "तंत्र परिवीक्षक सेंसर का विन्यास करने योग्य लेखा-चित्र प्रदर्शित करता है ",
"Description[hu]": "Testre szabható szenzorokat megjelenítő elem",
"Description[ia]": "Monstra un graphico configurabile de un sensor de supervision de systema",
"Description[id]": "Menampilkan sebuah bagan yang bisa dikonfigurasi pada sebuah sensor pemantau sistem",
"Description[is]": "Sýnir stillanlegt myndrit yfir kerfisvöktunarskynjara",
"Description[it]": "Visualizza un grafico configurabile di un sensore di monitoraggio del sistema",
"Description[ja]": "カスタム可能なチャートを表示します",
"Description[ka]": "სისტემური მონიტორის სენსორის მორგებადი ცხვრილის ჩვენება",
"Description[ko]": "설정 가능한 시스템 모니터 센서 차트 표시",
"Description[lt]": "Rodo konfigūruojamą sistemos prižiūryklės jutiklio diagramą",
"Description[lv]": "Parāda sistēmas pārraudzības sensoru konfigurējamu diagrammu",
"Description[nb]": "Viser et tilpassbart diagram for en systemovervåkingssensor",
"Description[nl]": "Toont een te configureren grafiek van een systeemmonitorsensor",
"Description[nn]": "Viser eit tilpassbart diagram for ein systemovervakingssensor",
"Description[pa]": "ਸਿਸਟਮ ਮਾਨੀਟਰ ਸੈਂਸਰ ਦੀ ਸੰਰਚਨਾ-ਯੋਗ ਚਾਰਟ ਦਿਖਾਉਂਦਾ ਹੈ",
"Description[pl]": "Wyświetla wykres miernika monitora systemowego",
"Description[pt]": "Mostra um gráfico configurável de um sensor de monitorização do sistema",
"Description[pt_BR]": "Mostra um gráfico configurável do sensor do monitor do sistema",
"Description[ro]": "Afișează un grafic configurabil al unui senzor de monitorizare a sistemului",
"Description[ru]": "Настраиваемый график датчика системного монитора",
"Description[sa]": "प्रणालीनिरीक्षकसंवेदकस्य विन्यासयोग्यं चित्रपट प्रदर्शयति",
"Description[sk]": "Zobrazuje konfigurovateľný graf senzoru monitorovania systému",
"Description[sl]": "Prikaže nastavljiv grafikon sistemskega monitorja senzorja",
"Description[sv]": "Visar ett anpassningsbart diagram av en systemövervakningssensor",
"Description[ta]": "ஏதாவதொரு கணினி கண்காணிப்பு உணரியைக் காட்டும்",
"Description[tr]": "Sistem monitörü algılayıcısının yapılandırılabilir bir grafiğini görüntüler",
"Description[uk]": "Показує придатну до налаштовування діаграму на основі даних датчика нагляду за системою",
"Description[vi]": "Hiển thị một biểu đồ cấu hình được của một cảm biến giám sát hệ thống",
"Description[zh_CN]": "显示系统监视器的可配置图表",
"Description[zh_TW]": "顯示一個可自訂的系統監控偵測器圖表",
"FormFactors": [
"desktop"
],
"Icon": "ksysguardd",
"Id": "org.kde.plasma.systemmonitor",
"License": "GPL",
"Name": "System Monitor Sensor",
"Name[ar]": "مستشعر مراقبة النظام",
"Name[az]": "Sistem İzləməsi Sensoru",
"Name[be]": "Сэнсар сістэмнага назіральніка",
"Name[bg]": "Сензор на системния монитор",
"Name[ca@valencia]": "Sensor del monitor del sistema",
"Name[ca]": "Sensor del monitor del sistema",
"Name[cs]": "Senzor monitoru systému",
"Name[da]": "Systemovervågning-sensor",
"Name[de]": "Systemmonitor-Sensor",
"Name[el]": "Αισθητήρας παρακολούθησης συστήματος",
"Name[en_GB]": "System Monitor Sensor",
"Name[eo]": "Sistemmonitora Sentilo",
"Name[es]": "Sensor del monitor del sistema",
"Name[eu]": "Sistema gainbegiratzeko sentsorea",
"Name[fi]": "Järjestelmävalvonnan anturi",
"Name[fr]": "Senseur de surveillance du système",
"Name[gl]": "Sensores de vixilancia do sistema",
"Name[he]": "חיישן צג המערכת",
"Name[hu]": "Rendszermonitor-szenzor",
"Name[ia]": "Sensor de Monitor (supervisor) de systema",
"Name[id]": "Sensor Pemantau Sistem",
"Name[is]": "Skynjari kerfiseftirlits",
"Name[it]": "Sensori di monitoraggio del sistema",
"Name[ja]": "システムモニタセンサー",
"Name[ka]": "სისტემური მონიტორის სენსორი",
"Name[ko]": "시스템 모니터 센서",
"Name[lt]": "Sistemos prižiūryklės jutiklis",
"Name[lv]": "Sistēmās pārraudzības sensors",
"Name[nb]": "Systemovervåkingssensor",
"Name[nl]": "Systeemmonitorsensor",
"Name[nn]": "Systemovervakingssensor",
"Name[pa]": "ਸਿਸਟਮ ਮਾਨੀਟਰ ਸੈਂਸਰ",
"Name[pl]": "Miernik monitora systemowego",
"Name[pt_BR]": "Sensor do monitor do sistema ",
"Name[ro]": "Senzor de monitorizare a sistemului",
"Name[ru]": "Датчик системного монитора",
"Name[sa]": "प्रणालीनिरीक्षकस्य संवेदक",
"Name[sk]": "Senzor monitorovania systému",
"Name[sl]": "Sistemski nadzornik senzorja",
"Name[sv]": "Systemövervakningssensor",
"Name[ta]": "கணினி கண்காணிப்பு உணரி",
"Name[tr]": "Sistem Monitörü Algılayıcısı",
"Name[uk]": "Датчик нагляду за системою",
"Name[zh_CN]": "系统监视传感器",
"Name[zh_TW]": "系統監控感測器",
"Website": "https://www.kde.org/plasma-desktop"
},
"X-Plasma-API-Minimum-Version": "6.0",
"X-Plasma-Provides": [
"org.kde.plasma.systemmonitor"
]
}