mirror of https://github.com/harish2704/dotFiles
33 changed files with 0 additions and 4794 deletions
@ -1,20 +0,0 @@ |
|||
import QtQuick 2.2 |
|||
import org.kde.plasma.configuration 2.0 |
|||
|
|||
ConfigModel { |
|||
ConfigCategory { |
|||
name: i18nc("Config header", "General") |
|||
icon: 'preferences-desktop-plasma' |
|||
source: 'config/ConfigGeneral.qml' |
|||
} |
|||
ConfigCategory { |
|||
name: i18nc("Config header", "Data") |
|||
icon: 'preferences-desktop' |
|||
source: 'config/ConfigData.qml' |
|||
} |
|||
ConfigCategory { |
|||
name: i18nc("Config header", "Appearance") |
|||
icon: 'preferences-desktop-color' |
|||
source: 'config/ConfigAppearance.qml' |
|||
} |
|||
} |
@ -1,220 +0,0 @@ |
|||
<?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="General"> |
|||
<entry name="updateInterval" type="Double"> |
|||
<default>1.0</default> |
|||
</entry> |
|||
|
|||
<entry name="actionService" type="String"> |
|||
<default>org.kde.plasma-systemmonitor</default> |
|||
</entry> |
|||
|
|||
<entry name="showCpuMonitor" type="Bool"> |
|||
<default>true</default> |
|||
</entry> |
|||
<entry name="cpuUnit" type="String"> |
|||
<default>usage</default> |
|||
</entry> |
|||
<entry name="showClock" type="Bool"> |
|||
<default>true</default> |
|||
</entry> |
|||
<entry name="clockAgregator" type="String"> |
|||
<default>average</default> |
|||
</entry> |
|||
<entry name="showCpuTemperature" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
|
|||
<entry name="showRamMonitor" type="Bool"> |
|||
<default>true</default> |
|||
</entry> |
|||
<entry name="memoryUnit" type="String"> |
|||
<default>physical</default> |
|||
</entry> |
|||
<entry name="memorySwapGraph" type="Bool"> |
|||
<default>true</default> |
|||
</entry> |
|||
|
|||
<entry name="showNetMonitor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="networkUnit" type="String"> |
|||
<default>kibibyte</default> |
|||
</entry> |
|||
|
|||
<entry name="showGpuMonitor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="gpuMemoryInPercent" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="gpuMemoryGraph" type="Bool"> |
|||
<default>true</default> |
|||
</entry> |
|||
<entry name="showGpuTemperature" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
|
|||
<entry name="showDiskMonitor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
</group> |
|||
|
|||
<group name="Data"> |
|||
<entry name="ignoredNetworkInterfaces" type="StringList"> |
|||
</entry> |
|||
<entry name="networkReceivingTotal" type="Double"> |
|||
<default>100000.0</default> |
|||
</entry> |
|||
<entry name="networkSendingTotal" type="Double"> |
|||
<default>100000.0</default> |
|||
</entry> |
|||
|
|||
<entry name="diskReadTotal" type="Double"> |
|||
<default>200000.0</default> |
|||
</entry> |
|||
<entry name="diskWriteTotal" type="Double"> |
|||
<default>200000.0</default> |
|||
</entry> |
|||
|
|||
<entry name="gpuIndex" type="String"> |
|||
<default>gpu0</default> |
|||
</entry> |
|||
|
|||
<entry name="thresholdWarningCpuTemp" type="Double"> |
|||
<default>85.0</default> |
|||
</entry> |
|||
<entry name="thresholdCriticalCpuTemp" type="Double"> |
|||
<default>105.0</default> |
|||
</entry> |
|||
<entry name="thresholdWarningMemory" type="Int"> |
|||
<default>70</default> |
|||
</entry> |
|||
<entry name="thresholdCriticalMemory" type="Int"> |
|||
<default>90</default> |
|||
</entry> |
|||
<entry name="thresholdWarningGpuTemp" type="Int"> |
|||
<default>75</default> |
|||
</entry> |
|||
<entry name="thresholdCriticalGpuTemp" type="Int"> |
|||
<default>85</default> |
|||
</entry> |
|||
</group> |
|||
|
|||
<group name="Appearance"> |
|||
<entry name="verticalLayout" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="historyAmount" type="Int"> |
|||
<default>10</default> |
|||
</entry> |
|||
<entry name="enableShadows" type="Bool"> |
|||
<default>true</default> |
|||
</entry> |
|||
<entry name="fontScale" type="Int"> |
|||
<default>26</default> |
|||
</entry> |
|||
<entry name="customGraphWidth" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="graphWidth" type="Int"> |
|||
</entry> |
|||
<entry name="customGraphHeight" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="graphHeight" type="Int"> |
|||
</entry> |
|||
<entry name="graphMargin" type="Int"> |
|||
<default>10</default> |
|||
</entry> |
|||
<entry name="graphFillOpacity" type="Int"> |
|||
<default>25</default> |
|||
</entry> |
|||
<entry name="displayment" type="String"> |
|||
<default>hover-hints</default> |
|||
</entry> |
|||
<entry name="placement" type="String"> |
|||
<default>top-right</default> |
|||
</entry> |
|||
|
|||
<entry name="graphOrders" type="StringList"> |
|||
<default>cpu,memory,gpu,disks,network</default> |
|||
</entry> |
|||
|
|||
<entry name="customCpuColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="cpuColor" type="Color"> |
|||
</entry> |
|||
<entry name="customCpuTemperatureColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="cpuTemperatureColor" type="Color"> |
|||
</entry> |
|||
|
|||
<entry name="customRamColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="ramColor" type="Color"> |
|||
</entry> |
|||
<entry name="customSwapColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="swapColor" type="Color"> |
|||
</entry> |
|||
|
|||
<entry name="customNetDownColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="netDownColor" type="Color"> |
|||
</entry> |
|||
<entry name="customNetUpColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="netUpColor" type="Color"> |
|||
</entry> |
|||
|
|||
<entry name="customGpuColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="gpuColor" type="Color"> |
|||
</entry> |
|||
<entry name="customGpuMemoryColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="gpuMemoryColor" type="Color"> |
|||
</entry> |
|||
<entry name="customGpuTemperatureColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="gpuTemperatureColor" type="Color"> |
|||
</entry> |
|||
|
|||
<entry name="customDiskReadColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="diskReadColor" type="Color"> |
|||
</entry> |
|||
<entry name="customDiskWriteColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="diskWriteColor" type="Color"> |
|||
</entry> |
|||
|
|||
<entry name="customWarningColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="warningColor" type="Color"> |
|||
</entry> |
|||
<entry name="customCriticalColor" type="Bool"> |
|||
<default>false</default> |
|||
</entry> |
|||
<entry name="criticalColor" type="Color"> |
|||
</entry> |
|||
</group> |
|||
|
|||
</kcfg> |
Binary file not shown.
Binary file not shown.
@ -1,38 +0,0 @@ |
|||
import QtQuick 2.0 |
|||
import QtQuick.Controls 2.12 as QtControls |
|||
import QtQuick.Layouts 1.1 as QtLayouts |
|||
import org.kde.plasma.core 2.0 as PlasmaCore |
|||
import org.kde.plasma.components 2.0 as PlasmaComponents |
|||
import org.kde.kirigami 2.6 as Kirigami |
|||
|
|||
MouseArea { |
|||
id: root |
|||
height: childrenRect.height |
|||
|
|||
hoverEnabled: true |
|||
cursorShape: Qt.PointingHandCursor |
|||
|
|||
property string serviceName: "" |
|||
property string name: "" |
|||
property string comment: "" |
|||
property string iconName: "" |
|||
property bool selected: false |
|||
|
|||
QtLayouts.RowLayout { |
|||
spacing: Kirigami.Units.smallSpacing |
|||
|
|||
QtControls.ToolTip.text: (comment !== "" ? comment + "\n\n" : "") + "ID: " + serviceName + ".desktop" |
|||
QtControls.ToolTip.visible: root.containsMouse |
|||
|
|||
PlasmaCore.IconItem { |
|||
id: icon |
|||
|
|||
source: iconName |
|||
implicitHeight: 16 |
|||
implicitWidth: 16 |
|||
} |
|||
PlasmaComponents.Label { |
|||
text: selected ? "<strong>" + name + "</strong>" : name |
|||
} |
|||
} |
|||
} |
@ -1,31 +0,0 @@ |
|||
import QtQuick 2.0 |
|||
import org.kde.plasma.core 2.1 as PlasmaCore |
|||
|
|||
PlasmaCore.SortFilterModel { |
|||
id: appsDetector |
|||
|
|||
sourceModel: PlasmaCore.DataModel { |
|||
dataSource: source |
|||
} |
|||
|
|||
filterRole: "name" |
|||
sortColumn: 0 |
|||
sortRole: "name" |
|||
sortOrder: Qt.AscendingOrder |
|||
|
|||
property var _dataSource: PlasmaCore.DataSource { |
|||
id: source |
|||
engine: "apps" |
|||
connectedSources: { |
|||
// Explude folder |
|||
var result = []; |
|||
for (var i = 0; i < sources.length; i++) { |
|||
if (sources[i].indexOf(".desktop") !== -1) { |
|||
result.push(sources[i]); |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
interval: 0 |
|||
} |
|||
} |
@ -1,73 +0,0 @@ |
|||
import QtQuick 2.0 |
|||
import org.kde.kitemmodels 1.0 as KItemModels |
|||
import org.kde.ksysguard.sensors 1.0 as Sensors |
|||
|
|||
KItemModels.KSortFilterProxyModel { |
|||
id: detector |
|||
|
|||
property var model: [] |
|||
property var _privateModel: ListModel { |
|||
} |
|||
|
|||
signal ready |
|||
|
|||
// Find all gpus |
|||
sourceModel: KItemModels.KDescendantsProxyModel { |
|||
model: Sensors.SensorTreeModel { |
|||
} |
|||
} |
|||
|
|||
property var _regex: /gpu\/(gpu\d)\/name/ |
|||
property var _tmpSensors: [] |
|||
filterRowCallback: function (row, parent) { |
|||
const sensorId = sourceModel.data(sourceModel.index(row, 0), Sensors.SensorTreeModel.SensorId); |
|||
const found = sensorId.match(_regex); |
|||
if (found && _tmpSensors.findIndex(item => item === sensorId) === -1) { |
|||
_tmpSensors.push(sensorId); |
|||
_privateModel.append({ |
|||
"index": found[1], |
|||
"name": "" |
|||
}); |
|||
} |
|||
} |
|||
|
|||
// Find name of GPU |
|||
property var _nameRegex: /.*\[(.*)\]/ |
|||
property var _sensors: Sensors.SensorDataModel { |
|||
updateRateLimit: -1 |
|||
property var retrievedData: 0 |
|||
|
|||
onDataChanged: { |
|||
let name = data(topLeft, Sensors.SensorDataModel.Value); |
|||
|
|||
// Special case for non NVIDIA graphic card (eg. in AMD the name look like "Navi 21 [Radeon RX 6950 XT]") |
|||
const found = name.match(_nameRegex); |
|||
if (found) { |
|||
if (found[1].startsWith("Radeon")) { |
|||
name = "AMD "; |
|||
} else { |
|||
name = "Intel "; |
|||
} |
|||
name += found[1]; |
|||
} |
|||
_privateModel.setProperty(topLeft.column, "name", name); |
|||
|
|||
// Stop sensors and update model |
|||
if (++retrievedData === sensors.length) { |
|||
enabled = false; |
|||
detector.model = _privateModel; |
|||
detector.ready(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
property var _timer: Timer { |
|||
running: true |
|||
triggeredOnStart: true |
|||
|
|||
onTriggered: { |
|||
running = false; |
|||
_sensors.sensors = _tmpSensors; |
|||
} |
|||
} |
|||
} |
@ -1,35 +0,0 @@ |
|||
import QtQuick 2.0 |
|||
import org.kde.plasma.core 2.0 as PlasmaCore |
|||
|
|||
QtObject { |
|||
id: detector |
|||
|
|||
property var model: [] |
|||
|
|||
property var _dataSource: PlasmaCore.DataSource { |
|||
id: dataSource |
|||
engine: "executable" |
|||
connectedSources: [] |
|||
|
|||
property var excludedInterface: /^(?!lo|bridge|usbus|bond)(.*)$/ |
|||
|
|||
onNewData: { |
|||
var interfaces = data["stdout"].trim().split('\n'); |
|||
for (var i = 0; i < interfaces.length; i++) { |
|||
if (excludedInterface.test(interfaces[i])) { |
|||
_privateModel.append({ |
|||
"name": interfaces[i] |
|||
}); |
|||
} |
|||
} |
|||
detector.model = _privateModel; |
|||
disconnectSource(sourceName); // cmd finished |
|||
} |
|||
|
|||
Component.onCompleted: { |
|||
connectSource("ip -o link show | awk -F': ' '{print $2}'"); |
|||
} |
|||
} |
|||
|
|||
property var _privateModel: ListModel {} |
|||
} |
@ -1,78 +0,0 @@ |
|||
/** |
|||
* @typedef {object} BinaryUnit |
|||
* @property {string} name The name |
|||
* @property {string} suffix The suffix |
|||
* @property {string} kiloChar The char for "kilo" |
|||
* @property {number} KiBDiff The difference with `kibibyte` |
|||
* @property {number} multiplier The multiplier amount (`1000` for metric and `1024` for binary) |
|||
*/ |
|||
|
|||
/** |
|||
* Get the binary unit from they name |
|||
* @param {string} dialect The binary unit name |
|||
* @returns {BinaryUnit} The binary unit |
|||
*/ |
|||
function getNetworkDialectInfo(dialect) { |
|||
switch (dialect) { |
|||
case "kilobyte": |
|||
return { |
|||
name: "kilobyte", |
|||
suffix: i18nc("kilobyte suffix", "Bps"), |
|||
kiloChar: "k", |
|||
KiBDiff: 1.024, |
|||
multiplier: 1024, |
|||
}; |
|||
case "kilobit": |
|||
return { |
|||
name: "kilobit", |
|||
suffix: i18nc("kilobit suffix", "bps"), |
|||
kiloChar: "k", |
|||
KiBDiff: 8, |
|||
multiplier: 1024, |
|||
}; |
|||
default: |
|||
return { |
|||
name: "kibibyte", |
|||
suffix: i18nc("kibibyte suffix", "iB/s"), |
|||
kiloChar: "K", |
|||
KiBDiff: 1, |
|||
multiplier: 1024, |
|||
}; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* Convert value from bytes to the appropriate string representation using the binary unit dialect. |
|||
* |
|||
* @param {number} value The value in byte/bit |
|||
* @param {BinaryUnit} dialect The binary unit standard to use |
|||
* @param {number} [precision=1] Number of places after the decimal point to use. |
|||
* @returns Converted value as a translated string including the units. |
|||
*/ |
|||
function formatByteValue(value, dialect, precision = 1) { |
|||
if (value === 0 || isNaN(parseInt(value))) { |
|||
return "0 " + dialect.suffix.replace("i", ""); |
|||
} else if (dialect.name === "kibibyte" && value <= dialect.multiplier) { |
|||
return "0 " + dialect.suffix.replace("i", ""); |
|||
} |
|||
|
|||
var sizes = ["", dialect.kiloChar, "M", "G", "T", "P", "Z", "Y"]; |
|||
|
|||
// Search unit conversion
|
|||
var unit = Math.floor(Math.log(value) / Math.log(dialect.multiplier)); |
|||
|
|||
// Bytes/Bits, no rounding
|
|||
precision = precision < 0 ? 0 : precision; |
|||
if (unit === 0) { |
|||
precision = 0; |
|||
} |
|||
|
|||
return ( |
|||
parseFloat( |
|||
(value / Math.pow(dialect.multiplier, unit)).toFixed(precision) |
|||
) + |
|||
" " + |
|||
sizes[unit] + |
|||
dialect.suffix |
|||
); |
|||
} |
@ -1,70 +0,0 @@ |
|||
import QtQuick 2.9 |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import "./base" as RMBaseGraph |
|||
import "../sensors" as RMSensors |
|||
|
|||
RMBaseGraph.SensorGraph { |
|||
id: root |
|||
objectName: "CpuGraph" |
|||
|
|||
Connections { |
|||
target: plasmoid.configuration |
|||
function onCpuUnitChanged() { |
|||
_updateSensors(); |
|||
} |
|||
function onClockAgregatorChanged() { |
|||
if (!manualFrequency.needManual) { |
|||
_updateSensors(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Config options |
|||
property color temperatureColor: plasmoid.configuration.customCpuTemperatureColor ? plasmoid.configuration.cpuTemperatureColor : theme.textColor |
|||
|
|||
// Graph options |
|||
// NOTE: "sensorsModel.sensors" is set by "_updateSensors" |
|||
chartColor: plasmoid.configuration.customCpuColor ? plasmoid.configuration.cpuColor : theme.highlightColor |
|||
|
|||
chart.yRange { |
|||
from: 0 |
|||
to: 100 |
|||
} |
|||
|
|||
// Labels options |
|||
thresholds: [undefined, undefined, [plasmoid.configuration.thresholdWarningCpuTemp, plasmoid.configuration.thresholdCriticalCpuTemp]] |
|||
|
|||
textContainer { |
|||
labelColors: [root.chartColor, undefined, temperatureColor] |
|||
valueColors: [undefined, undefined, temperatureColor] |
|||
|
|||
labels: ["CPU", (plasmoid.configuration.showClock ? i18nc("Graph label", "Clock") : ""), (plasmoid.configuration.showCpuTemperature ? i18nc("Graph label", "Temp.") : "")] |
|||
} |
|||
|
|||
function _updateSensors() { |
|||
// Manual cpu frequency handle |
|||
// TODO (3.0): remove this |
|||
let frequencySensorId = "cpu/all/" + plasmoid.configuration.clockAgregator + "Frequency"; |
|||
if (manualFrequency.needManual) { |
|||
frequencySensorId = "cpu/cpu0/frequency"; |
|||
} |
|||
// END Manual cpu frequency handle |
|||
sensorsModel.sensors = ["cpu/all/" + plasmoid.configuration.cpuUnit, frequencySensorId, "cpu/cpu0/temperature"]; |
|||
} |
|||
|
|||
// Manual cpu frequency handle |
|||
// TODO (3.0): remove this |
|||
_formatValue: (index, data) => { |
|||
if (index === 1 && manualFrequency.needManual) { |
|||
return manualFrequency.getFormattedValue(); |
|||
} |
|||
return _defaultFormatValue(index, data); |
|||
} |
|||
|
|||
RMSensors.CpuFrequency { |
|||
id: manualFrequency |
|||
agregator: plasmoid.configuration.clockAgregator |
|||
|
|||
onReady: _updateSensors() |
|||
} |
|||
} |
@ -1,38 +0,0 @@ |
|||
import QtQuick 2.9 |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import "./base" as RMBaseGraph |
|||
import "../functions.js" as Functions |
|||
|
|||
RMBaseGraph.TwoSensorsGraph { |
|||
id: root |
|||
objectName: "DisksGraph" |
|||
|
|||
readonly property var diskIoDialect: Functions.getNetworkDialectInfo("kibibyte") |
|||
|
|||
Connections { |
|||
target: plasmoid.configuration |
|||
function onDiskReadTotalChanged() { |
|||
_updateUplimits(); |
|||
} |
|||
function onDiskWriteTotalChanged() { |
|||
_updateUplimits(); |
|||
} |
|||
} |
|||
Component.onCompleted: { |
|||
_updateUplimits(); |
|||
} |
|||
|
|||
// Labels |
|||
textContainer { |
|||
labelColors: root.colors |
|||
labels: [i18nc("Graph label", "Read"), i18nc("Graph label", "Write"), ""] |
|||
} |
|||
|
|||
// Graph options |
|||
sensorsModel.sensors: ["disk/all/read", "disk/all/write"] |
|||
colors: [(plasmoid.configuration.customDiskReadColor ? plasmoid.configuration.diskReadColor : theme.highlightColor), (plasmoid.configuration.customDiskWriteColor ? plasmoid.configuration.diskWriteColor : theme.positiveTextColor)] |
|||
|
|||
function _updateUplimits() { |
|||
uplimits = [plasmoid.configuration.diskReadTotal * diskIoDialect.multiplier, plasmoid.configuration.diskWriteTotal * diskIoDialect.multiplier]; |
|||
} |
|||
} |
@ -1,85 +0,0 @@ |
|||
import QtQuick 2.9 |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.ksysguard.sensors 1.0 as Sensors |
|||
import "./base" as RMBaseGraph |
|||
|
|||
RMBaseGraph.TwoSensorsGraph { |
|||
id: root |
|||
objectName: "GpuGraph" |
|||
|
|||
// Config options |
|||
property color temperatureColor: plasmoid.configuration.customGpuTemperatureColor ? plasmoid.configuration.gpuTemperatureColor : theme.textColor |
|||
|
|||
// Bind config changes |
|||
Connections { |
|||
target: plasmoid.configuration |
|||
function onGpuMemoryInPercentChanged() { |
|||
uplimits = [100, plasmoid.configuration.gpuMemoryInPercent ? 100 : maxQueryModel.maxMemory]; |
|||
_clear(); |
|||
} |
|||
function onGpuIndexChanged() { |
|||
maxQueryModel.enabled = true |
|||
} |
|||
} |
|||
|
|||
// Labels |
|||
thresholds: [undefined, undefined, [plasmoid.configuration.thresholdWarningGpuTemp, plasmoid.configuration.thresholdCriticalGpuTemp]] |
|||
|
|||
textContainer { |
|||
labelColors: [root.colors[0], root.colors[1], temperatureColor] |
|||
valueColors: [undefined, undefined, temperatureColor] |
|||
|
|||
labels: ["GPU", (plasmoid.configuration.gpuMemoryGraph ? "VRAM" : ""), (plasmoid.configuration.showGpuTemperature ? i18nc("Graph label", "Temp.") : "")] |
|||
} |
|||
|
|||
// Graph options |
|||
// NOTE: "sensorsModel.sensors" set from "maxQueryModel" |
|||
colors: [(plasmoid.configuration.customGpuColor ? plasmoid.configuration.gpuColor : theme.highlightColor), (plasmoid.configuration.customGpuMemoryColor ? plasmoid.configuration.gpuMemoryColor : theme.positiveTextColor)] |
|||
|
|||
// Override methods, for handle memeory in percent |
|||
_update: () => { |
|||
for (let i = 0; i < sensorsModel.sensors.length; i++) { |
|||
let value = sensorsModel.getInfo(i); |
|||
if (i === 1 && plasmoid.configuration.gpuMemoryInPercent) { |
|||
value = (value / maxQueryModel.maxMemory) * 100; |
|||
} |
|||
root._insertChartData(i, value); |
|||
|
|||
// Update label |
|||
if (textContainer.valueVisible) { |
|||
_updateData(i); |
|||
} |
|||
} |
|||
} |
|||
_formatValue: (index, data) => { |
|||
if (index === 1 && plasmoid.configuration.gpuMemoryInPercent) { |
|||
return i18nc("Percent unit", "%1%", Math.round((data.value / maxQueryModel.maxMemory) * 1000) / 10); // This is for round to 1 decimal |
|||
} |
|||
return _defaultFormatValue(index, data); |
|||
} |
|||
|
|||
// Initialize limits and threshold |
|||
Sensors.SensorDataModel { |
|||
id: maxQueryModel |
|||
sensors: ["gpu/" + plasmoid.configuration.gpuIndex + "/totalVram"] |
|||
enabled: true |
|||
property int maxMemory: -1 |
|||
|
|||
onDataChanged: { |
|||
// Update values |
|||
const valueVar = parseInt(data(topLeft, Sensors.SensorDataModel.Value)); |
|||
if (isNaN(valueVar) || valueVar <= 0) { |
|||
return; |
|||
} |
|||
enabled = false; |
|||
maxMemory = valueVar; |
|||
|
|||
// Update graph Y range |
|||
root.uplimits = [100, plasmoid.configuration.gpuMemoryInPercent ? 100 : maxMemory]; |
|||
|
|||
// Update sensors |
|||
const gpu = plasmoid.configuration.gpuIndex |
|||
root.sensorsModel.sensors = ["gpu/" + gpu + "/usage", "gpu/" + gpu + "/usedVram", "gpu/" + gpu + "/temperature"]; |
|||
} |
|||
} |
|||
} |
@ -1,101 +0,0 @@ |
|||
import QtQuick 2.9 |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.ksysguard.sensors 1.0 as Sensors |
|||
import "./base" as RMBaseGraph |
|||
|
|||
RMBaseGraph.TwoSensorsGraph { |
|||
id: root |
|||
objectName: "MemoryGraph" |
|||
|
|||
Connections { |
|||
target: plasmoid.configuration |
|||
function onMemoryUnitChanged() { // Values: usage, system, user |
|||
const oldLimit1 = uplimits[0]; |
|||
if (plasmoid.configuration.memoryUnit.endsWith("-percent")) { |
|||
uplimits = [100, 100]; |
|||
} else { |
|||
uplimits = maxQueryModel.maxMemory; |
|||
} |
|||
_updateThresholds(); |
|||
_updateSensors(); |
|||
if (oldLimit1 != uplimits[0]) { |
|||
_clear(); |
|||
} |
|||
} |
|||
|
|||
function onMemorySwapGraphChanged() { |
|||
_updateSensors(); |
|||
} |
|||
|
|||
function onThresholdWarningMemoryChanged() { |
|||
_updateThresholds(); |
|||
} |
|||
function onThresholdCriticalMemoryChanged() { |
|||
_updateThresholds(); |
|||
} |
|||
} |
|||
Component.onCompleted: { |
|||
_updateThresholds(); |
|||
_updateSensors(); |
|||
} |
|||
|
|||
// Labels |
|||
textContainer { |
|||
labelColors: root.colors |
|||
valueColors: [undefined, root.colors[1]] |
|||
labelsVisibleWhenZero: [true, false, true] |
|||
|
|||
labels: ["RAM", (plasmoid.configuration.memorySwapGraph ? "Swap" : ""), ""] |
|||
} |
|||
|
|||
// Graph options |
|||
// NOTE: "sensorsModel.sensors" is set by "_updateSensors" |
|||
colors: [(plasmoid.configuration.customRamColor ? plasmoid.configuration.ramColor : theme.highlightColor), (plasmoid.configuration.customSwapColor ? plasmoid.configuration.swapColor : theme.negativeTextColor)] |
|||
|
|||
// Initialize limits and threshold |
|||
Sensors.SensorDataModel { |
|||
id: maxQueryModel |
|||
sensors: ["memory/physical/total", "memory/swap/total"] |
|||
enabled: true |
|||
property var maxMemory: [-1, -1] |
|||
|
|||
onDataChanged: { |
|||
// Update values |
|||
const value = parseInt(data(topLeft, Sensors.SensorDataModel.Value)); |
|||
if (isNaN(value) || (topLeft.column === 0 && value <= 0)) { |
|||
return; |
|||
} |
|||
maxMemory[topLeft.column] = value; |
|||
|
|||
// Update graph Y range and sensors |
|||
if (maxMemory[0] > 0 && maxMemory[1] >= 0) { |
|||
enabled = false; |
|||
if (!plasmoid.configuration.memoryUnit.endsWith("-percent")) { |
|||
root.uplimits = maxMemory; |
|||
} |
|||
root._updateThresholds(); |
|||
root._updateSensors(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
function _updateThresholds() { |
|||
const thresholdWarningMemory = plasmoid.configuration.thresholdWarningMemory; |
|||
const thresholdCriticalMemory = plasmoid.configuration.thresholdCriticalMemory; |
|||
if (!plasmoid.configuration.memoryUnit.endsWith("-percent")) { |
|||
thresholds[0] = [maxQueryModel.maxMemory[0] * (thresholdWarningMemory / 100.0), maxQueryModel.maxMemory[0] * (thresholdCriticalMemory / 100.0)]; |
|||
} else { |
|||
thresholds[0] = [thresholdWarningMemory, thresholdCriticalMemory]; |
|||
} |
|||
} |
|||
function _updateSensors() { |
|||
const info = plasmoid.configuration.memoryUnit.split("-"); |
|||
const suffix = info[1] === "percent" ? "Percent" : ""; |
|||
const memSensor = "memory/physical/" + (info[0] === "physical" ? "used" : "application") + suffix; |
|||
if (plasmoid.configuration.memorySwapGraph) { |
|||
sensorsModel.sensors = [memSensor, "memory/swap/used" + suffix]; |
|||
} else { |
|||
sensorsModel.sensors = [memSensor]; |
|||
} |
|||
} |
|||
} |
@ -1,113 +0,0 @@ |
|||
import QtQuick 2.9 |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import "./base" as RMBaseGraph |
|||
import "../" as RMComponents |
|||
import "../functions.js" as Functions |
|||
|
|||
RMBaseGraph.TwoSensorsGraph { |
|||
id: root |
|||
objectName: "NetworkGraph" |
|||
|
|||
property var dialect: Functions.getNetworkDialectInfo(plasmoid.configuration.networkUnit) |
|||
|
|||
Connections { |
|||
target: plasmoid.configuration |
|||
function onIgnoredNetworkInterfacesChanged() { |
|||
_updateSensors(); |
|||
} |
|||
|
|||
function onNetworkReceivingTotalChanged() { |
|||
_updateUplimits(); |
|||
} |
|||
function onNetworkSendingTotalChanged() { |
|||
_updateUplimits(); |
|||
} |
|||
} |
|||
Component.onCompleted: _updateUplimits() |
|||
|
|||
// Labels |
|||
textContainer { |
|||
labelColors: root.colors |
|||
labels: [i18nc("Graph label", "Receiving"), i18nc("Graph label", "Sending"), ""] |
|||
} |
|||
|
|||
// Graph options |
|||
colors: [(plasmoid.configuration.customNetDownColor ? plasmoid.configuration.netDownColor : theme.highlightColor), (plasmoid.configuration.customNetUpColor ? plasmoid.configuration.netUpColor : theme.positiveTextColor)] |
|||
|
|||
// Initialized sensors |
|||
RMComponents.NetworkInterfaceDetector { |
|||
id: networkInterfaces |
|||
onModelChanged: _updateSensors() |
|||
} |
|||
|
|||
// Override methods, for commulate sensors and support custom dialect |
|||
property var _downloadValue |
|||
property var _uploadValue |
|||
|
|||
_update: () => { |
|||
// Cummulate sensors by group |
|||
let data; |
|||
let downloadValue = 0, uploadValue = 0; |
|||
for (let i = 0; i < sensorsModel.sensors.length; i++) { |
|||
data = sensorsModel.getData(i); |
|||
if (typeof data === "undefined") { |
|||
continue; |
|||
} else if (data.sensorId.indexOf('/download') !== -1) { |
|||
downloadValue += data.value; |
|||
} else { |
|||
uploadValue += data.value; |
|||
} |
|||
} |
|||
|
|||
// Fix dialect AND store it for update label |
|||
_downloadValue = downloadValue *= dialect.KiBDiff; |
|||
_uploadValue = uploadValue *= dialect.KiBDiff; |
|||
|
|||
// Insert datas |
|||
root._insertChartData(0, downloadValue); |
|||
root._insertChartData(1, uploadValue); |
|||
|
|||
// Update label |
|||
if (textContainer.valueVisible) { |
|||
_updateData(0); |
|||
_updateData(1); |
|||
} |
|||
} |
|||
|
|||
function _updateData(index) { |
|||
// Cancel update if first data is not here |
|||
if (!sensorsModel.hasIndex(0, 0)) { |
|||
return; |
|||
} |
|||
|
|||
// Retrieve label need to update |
|||
const label = _getLabel(index); |
|||
if (typeof label === "undefined" || !label.enabled) { |
|||
return; |
|||
} |
|||
const value = index === 0 ? _downloadValue : _uploadValue; |
|||
|
|||
// Show value on label |
|||
label.text = Functions.formatByteValue(value, dialect); |
|||
label.visible = true; |
|||
} |
|||
|
|||
function _updateSensors() { |
|||
if (typeof networkInterfaces.model.count === "undefined") { |
|||
return; |
|||
} |
|||
const sensors = []; |
|||
for (let i = 0; i < networkInterfaces.model.count; i++) { |
|||
const name = networkInterfaces.model.get(i).name; |
|||
if (plasmoid.configuration.ignoredNetworkInterfaces.indexOf(name) === -1) { |
|||
sensors.push("network/" + name + "/download", "network/" + name + "/upload"); |
|||
} |
|||
} |
|||
sensorsModel.sensors = sensors; |
|||
_clear(); |
|||
} |
|||
|
|||
function _updateUplimits() { |
|||
uplimits = [plasmoid.configuration.networkReceivingTotal * dialect.multiplier, plasmoid.configuration.networkSendingTotal * dialect.multiplier]; |
|||
} |
|||
} |
@ -1,39 +0,0 @@ |
|||
import QtQuick 2.9 |
|||
import org.kde.quickcharts 1.0 as Charts |
|||
|
|||
Charts.ArraySource { |
|||
property int maximumHistory: -1 |
|||
|
|||
onMaximumHistoryChanged: { |
|||
if (maximumHistory != -1) { |
|||
if (array.length === 0) { |
|||
array = Array(maximumHistory).fill(0); |
|||
} |
|||
_update(false); |
|||
} |
|||
} |
|||
|
|||
function clear() { |
|||
array = maximumHistory === -1 ? [] : Array(maximumHistory).fill(0); |
|||
// Emit update |
|||
dataChanged(); |
|||
} |
|||
function insertValue(value) { |
|||
array = [value, ...array]; |
|||
_update(); |
|||
} |
|||
|
|||
function _update() { |
|||
// Reorder array |
|||
while (array.length > 0 && array.length > maximumHistory) { |
|||
array = array.slice(0, -1); |
|||
} |
|||
|
|||
// Emit update |
|||
dataChanged(); |
|||
} |
|||
|
|||
Component.onCompleted: { |
|||
array = maximumHistory === -1 ? [] : Array(maximumHistory).fill(0); |
|||
} |
|||
} |
@ -1,164 +0,0 @@ |
|||
import QtQuick 2.9 |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.plasma.components 2.0 as PlasmaComponents |
|||
import org.kde.ksysguard.sensors 1.0 as Sensors |
|||
import org.kde.ksysguard.formatter 1.0 as Formatter |
|||
import "./" as RMBaseGraph |
|||
|
|||
Item { |
|||
id: root |
|||
|
|||
signal chartDataChanged(int index) |
|||
signal showValueInLabel |
|||
signal labelChanged(PlasmaComponents.Label label, var value) |
|||
|
|||
// Aliases |
|||
readonly property alias textContainer: textContainer |
|||
readonly property alias sensorsModel: sensorsModel |
|||
|
|||
// Thresholds properties |
|||
property var thresholds: [undefined, undefined, undefined] |
|||
property color thresholdWarningColor: plasmoid.configuration.customWarningColor ? plasmoid.configuration.warningColor : theme.neutralTextColor |
|||
property color thresholdCriticalColor: plasmoid.configuration.customCriticalColor ? plasmoid.configuration.criticalColor : theme.negativeTextColor |
|||
|
|||
// Labels |
|||
RMBaseGraph.GraphText { |
|||
id: textContainer |
|||
anchors.fill: parent |
|||
z: 1 |
|||
|
|||
onShowValueInLabel: { |
|||
// Update labels |
|||
for (let i = 0; i < sensorsModel.sensors.length; i++) { |
|||
_updateData(i); |
|||
} |
|||
|
|||
// Emit signal |
|||
root.showValueInLabel(); |
|||
} |
|||
} |
|||
|
|||
// Retrieve data from sensors, and update labels |
|||
Sensors.SensorDataModel { |
|||
id: sensorsModel |
|||
updateRateLimit: -1 |
|||
enabled: root.visible |
|||
|
|||
/** |
|||
* Get the data from sensor |
|||
* @param {number} column The sensors index |
|||
* @returns The data value, formatted value and sensor id |
|||
*/ |
|||
function getData(column) { |
|||
if (!hasIndex(0, column)) { |
|||
return undefined; |
|||
} |
|||
const indexVar = index(0, column); |
|||
const value = data(indexVar, Sensors.SensorDataModel.Value); |
|||
const res = { |
|||
"sensorId": data(indexVar, Sensors.SensorDataModel.SensorId), |
|||
"value": value |
|||
}; |
|||
return res; |
|||
} |
|||
|
|||
/** |
|||
* Get info from sensor |
|||
* @param {number} column The sensor index |
|||
* @param {number} role The role id |
|||
* @returns The sensor info |
|||
*/ |
|||
function getInfo(column, role = Sensors.SensorDataModel.Value) { |
|||
if (!hasIndex(0, column)) { |
|||
return 0; |
|||
} |
|||
return data(index(0, column), role); |
|||
} |
|||
} |
|||
|
|||
Connections { |
|||
target: root |
|||
|
|||
/** |
|||
* Re assign sensorsModel.sensors when enable visibility for right initialize it. |
|||
* This is due to an issue when set sensors and model is disabled, the sensors is never initialized |
|||
* Bug reported at : https://bugs.kde.org/show_bug.cgi?id=469234 |
|||
*/ |
|||
function onVisibleChanged() { |
|||
if (!root.visible) { |
|||
return; |
|||
} |
|||
const sensors = sensorsModel.sensors; |
|||
sensorsModel.sensors = []; |
|||
sensorsModel.sensors = sensors; |
|||
} |
|||
} |
|||
|
|||
// Process functions |
|||
property var _insertChartData: (column, value) => {} // NOTE: this is implemented by children |
|||
property var _clear: () => { |
|||
for (let i = 0; i < sensorsModel.sensors.length; i++) { |
|||
_updateData(i); |
|||
} |
|||
} |
|||
property var _update: () => { |
|||
for (let i = 0; i < sensorsModel.sensors.length; i++) { |
|||
root._insertChartData(i, sensorsModel.getInfo(i)); |
|||
|
|||
// Update label |
|||
if (textContainer.valueVisible) { |
|||
_updateData(i); |
|||
} |
|||
} |
|||
} |
|||
|
|||
function _getLabel(index) { |
|||
if (index === 0) { |
|||
return textContainer.firstLineLabel; |
|||
} else if (index === 1) { |
|||
return textContainer.secondLineLabel; |
|||
} else if (index === 2) { |
|||
return textContainer.thirdLineLabel; |
|||
} |
|||
return undefined; |
|||
} |
|||
|
|||
function _updateData(index) { |
|||
// Retrieve label need to update |
|||
const label = _getLabel(index); |
|||
if (typeof label === "undefined" || !label.enabled) { |
|||
return; |
|||
} |
|||
const data = sensorsModel.getData(index); |
|||
if (typeof data === 'undefined') { |
|||
return; |
|||
} |
|||
|
|||
// Hide can't be zero label |
|||
if (!textContainer.labelsVisibleWhenZero[index] && data.value === 0) { |
|||
label.text = ''; |
|||
label.visible = false; |
|||
} else { |
|||
// Handle threshold value |
|||
if (typeof thresholds[index] !== 'undefined') { |
|||
if (data.value >= thresholds[index][1]) { |
|||
label.color = thresholdCriticalColor; |
|||
} else if (data.value >= thresholds[index][0]) { |
|||
label.color = thresholdWarningColor; |
|||
} else { |
|||
label.color = textContainer.getTextColor(index); |
|||
} |
|||
} |
|||
|
|||
// Show value on label |
|||
label.text = _formatValue(index, data); |
|||
label.visible = label.enabled; |
|||
} |
|||
labelChanged(label, data); |
|||
} |
|||
|
|||
property var _formatValue: _defaultFormatValue |
|||
function _defaultFormatValue(index, data) { |
|||
return Formatter.Formatter.formatValueShowNull(data.value, sensorsModel.getInfo(index, Sensors.SensorDataModel.Unit)); |
|||
} |
|||
} |
@ -1,257 +0,0 @@ |
|||
import QtQuick 2.9 |
|||
import QtGraphicalEffects 1.0 |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.plasma.components 2.0 as PlasmaComponents |
|||
|
|||
Item { |
|||
id: graphText |
|||
|
|||
signal showValueInLabel |
|||
|
|||
property bool valueVisible: false |
|||
|
|||
// Aliases |
|||
readonly property alias firstLineLabel: firstLineLabel |
|||
readonly property alias secondLineLabel: secondLineLabel |
|||
readonly property alias thirdLineLabel: thirdLineLabel |
|||
|
|||
// Text properties |
|||
property var labels: ["", "", ""] |
|||
property var valueColors: [theme.textColor, theme.textColor, theme.textColor] |
|||
property var labelColors: [theme.highlightColor, theme.textColor, theme.textColor] |
|||
|
|||
property var labelsVisibleWhenZero: [true, true, true] |
|||
|
|||
// Config aliases |
|||
property string displayment: plasmoid.configuration.displayment // Values: always, hover, hover-hints |
|||
|
|||
// Bind config changes |
|||
onDisplaymentChanged: { |
|||
if (displayment === 'hover') { |
|||
valueVisible = mouseArea.containsMouse; |
|||
_setLabelsState(valueVisible); |
|||
if (mouseArea.containsMouse) { |
|||
showValueInLabel(); |
|||
} |
|||
} else { |
|||
_setLabelsState(true); |
|||
showValueInLabel(); |
|||
valueVisible = true; |
|||
} |
|||
} |
|||
|
|||
// Bind properties changes |
|||
onLabelsChanged: { |
|||
firstLineLabel.enabled = firstLineLabel.visible = labels[0] != ""; |
|||
secondLineLabel.enabled = secondLineLabel.visible = labels[1] != ""; |
|||
thirdLineLabel.enabled = thirdLineLabel.visible = labels[2] != ""; |
|||
} |
|||
|
|||
// Labels |
|||
Flow { |
|||
id: textContainer |
|||
width: parent.width |
|||
state: plasmoid.configuration.placement // Values: top-right, top-left, bottom-right, bottom-left |
|||
spacing: -2 |
|||
flow: Flow.TopToBottom |
|||
|
|||
// First line |
|||
PlasmaComponents.Label { |
|||
id: firstLineLabel |
|||
width: parent.width |
|||
height: contentHeight |
|||
readonly property int index: 0 |
|||
|
|||
text: "..." |
|||
color: getTextColor(index) |
|||
font.pointSize: -1 |
|||
} |
|||
PlasmaComponents.Label { |
|||
id: secondLineLabel |
|||
width: parent.width |
|||
height: contentHeight |
|||
readonly property int index: 1 |
|||
|
|||
text: "..." |
|||
color: getTextColor(index) |
|||
font.pointSize: -1 |
|||
} |
|||
PlasmaComponents.Label { |
|||
id: thirdLineLabel |
|||
width: parent.width |
|||
height: contentHeight |
|||
readonly property int index: 2 |
|||
|
|||
text: "..." |
|||
color: getTextColor(index) |
|||
font.pointSize: -1 |
|||
} |
|||
|
|||
// States |
|||
states: [ |
|||
State { |
|||
name: 'top-left' |
|||
AnchorChanges { |
|||
target: textContainer |
|||
anchors.top: parent.top |
|||
} |
|||
|
|||
PropertyChanges { |
|||
target: firstLineLabel |
|||
horizontalAlignment: Text.AlignLeft |
|||
} |
|||
PropertyChanges { |
|||
target: secondLineLabel |
|||
horizontalAlignment: Text.AlignLeft |
|||
} |
|||
PropertyChanges { |
|||
target: thirdLineLabel |
|||
horizontalAlignment: Text.AlignLeft |
|||
} |
|||
}, |
|||
State { |
|||
name: 'top-right' |
|||
AnchorChanges { |
|||
target: textContainer |
|||
anchors.top: parent.top |
|||
} |
|||
|
|||
PropertyChanges { |
|||
target: firstLineLabel |
|||
horizontalAlignment: Text.AlignRight |
|||
} |
|||
PropertyChanges { |
|||
target: secondLineLabel |
|||
horizontalAlignment: Text.AlignRight |
|||
} |
|||
PropertyChanges { |
|||
target: thirdLineLabel |
|||
horizontalAlignment: Text.AlignRight |
|||
} |
|||
}, |
|||
State { |
|||
name: 'bottom-left' |
|||
AnchorChanges { |
|||
target: textContainer |
|||
anchors.bottom: parent.bottom |
|||
} |
|||
|
|||
PropertyChanges { |
|||
target: firstLineLabel |
|||
horizontalAlignment: Text.AlignLeft |
|||
} |
|||
PropertyChanges { |
|||
target: secondLineLabel |
|||
horizontalAlignment: Text.AlignLeft |
|||
} |
|||
PropertyChanges { |
|||
target: thirdLineLabel |
|||
horizontalAlignment: Text.AlignLeft |
|||
} |
|||
}, |
|||
State { |
|||
name: 'bottom-right' |
|||
AnchorChanges { |
|||
target: textContainer |
|||
anchors.bottom: parent.bottom |
|||
} |
|||
|
|||
PropertyChanges { |
|||
target: firstLineLabel |
|||
horizontalAlignment: Text.AlignRight |
|||
} |
|||
PropertyChanges { |
|||
target: secondLineLabel |
|||
horizontalAlignment: Text.AlignRight |
|||
} |
|||
PropertyChanges { |
|||
target: thirdLineLabel |
|||
horizontalAlignment: Text.AlignRight |
|||
} |
|||
} |
|||
] |
|||
} |
|||
|
|||
DropShadow { |
|||
visible: plasmoid.configuration.enableShadows |
|||
anchors.fill: textContainer |
|||
radius: 1 |
|||
spread: 1 |
|||
fast: true |
|||
color: theme.backgroundColor |
|||
source: textContainer |
|||
} |
|||
|
|||
// Action |
|||
MouseArea { |
|||
id: mouseArea |
|||
anchors.fill: parent |
|||
acceptedButtons: Qt.NoButton |
|||
hoverEnabled: displayment !== 'always' |
|||
|
|||
property bool _firstHover: true |
|||
property var _oldLabelsState: [] |
|||
function _saveOldLabelsState() { |
|||
_oldLabelsState = [[firstLineLabel.text + "", !!firstLineLabel.visible], [secondLineLabel.text + "", !!secondLineLabel.visible], [thirdLineLabel.text + "", !!thirdLineLabel.visible]]; |
|||
} |
|||
|
|||
onEntered: { |
|||
if (displayment === 'hover-hints') { |
|||
valueVisible = false; |
|||
_saveOldLabelsState(); |
|||
_setLabelsState(true); |
|||
|
|||
// Show label hints |
|||
_setTextAndColor(firstLineLabel, labels[firstLineLabel.index], true); |
|||
_setTextAndColor(secondLineLabel, labels[secondLineLabel.index], true); |
|||
_setTextAndColor(thirdLineLabel, labels[thirdLineLabel.index], true); |
|||
} else if (displayment === 'hover') { |
|||
_setLabelsState(true); |
|||
showValueInLabel(); |
|||
valueVisible = true; |
|||
} |
|||
} |
|||
|
|||
onExited: { |
|||
if (displayment === 'hover-hints') { |
|||
// Recover old state |
|||
_setTextAndColor(firstLineLabel, _oldLabelsState[firstLineLabel.index][0]); |
|||
firstLineLabel.visible = _oldLabelsState[firstLineLabel.index][1]; |
|||
_setTextAndColor(secondLineLabel, _oldLabelsState[secondLineLabel.index][0]); |
|||
secondLineLabel.visible = _oldLabelsState[secondLineLabel.index][1]; |
|||
_setTextAndColor(thirdLineLabel, _oldLabelsState[thirdLineLabel.index][0]); |
|||
thirdLineLabel.visible = _oldLabelsState[thirdLineLabel.index][1]; |
|||
|
|||
// Update value |
|||
showValueInLabel(); |
|||
valueVisible = true; |
|||
} else if (displayment === 'hover') { |
|||
valueVisible = false; |
|||
_setLabelsState(false); |
|||
} |
|||
} |
|||
} |
|||
|
|||
function getTextColor(index, isLabel = false) { |
|||
if (isLabel) { |
|||
return labelColors[index] || theme.textColor; |
|||
} |
|||
return valueColors[index] || theme.textColor; |
|||
} |
|||
function _setLabelsState(state) { |
|||
if (state) { |
|||
firstLineLabel.visible = firstLineLabel.enabled; |
|||
secondLineLabel.visible = secondLineLabel.enabled; |
|||
thirdLineLabel.visible = thirdLineLabel.enabled; |
|||
} else { |
|||
firstLineLabel.visible = secondLineLabel.visible = thirdLineLabel.visible = false; |
|||
} |
|||
} |
|||
function _setTextAndColor(label, value, isLabel = false) { |
|||
if (!label.enabled) { |
|||
return; |
|||
} |
|||
label.text = value; |
|||
label.color = getTextColor(label.index, isLabel); |
|||
} |
|||
} |
@ -1,47 +0,0 @@ |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.quickcharts 1.0 as Charts |
|||
import "./" as RMBaseGraph |
|||
|
|||
RMBaseGraph.BaseSensorGraph { |
|||
id: root |
|||
|
|||
// Aliases |
|||
property alias chart: chart |
|||
|
|||
// Graph properties |
|||
property color chartColor: theme.highlightColor |
|||
|
|||
// Graph |
|||
Charts.LineChart { |
|||
id: chart |
|||
anchors.fill: parent |
|||
|
|||
direction: Charts.XYChart.ZeroAtEnd |
|||
fillOpacity: plasmoid.configuration.graphFillOpacity / 100 |
|||
smooth: true |
|||
yRange.automatic: false |
|||
|
|||
colorSource: Charts.SingleValueSource { |
|||
value: chartColor |
|||
} |
|||
valueSources: [ |
|||
RMBaseGraph.ArrayDataSource { |
|||
id: chartData |
|||
maximumHistory: plasmoid.configuration.historyAmount |
|||
} |
|||
] |
|||
} |
|||
|
|||
_clear: () => { |
|||
chartData.clear(); |
|||
for (let i = 0; i < sensorsModel.sensors.length; i++) { |
|||
_updateData(i); |
|||
} |
|||
} |
|||
_insertChartData: (column, value) => { |
|||
if (column == 0) { |
|||
chartData.insertValue(value); |
|||
root.chartDataChanged(0); |
|||
} |
|||
} |
|||
} |
@ -1,75 +0,0 @@ |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.quickcharts 1.0 as Charts |
|||
import "./" as RMBaseGraph |
|||
|
|||
RMBaseGraph.BaseSensorGraph { |
|||
id: root |
|||
|
|||
property var uplimits: [100, 100] |
|||
|
|||
// Graph properties |
|||
property var colors: [theme.highlightColor, theme.textColor] |
|||
|
|||
// Bind properties changes |
|||
onUplimitsChanged: { |
|||
firstChart.yRange.to = uplimits[0]; |
|||
secondChart.yRange.to = uplimits[1]; |
|||
} |
|||
|
|||
// Graphs |
|||
Charts.LineChart { |
|||
id: secondChart |
|||
anchors.fill: parent |
|||
|
|||
direction: Charts.XYChart.ZeroAtEnd |
|||
fillOpacity: plasmoid.configuration.graphFillOpacity / 100 |
|||
smooth: true |
|||
yRange.automatic: false |
|||
|
|||
colorSource: Charts.SingleValueSource { |
|||
value: colors[1] |
|||
} |
|||
valueSources: [ |
|||
RMBaseGraph.ArrayDataSource { |
|||
id: secondChartData |
|||
maximumHistory: plasmoid.configuration.historyAmount |
|||
} |
|||
] |
|||
} |
|||
Charts.LineChart { |
|||
id: firstChart |
|||
anchors.fill: parent |
|||
|
|||
direction: Charts.XYChart.ZeroAtEnd |
|||
fillOpacity: plasmoid.configuration.graphFillOpacity / 100 |
|||
smooth: true |
|||
yRange.automatic: false |
|||
|
|||
colorSource: Charts.SingleValueSource { |
|||
value: colors[0] |
|||
} |
|||
valueSources: [ |
|||
RMBaseGraph.ArrayDataSource { |
|||
id: firstChartData |
|||
maximumHistory: plasmoid.configuration.historyAmount |
|||
} |
|||
] |
|||
} |
|||
|
|||
_clear: () => { |
|||
firstChartData.clear() |
|||
secondChartData.clear() |
|||
for (let i = 0; i < sensorsModel.sensors.length; i++) { |
|||
_updateData(i); |
|||
} |
|||
} |
|||
_insertChartData: (column, value) => { |
|||
if (column == 0) { |
|||
firstChartData.insertValue(value); |
|||
root.chartDataChanged(0); |
|||
} else if (column == 1) { |
|||
secondChartData.insertValue(value); |
|||
root.chartDataChanged(1); |
|||
} |
|||
} |
|||
} |
@ -1,72 +0,0 @@ |
|||
import QtQuick 2.0 |
|||
import org.kde.ksysguard.sensors 1.0 as Sensors |
|||
import org.kde.ksysguard.formatter 1.0 as Formatter |
|||
|
|||
// TODO (3.0): remove this |
|||
Sensors.SensorDataModel { |
|||
id: root |
|||
property int _coreCount |
|||
|
|||
property string agregator: "average" // Possible value: average, minimum, maximum |
|||
property bool needManual |
|||
|
|||
signal ready |
|||
|
|||
function getFormattedValue() { |
|||
return Formatter.Formatter.formatValueShowNull(getValue(), 302 /* Formatter.Unit.UnitMegaHertz */); |
|||
} |
|||
|
|||
function getValue() { |
|||
let values = []; |
|||
for (let i = 0; i < _coreCount; i++) { |
|||
values[i] = data(index(0, i), Sensors.SensorDataModel.Value); |
|||
} |
|||
|
|||
// Agregate values |
|||
if (agregator === "average") { |
|||
return values.reduce((a, b) => a + b, 0) / _coreCount; |
|||
} else if (agregator === "minimum") { |
|||
return Math.min(...values); |
|||
} else if (agregator === "maximum") { |
|||
return Math.max(...values); |
|||
} else { |
|||
return undefined; |
|||
} |
|||
} |
|||
|
|||
updateRateLimit: -1 |
|||
Component.onCompleted: { |
|||
sensors = ["cpu/all/coreCount", "cpu/all/" + agregator + "Frequency"]; |
|||
} |
|||
|
|||
property bool _initialized |
|||
property Timer _timer: Timer { |
|||
running: enabled |
|||
interval: 100 // Wait to be sure all sensors metadata has retrieved |
|||
|
|||
onTriggered: { |
|||
/// Prevent running multiple times |
|||
if (_initialized) { |
|||
return; |
|||
} |
|||
_initialized = true; |
|||
|
|||
// Do nothing if all frequency is already exist |
|||
if (hasIndex(0, 1)) { |
|||
root.enabled = false; |
|||
root.ready(); |
|||
return; |
|||
} |
|||
|
|||
// Fill sensors with all cores |
|||
_coreCount = data(index(0, 0)); |
|||
const sensors = []; |
|||
for (let i = 0; i < _coreCount; i++) { |
|||
sensors[i] = "cpu/cpu" + i + "/frequency"; |
|||
} |
|||
root.sensors = sensors; |
|||
root.needManual = true; |
|||
root.ready(); |
|||
} |
|||
} |
|||
} |
@ -1,510 +0,0 @@ |
|||
import QtQuick 2.2 |
|||
import QtQuick.Controls 2.12 as QtControls |
|||
import QtQuick.Layouts 1.15 as QtLayouts |
|||
import org.kde.kirigami 2.6 as Kirigami |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.plasma.core 2.0 as PlasmaCore |
|||
import org.kde.plasma.components 3.0 as PlasmaComponents |
|||
import org.kde.plasma.extras 2.0 as PlasmaExtras |
|||
import "../controls" as RMControls |
|||
import "../components" as RMComponents |
|||
|
|||
PlasmaExtras.Representation { |
|||
id: page |
|||
anchors.fill: parent |
|||
|
|||
// Chart |
|||
property alias cfg_verticalLayout: verticalLayout.checked |
|||
property alias cfg_historyAmount: historyAmount.value |
|||
property alias cfg_customGraphWidth: graphWidth.customized |
|||
property alias cfg_graphWidth: graphWidth.value |
|||
property alias cfg_customGraphHeight: graphHeight.customized |
|||
property alias cfg_graphHeight: graphHeight.value |
|||
property alias cfg_graphMargin: graphMargin.value |
|||
property alias cfg_graphFillOpacity: graphFillOpacity.value |
|||
property var cfg_graphOrders |
|||
|
|||
// Text |
|||
property alias cfg_enableShadows: enableShadows.checked |
|||
property alias cfg_fontScale: fontScale.value |
|||
property string cfg_placement |
|||
property string cfg_displayment |
|||
|
|||
// Colors |
|||
// > CPU |
|||
property alias cfg_customCpuColor: cpuColor.customized |
|||
property alias cfg_cpuColor: cpuColor.value |
|||
property alias cfg_customCpuTemperatureColor: cpuTemperatureColor.customized |
|||
property alias cfg_cpuTemperatureColor: cpuTemperatureColor.value |
|||
// > Memory |
|||
property alias cfg_customRamColor: ramColor.customized |
|||
property alias cfg_ramColor: ramColor.value |
|||
property alias cfg_customSwapColor: swapColor.customized |
|||
property alias cfg_swapColor: swapColor.value |
|||
// > Network |
|||
property alias cfg_customNetDownColor: netDownColor.customized |
|||
property alias cfg_netDownColor: netDownColor.value |
|||
property alias cfg_customNetUpColor: netUpColor.customized |
|||
property alias cfg_netUpColor: netUpColor.value |
|||
// > GPU |
|||
property alias cfg_customGpuColor: gpuColor.customized |
|||
property alias cfg_gpuColor: gpuColor.value |
|||
property alias cfg_customGpuMemoryColor: gpuMemoryColor.customized |
|||
property alias cfg_gpuMemoryColor: gpuMemoryColor.value |
|||
property alias cfg_customGpuTemperatureColor: gpuTemperatureColor.customized |
|||
property alias cfg_gpuTemperatureColor: gpuTemperatureColor.value |
|||
// > Disk |
|||
property alias cfg_customDiskReadColor: diskReadColor.customized |
|||
property alias cfg_diskReadColor: diskReadColor.value |
|||
property alias cfg_customDiskWriteColor: diskWriteColor.customized |
|||
property alias cfg_diskWriteColor: diskWriteColor.value |
|||
// > Threshold |
|||
property alias cfg_customWarningColor: warningColor.customized |
|||
property alias cfg_warningColor: warningColor.value |
|||
property alias cfg_customCriticalColor: criticalColor.customized |
|||
property alias cfg_criticalColor: criticalColor.value |
|||
|
|||
property color textColor: theme.textColor |
|||
property color primaryColor: theme.highlightColor |
|||
property color positiveColor: theme.positiveTextColor |
|||
property color neutralColor: theme.neutralTextColor |
|||
property color negativeColor: theme.negativeTextColor |
|||
|
|||
property var monitors: { |
|||
"cpu": { |
|||
"id": "cpu", |
|||
"name": i18nc("Chart name", "CPU"), |
|||
"icon": "cpu-symbolic" |
|||
}, |
|||
"memory": { |
|||
"id": "memory", |
|||
"name": i18nc("Chart name", "Memory"), |
|||
"icon": "memory-symbolic" |
|||
}, |
|||
"gpu": { |
|||
"id": "gpu", |
|||
"name": i18nc("Chart name", "GPU"), |
|||
"icon": "freon-gpu-temperature-symbolic" |
|||
}, |
|||
"disks": { |
|||
"id": "disks", |
|||
"name": i18nc("Chart name", "Disks I/O"), |
|||
"icon": "drive-harddisk-symbolic" |
|||
}, |
|||
"network": { |
|||
"id": "network", |
|||
"name": i18nc("Chart name", "Network"), |
|||
"icon": "network-wired-symbolic" |
|||
} |
|||
} |
|||
|
|||
// Tab bar |
|||
header: PlasmaExtras.PlasmoidHeading { |
|||
location: PlasmaExtras.PlasmoidHeading.Location.Header |
|||
|
|||
PlasmaComponents.TabBar { |
|||
id: bar |
|||
|
|||
position: PlasmaComponents.TabBar.Header |
|||
anchors.fill: parent |
|||
implicitHeight: contentHeight |
|||
|
|||
PlasmaComponents.TabButton { |
|||
icon.name: "office-chart-line-stacked" |
|||
icon.height: PlasmaCore.Units.iconSizes.smallMedium |
|||
text: i18nc("Config header", "Charts") |
|||
} |
|||
PlasmaComponents.TabButton { |
|||
icon.name: "dialog-text-and-font" |
|||
icon.height: PlasmaCore.Units.iconSizes.smallMedium |
|||
text: i18nc("Config header", "Text") |
|||
} |
|||
PlasmaComponents.TabButton { |
|||
icon.name: "color-select" |
|||
icon.height: PlasmaCore.Units.iconSizes.smallMedium |
|||
text: i18nc("Config header", "Colors") |
|||
} |
|||
} |
|||
} |
|||
|
|||
QtLayouts.StackLayout { |
|||
id: pageContent |
|||
anchors.fill: parent |
|||
currentIndex: bar.currentIndex |
|||
|
|||
// Charts |
|||
Kirigami.ScrollablePage { |
|||
Kirigami.FormLayout { |
|||
id: graphPage |
|||
wideMode: true |
|||
|
|||
QtControls.CheckBox { |
|||
id: verticalLayout |
|||
text: i18n("Vertical layout") |
|||
} |
|||
|
|||
RMControls.SpinBox { |
|||
id: historyAmount |
|||
Kirigami.FormData.label: i18n("History amount:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
from: 2 |
|||
} |
|||
|
|||
RMControls.CustomizableSize { |
|||
id: graphWidth |
|||
Kirigami.FormData.label: i18n("Width:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
from: 1 |
|||
to: 1000 |
|||
} |
|||
RMControls.CustomizableSize { |
|||
id: graphHeight |
|||
Kirigami.FormData.label: i18n("Height:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
from: 1 |
|||
to: 1000 |
|||
} |
|||
RMControls.SpinBox { |
|||
id: graphMargin |
|||
Kirigami.FormData.label: i18n("Margin:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
from: 1 |
|||
to: 1000 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return valueToText(value, locale) + " px"; |
|||
} |
|||
} |
|||
RMControls.SpinBox { |
|||
id: graphFillOpacity |
|||
Kirigami.FormData.label: i18n("Fill opacity:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
from: 1 |
|||
to: 100 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return valueToText(value, locale) + "%"; |
|||
} |
|||
} |
|||
|
|||
// order |
|||
Item { |
|||
Kirigami.FormData.label: i18n("Charts order") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
ListView { |
|||
id: graphsList |
|||
anchors.left: parent.left |
|||
anchors.right: parent.right |
|||
|
|||
clip: true |
|||
interactive: false |
|||
|
|||
property int listViewHeight: 0 |
|||
implicitHeight: listViewHeight |
|||
|
|||
model: ListModel { |
|||
Component.onCompleted: cfg_graphOrders.map(id => monitors[id]).forEach(item => append(item)) |
|||
|
|||
function toJS() { |
|||
const result = []; |
|||
for (let i = 0; i < count; i++) { |
|||
result.push(get(i)); |
|||
} |
|||
return result; |
|||
} |
|||
} |
|||
|
|||
delegate: Kirigami.DelegateRecycler { |
|||
width: graphsList.width |
|||
sourceComponent: delegateComponent |
|||
|
|||
Component.onCompleted: { |
|||
graphsList.listViewHeight += height + 1; |
|||
} |
|||
} |
|||
|
|||
moveDisplaced: Transition { |
|||
YAnimator { |
|||
duration: Kirigami.Units.longDuration |
|||
easing.type: Easing.InOutQuad |
|||
} |
|||
} |
|||
|
|||
Component { |
|||
id: delegateComponent |
|||
Kirigami.AbstractListItem { |
|||
id: listItem |
|||
|
|||
backgroundColor: theme.headerBackgroundColor |
|||
separatorVisible: true |
|||
|
|||
contentItem: QtLayouts.RowLayout { |
|||
spacing: Kirigami.Units.largeSpacing |
|||
|
|||
Kirigami.ListItemDragHandle { |
|||
listView: graphsList |
|||
listItem: listItem |
|||
onMoveRequested: graphsList.model.move(oldIndex, newIndex, 1) |
|||
|
|||
onDropped: { |
|||
cfg_graphOrders = graphsList.model.toJS().map(item => item.id); |
|||
} |
|||
} |
|||
|
|||
PlasmaCore.IconItem { |
|||
source: model.icon |
|||
width: PlasmaCore.Units.iconSizes.smallMedium |
|||
height: width |
|||
} |
|||
PlasmaComponents.Label { |
|||
text: model.name |
|||
QtLayouts.Layout.fillWidth: true |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Text |
|||
Kirigami.ScrollablePage { |
|||
Kirigami.FormLayout { |
|||
id: textPage |
|||
wideMode: true |
|||
|
|||
QtControls.CheckBox { |
|||
id: enableShadows |
|||
text: i18n("Drop shadows") |
|||
} |
|||
|
|||
RMControls.SpinBox { |
|||
id: fontScale |
|||
Kirigami.FormData.label: i18n("Font scale:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
from: 1 |
|||
to: 100 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return valueToText(value, locale) + "%"; |
|||
} |
|||
} |
|||
|
|||
QtControls.ComboBox { |
|||
id: displayment |
|||
Kirigami.FormData.label: i18n("Text displayment:") |
|||
|
|||
currentIndex: -1 |
|||
textRole: "label" |
|||
valueRole: "name" |
|||
model: [{ |
|||
"label": i18nc("Text displayment", "Always"), |
|||
"name": "always" |
|||
}, { |
|||
"label": i18nc("Text displayment", "On hover"), |
|||
"name": "hover" |
|||
}, { |
|||
"label": i18nc("Text displayment", "Hints when hover"), |
|||
"name": "hover-hints" |
|||
}] |
|||
|
|||
onActivated: cfg_displayment = currentValue |
|||
Component.onCompleted: currentIndex = indexOfValue(cfg_displayment) |
|||
} |
|||
|
|||
QtControls.ComboBox { |
|||
id: placement |
|||
Kirigami.FormData.label: i18n("Placement:") |
|||
|
|||
currentIndex: -1 |
|||
textRole: "label" |
|||
valueRole: "name" |
|||
model: [{ |
|||
"label": i18nc("Text placement", "Top left"), |
|||
"name": "top-left" |
|||
}, { |
|||
"label": i18nc("Text placement", "Top right"), |
|||
"name": "top-right" |
|||
}, { |
|||
"label": i18nc("Text placement", "Bottom left"), |
|||
"name": "bottom-left" |
|||
}, { |
|||
"label": i18nc("Text placement", "Bottom right"), |
|||
"name": "bottom-right" |
|||
}] |
|||
|
|||
onActivated: cfg_placement = currentValue |
|||
Component.onCompleted: currentIndex = indexOfValue(cfg_placement) |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Colors |
|||
Kirigami.ScrollablePage { |
|||
Kirigami.FormLayout { |
|||
id: colorsPage |
|||
|
|||
// Charts |
|||
Kirigami.Separator { |
|||
Kirigami.FormData.label: i18n("Charts colors") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
// > CPU |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "CPU") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
RMControls.ColorSelector { |
|||
id: cpuColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Usage:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose series color") |
|||
defaultColor: primaryColor |
|||
} |
|||
RMControls.ColorSelector { |
|||
id: cpuTemperatureColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Temperature:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose text color") |
|||
defaultColor: textColor |
|||
} |
|||
|
|||
// > Memory |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "Memory") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
RMControls.ColorSelector { |
|||
id: ramColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Physical:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose series color") |
|||
defaultColor: primaryColor |
|||
} |
|||
RMControls.ColorSelector { |
|||
id: swapColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Swap:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose color of series and text") |
|||
defaultColor: negativeColor |
|||
} |
|||
|
|||
// > Network |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "Network") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
RMControls.ColorSelector { |
|||
id: netDownColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Receiving:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose series color") |
|||
defaultColor: primaryColor |
|||
} |
|||
RMControls.ColorSelector { |
|||
id: netUpColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Sending:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose series color") |
|||
defaultColor: positiveColor |
|||
} |
|||
|
|||
// > GPU |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "GPU") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
RMControls.ColorSelector { |
|||
id: gpuColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Usage:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose series color") |
|||
defaultColor: primaryColor |
|||
} |
|||
RMControls.ColorSelector { |
|||
id: gpuMemoryColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Memory:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose series color") |
|||
defaultColor: positiveColor |
|||
} |
|||
RMControls.ColorSelector { |
|||
id: gpuTemperatureColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Temperature:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose text color") |
|||
defaultColor: textColor |
|||
} |
|||
|
|||
// > Disk I/O |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "Disks I/O") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
RMControls.ColorSelector { |
|||
id: diskReadColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Read:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose series color") |
|||
defaultColor: primaryColor |
|||
} |
|||
RMControls.ColorSelector { |
|||
id: diskWriteColor |
|||
Kirigami.FormData.label: i18nc("Chart config", "Write:") |
|||
|
|||
dialogTitle: i18nc("Chart color", "Choose series color") |
|||
defaultColor: positiveColor |
|||
} |
|||
|
|||
// Thresholds |
|||
Kirigami.Separator { |
|||
Kirigami.FormData.label: i18n("Threshold text colors") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
RMControls.ColorSelector { |
|||
id: warningColor |
|||
Kirigami.FormData.label: i18n("Warning status:") |
|||
|
|||
dialogTitle: i18n("Choose text color when the value is in warning status") |
|||
defaultColor: neutralColor |
|||
} |
|||
RMControls.ColorSelector { |
|||
id: criticalColor |
|||
Kirigami.FormData.label: i18n("Critical status:") |
|||
|
|||
dialogTitle: i18n("Choose text color when the value is in critical status") |
|||
defaultColor: negativeColor |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
@ -1,451 +0,0 @@ |
|||
import QtQuick 2.2 |
|||
import QtQuick.Controls 2.12 as QtControls |
|||
import QtQuick.Layouts 1.15 as QtLayouts |
|||
import org.kde.kirigami 2.6 as Kirigami |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.plasma.core 2.0 as PlasmaCore |
|||
import org.kde.plasma.components 3.0 as PlasmaComponents |
|||
import org.kde.plasma.extras 2.0 as PlasmaExtras |
|||
import "../components" as RMComponents |
|||
import "../controls" as RMControls |
|||
import "../components/functions.js" as Functions |
|||
|
|||
PlasmaExtras.Representation { |
|||
id: dataPage |
|||
anchors.fill: parent |
|||
|
|||
// Network |
|||
readonly property var networkDialect: Functions.getNetworkDialectInfo(plasmoid.configuration.networkUnit) |
|||
property var cfg_ignoredNetworkInterfaces |
|||
property alias cfg_networkReceivingTotal: networkReceiving.realValue |
|||
property alias cfg_networkSendingTotal: networkSending.realValue |
|||
|
|||
// Disks I/O |
|||
property alias cfg_diskReadTotal: diskRead.realValue |
|||
property alias cfg_diskWriteTotal: diskWrite.realValue |
|||
|
|||
// GPU |
|||
property string cfg_gpuIndex |
|||
|
|||
// Thresholds |
|||
property alias cfg_thresholdWarningCpuTemp: thresholdWarningCpuTemp.realValue |
|||
property alias cfg_thresholdCriticalCpuTemp: thresholdCriticalCpuTemp.realValue |
|||
property alias cfg_thresholdWarningMemory: thresholdWarningMemory.value |
|||
property alias cfg_thresholdCriticalMemory: thresholdCriticalMemory.value |
|||
property alias cfg_thresholdWarningGpuTemp: thresholdWarningGpuTemp.realValue |
|||
property alias cfg_thresholdCriticalGpuTemp: thresholdCriticalGpuTemp.realValue |
|||
|
|||
readonly property var networkSpeedOptions: [{ |
|||
"label": i18n("Custom"), |
|||
"value": -1 |
|||
}, { |
|||
"label": "100 " + networkDialect.kiloChar + networkDialect.suffix, |
|||
"value": 100.0 |
|||
}, { |
|||
"label": "1 M" + networkDialect.suffix, |
|||
"value": 1000.0 |
|||
}, { |
|||
"label": "10 M" + networkDialect.suffix, |
|||
"value": 10000.0 |
|||
}, { |
|||
"label": "100 M" + networkDialect.suffix, |
|||
"value": 100000.0 |
|||
}, { |
|||
"label": "1 G" + networkDialect.suffix, |
|||
"value": 1000000.0 |
|||
}, { |
|||
"label": "2.5 G" + networkDialect.suffix, |
|||
"value": 2500000.0 |
|||
}, { |
|||
"label": "5 G" + networkDialect.suffix, |
|||
"value": 5000000.0 |
|||
}, { |
|||
"label": "10 G" + networkDialect.suffix, |
|||
"value": 10000000.0 |
|||
}] |
|||
readonly property var diskSpeedOptions: [{ |
|||
"label": i18n("Custom"), |
|||
"value": -1 |
|||
}, { |
|||
"label": "10 MiB/s", |
|||
"value": 10000.0 |
|||
}, { |
|||
"label": "100 MiB/s", |
|||
"value": 100000.0 |
|||
}, { |
|||
"label": "200 MiB/s", |
|||
"value": 200000.0 |
|||
}, { |
|||
"label": "500 MiB/s", |
|||
"value": 500000.0 |
|||
}, { |
|||
"label": "1 GiB/s", |
|||
"value": 1000000.0 |
|||
}, { |
|||
"label": "2 GiB/s", |
|||
"value": 2000000.0 |
|||
}, { |
|||
"label": "5 GiB/s", |
|||
"value": 5000000.0 |
|||
}, { |
|||
"label": "10 GiB/s", |
|||
"value": 10000000.0 |
|||
}] |
|||
|
|||
// Detect network interfaces |
|||
RMComponents.NetworkInterfaceDetector { |
|||
id: networkInterfaces |
|||
} |
|||
// Detect GPU cards |
|||
RMComponents.GpuDetector { |
|||
id: gpuCards |
|||
|
|||
onReady: gpuCardSelector.select() |
|||
} |
|||
|
|||
// Tab bar |
|||
header: PlasmaExtras.PlasmoidHeading { |
|||
location: PlasmaExtras.PlasmoidHeading.Location.Header |
|||
|
|||
PlasmaComponents.TabBar { |
|||
id: bar |
|||
|
|||
position: PlasmaComponents.TabBar.Header |
|||
anchors.fill: parent |
|||
implicitHeight: contentHeight |
|||
|
|||
PlasmaComponents.TabButton { |
|||
icon.name: "settings" |
|||
icon.height: PlasmaCore.Units.iconSizes.smallMedium |
|||
text: i18nc("Config header", "General") |
|||
} |
|||
PlasmaComponents.TabButton { |
|||
icon.name: "dialog-warning" |
|||
icon.height: PlasmaCore.Units.iconSizes.smallMedium |
|||
text: i18nc("Config header", "Thresholds") |
|||
} |
|||
} |
|||
} |
|||
|
|||
QtLayouts.StackLayout { |
|||
id: pageContent |
|||
anchors.fill: parent |
|||
currentIndex: bar.currentIndex |
|||
|
|||
// General |
|||
Kirigami.ScrollablePage { |
|||
Kirigami.FormLayout { |
|||
wideMode: true |
|||
|
|||
// Network |
|||
Kirigami.Separator { |
|||
Kirigami.FormData.label: i18nc("Chart name", "Network") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
// Interfaces |
|||
QtLayouts.GridLayout { |
|||
Kirigami.FormData.label: i18n("Network interfaces:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
|
|||
columns: 2 |
|||
rowSpacing: Kirigami.Units.smallSpacing |
|||
columnSpacing: Kirigami.Units.largeSpacing |
|||
|
|||
Repeater { |
|||
model: networkInterfaces.model |
|||
QtControls.CheckBox { |
|||
readonly property string interfaceName: modelData |
|||
readonly property bool ignoredByDefault: { |
|||
return /^(docker|tun|tap)(\d+)/.test(interfaceName); // Ignore docker and tun/tap networks |
|||
} |
|||
|
|||
text: interfaceName |
|||
checked: cfg_ignoredNetworkInterfaces.indexOf(interfaceName) == -1 && !ignoredByDefault |
|||
enabled: !ignoredByDefault |
|||
|
|||
onClicked: { |
|||
var ignoredNetworkInterfaces = cfg_ignoredNetworkInterfaces.slice(0); // copy() |
|||
if (checked) { |
|||
// Checking, and thus removing from the ignoredNetworkInterfaces |
|||
var i = ignoredNetworkInterfaces.indexOf(interfaceName); |
|||
ignoredNetworkInterfaces.splice(i, 1); |
|||
} else { |
|||
// Unchecking, and thus adding to the ignoredNetworkInterfaces |
|||
ignoredNetworkInterfaces.push(interfaceName); |
|||
} |
|||
cfg_ignoredNetworkInterfaces = ignoredNetworkInterfaces; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Transfer speed |
|||
Item { |
|||
Kirigami.FormData.label: i18n("Maximum transfer speed") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
RMControls.PredefinedSpinBox { |
|||
id: networkReceiving |
|||
Kirigami.FormData.label: i18nc("Chart config", "Receiving:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
QtLayouts.Layout.minimumWidth: predefinedChoices.currentIndex == 0 ? 300 : 0 |
|||
factor: 1000 |
|||
|
|||
predefinedChoices { |
|||
textRole: "label" |
|||
valueRole: "value" |
|||
model: networkSpeedOptions |
|||
} |
|||
|
|||
spinBox { |
|||
decimals: 3 |
|||
stepSize: 1 |
|||
minimumValue: 0.001 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return spinBox.valueToText(value, locale) + " M" + networkDialect.suffix; |
|||
} |
|||
} |
|||
} |
|||
|
|||
RMControls.PredefinedSpinBox { |
|||
id: networkSending |
|||
Kirigami.FormData.label: i18nc("Chart config", "Sending:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
QtLayouts.Layout.minimumWidth: predefinedChoices.currentIndex == 0 ? 300 : 0 |
|||
factor: 1000 |
|||
|
|||
predefinedChoices { |
|||
textRole: "label" |
|||
valueRole: "value" |
|||
model: networkSpeedOptions |
|||
} |
|||
|
|||
spinBox { |
|||
decimals: 3 |
|||
stepSize: 1 |
|||
minimumValue: 0.001 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return spinBox.valueToText(value, locale) + " M" + networkDialect.suffix; |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Disk I/O |
|||
Kirigami.Separator { |
|||
Kirigami.FormData.label: i18nc("Chart name", "Disks I/O") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
Item { |
|||
Kirigami.FormData.label: i18n("Maximum transfer speed") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
RMControls.PredefinedSpinBox { |
|||
id: diskRead |
|||
Kirigami.FormData.label: i18nc("Chart config", "Read:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
QtLayouts.Layout.minimumWidth: predefinedChoices.currentIndex == 0 ? 300 : 0 |
|||
factor: 1000 |
|||
|
|||
predefinedChoices { |
|||
textRole: "label" |
|||
valueRole: "value" |
|||
model: diskSpeedOptions |
|||
} |
|||
|
|||
spinBox { |
|||
decimals: 3 |
|||
stepSize: 1 |
|||
minimumValue: 0.001 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return spinBox.valueToText(value, locale) + " M" + networkDialect.suffix; |
|||
} |
|||
} |
|||
} |
|||
|
|||
RMControls.PredefinedSpinBox { |
|||
id: diskWrite |
|||
Kirigami.FormData.label: i18nc("Chart config", "Write:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
QtLayouts.Layout.minimumWidth: predefinedChoices.currentIndex == 0 ? 300 : 0 |
|||
factor: 1000 |
|||
|
|||
predefinedChoices { |
|||
textRole: "label" |
|||
valueRole: "value" |
|||
model: diskSpeedOptions |
|||
} |
|||
|
|||
spinBox { |
|||
decimals: 3 |
|||
stepSize: 1 |
|||
minimumValue: 0.001 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return spinBox.valueToText(value, locale) + " M" + networkDialect.suffix; |
|||
} |
|||
} |
|||
} |
|||
|
|||
// GPU |
|||
Kirigami.Separator { |
|||
Kirigami.FormData.label: i18nc("Config header", "Graphic card") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
QtControls.ComboBox { |
|||
id: gpuCardSelector |
|||
QtLayouts.Layout.fillWidth: true |
|||
Kirigami.FormData.label: i18n("Graphic card:") |
|||
|
|||
currentIndex: -1 |
|||
textRole: "name" |
|||
valueRole: "index" |
|||
model: gpuCards.model |
|||
|
|||
onActivated: cfg_gpuIndex = currentValue |
|||
function select() { |
|||
currentIndex = indexOfValue(cfg_gpuIndex); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Thresholds |
|||
Kirigami.ScrollablePage { |
|||
Kirigami.FormLayout { |
|||
id: thresholdsPage |
|||
wideMode: true |
|||
|
|||
property double kirigamiWidth: preferredWidth * 2 + Kirigami.Units.largeSpacing |
|||
property double preferredWidth: { |
|||
const minimumWidth = Math.max(80, warningHeader.contentWidth, criticalHeader.contentWidth); |
|||
return Math.max(minimumWidth, |
|||
// CPU |
|||
thresholdWarningCpuTemp.implicitWidth, thresholdCriticalCpuTemp.implicitWidth, |
|||
// Memory |
|||
thresholdWarningMemory.implicitWidth, thresholdCriticalMemory.implicitWidth, |
|||
// Memory |
|||
thresholdWarningMemory.implicitWidth, thresholdCriticalMemory.implicitWidth, |
|||
// GPU |
|||
thresholdWarningGpuTemp.implicitWidth, thresholdCriticalGpuTemp.implicitWidth); |
|||
} |
|||
|
|||
// Header |
|||
QtLayouts.RowLayout { |
|||
QtLayouts.Layout.fillWidth: true |
|||
spacing: Kirigami.Units.largeSpacing |
|||
|
|||
PlasmaComponents.Label { |
|||
id: warningHeader |
|||
text: i18n("Warning") |
|||
font.pointSize: PlasmaCore.Theme.defaultFont.pointSize * 1.2 |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth |
|||
} |
|||
|
|||
PlasmaComponents.Label { |
|||
id: criticalHeader |
|||
text: i18n("Critical") |
|||
font.pointSize: PlasmaCore.Theme.defaultFont.pointSize * 1.2 |
|||
} |
|||
} |
|||
|
|||
// CPU Temperature |
|||
QtLayouts.RowLayout { |
|||
Kirigami.FormData.label: i18n("CPU Temperature:") |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.kirigamiWidth |
|||
spacing: Kirigami.Units.largeSpacing |
|||
|
|||
RMControls.SpinBox { |
|||
id: thresholdWarningCpuTemp |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth |
|||
decimals: 1 |
|||
stepSize: 1 |
|||
minimumValue: 0.1 |
|||
maximumValue: 120 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return valueToText(value, locale) + " °C"; |
|||
} |
|||
} |
|||
RMControls.SpinBox { |
|||
id: thresholdCriticalCpuTemp |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth |
|||
decimals: 1 |
|||
stepSize: 1 |
|||
minimumValue: 0.1 |
|||
maximumValue: 120 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return valueToText(value, locale) + " °C"; |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Memory usage |
|||
QtLayouts.RowLayout { |
|||
Kirigami.FormData.label: i18n("Physical Memory Usage:") |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.kirigamiWidth |
|||
spacing: Kirigami.Units.largeSpacing |
|||
|
|||
RMControls.SpinBox { |
|||
id: thresholdWarningMemory |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return value + " %"; |
|||
} |
|||
} |
|||
RMControls.SpinBox { |
|||
id: thresholdCriticalMemory |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return value + " %"; |
|||
} |
|||
} |
|||
} |
|||
|
|||
// GPU Temperature |
|||
QtLayouts.RowLayout { |
|||
Kirigami.FormData.label: i18n("GPU Temperature:") |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.kirigamiWidth |
|||
spacing: Kirigami.Units.largeSpacing |
|||
|
|||
RMControls.SpinBox { |
|||
id: thresholdWarningGpuTemp |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth |
|||
|
|||
decimals: 1 |
|||
stepSize: 1 |
|||
minimumValue: 0.1 |
|||
maximumValue: 120 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return valueToText(value, locale) + " °C"; |
|||
} |
|||
} |
|||
RMControls.SpinBox { |
|||
id: thresholdCriticalGpuTemp |
|||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth |
|||
|
|||
decimals: 1 |
|||
stepSize: 1 |
|||
minimumValue: 0.1 |
|||
maximumValue: 120 |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return valueToText(value, locale) + " °C"; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
@ -1,453 +0,0 @@ |
|||
import QtQuick 2.2 |
|||
import QtQuick.Controls 2.12 as QtControls |
|||
import QtQuick.Layouts 1.15 as QtLayouts |
|||
import org.kde.kirigami 2.6 as Kirigami |
|||
import org.kde.plasma.core 2.0 as PlasmaCore |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.plasma.components 2.0 as PC2 |
|||
import org.kde.plasma.components 3.0 as PlasmaComponents |
|||
import org.kde.plasma.extras 2.0 as PlasmaExtras |
|||
import "../components" as RMComponents |
|||
import "../controls" as RMControls |
|||
|
|||
PlasmaExtras.Representation { |
|||
id: page |
|||
anchors.fill: parent |
|||
|
|||
// Charts |
|||
property alias cfg_updateInterval: updateInterval.realValue |
|||
// > CPU |
|||
property bool cfg_showCpuMonitor |
|||
property string cfg_cpuUnit |
|||
property bool cfg_showClock |
|||
property string cfg_clockAgregator |
|||
property alias cfg_showCpuTemperature: showCpuTemperature.checked |
|||
// > Memory |
|||
property bool cfg_showRamMonitor |
|||
property string cfg_memoryUnit |
|||
property alias cfg_memorySwapGraph: memorySwapGraph.checked |
|||
// > Network |
|||
property bool cfg_showNetMonitor |
|||
property string cfg_networkUnit |
|||
// > GPU |
|||
property alias cfg_showGpuMonitor: showGpuMonitor.checked |
|||
property alias cfg_gpuMemoryInPercent: gpuMemoryInPercent.checked |
|||
property alias cfg_gpuMemoryGraph: gpuMemoryGraph.checked |
|||
property alias cfg_showGpuTemperature: showGpuTemperature.checked |
|||
// > Disks I/O |
|||
property alias cfg_showDiskMonitor: showDiskMonitor.checked |
|||
|
|||
// Click action |
|||
property string cfg_actionService |
|||
|
|||
// Apps model |
|||
RMComponents.AppsDetector { |
|||
id: appsModel |
|||
|
|||
filterString: appsFilter.text |
|||
filterCallback: function (index, value) { |
|||
var search = filterString.toLowerCase(); |
|||
if (search.length === 0) { |
|||
return true; |
|||
} |
|||
if (value.toLowerCase().indexOf(search) !== -1) { |
|||
return true; |
|||
} |
|||
if (sourceModel.get(index).menuId.replace(".desktop", "").toLowerCase().indexOf(search) !== -1) { |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
onFilterStringChanged: appsList.updateCurrentIndex() |
|||
} |
|||
|
|||
// Tab bar |
|||
header: PlasmaExtras.PlasmoidHeading { |
|||
location: PlasmaExtras.PlasmoidHeading.Location.Header |
|||
|
|||
PlasmaComponents.TabBar { |
|||
id: bar |
|||
|
|||
position: PlasmaComponents.TabBar.Header |
|||
anchors.fill: parent |
|||
implicitHeight: contentHeight |
|||
|
|||
PlasmaComponents.TabButton { |
|||
icon.name: "settings" |
|||
icon.height: PlasmaCore.Units.iconSizes.smallMedium |
|||
text: i18nc("Config header", "General") |
|||
} |
|||
PlasmaComponents.TabButton { |
|||
icon.name: "input-mouse-symbolic" |
|||
icon.height: PlasmaCore.Units.iconSizes.smallMedium |
|||
text: i18nc("Config header", "Click action") |
|||
} |
|||
} |
|||
} |
|||
|
|||
QtLayouts.StackLayout { |
|||
id: pageContent |
|||
anchors.fill: parent |
|||
currentIndex: bar.currentIndex |
|||
|
|||
// General |
|||
Kirigami.ScrollablePage { |
|||
Kirigami.FormLayout { |
|||
wideMode: true |
|||
|
|||
RMControls.SpinBox { |
|||
id: updateInterval |
|||
Kirigami.FormData.label: i18n("Update interval:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
|
|||
decimals: 1 |
|||
minimumValue: 0.1 |
|||
maximumValue: 3600.0 |
|||
stepSize: Math.round(0.1 * factor) |
|||
|
|||
textFromValue: function (value, locale) { |
|||
return i18n("%1 seconds", valueToText(value, locale)); |
|||
} |
|||
} |
|||
|
|||
// Charts |
|||
Kirigami.Separator { |
|||
Kirigami.FormData.label: i18nc("Config header", "Charts") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
// CPU |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "CPU") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
QtControls.ComboBox { |
|||
QtLayouts.Layout.fillWidth: true |
|||
Kirigami.FormData.label: i18n("Visibility:") |
|||
|
|||
currentIndex: -1 |
|||
textRole: "label" |
|||
valueRole: "value" |
|||
model: [{ |
|||
"label": i18n("Disabled"), |
|||
"value": "none" |
|||
}, { |
|||
"label": i18n("Total usage"), |
|||
"value": "usage" |
|||
}, { |
|||
"label": i18n("System usage"), |
|||
"value": "system" |
|||
}, { |
|||
"label": i18n("User usage"), |
|||
"value": "user" |
|||
}] |
|||
|
|||
onActivated: { |
|||
if (currentValue === "none") { |
|||
cfg_showCpuMonitor = false; |
|||
} else { |
|||
cfg_showCpuMonitor = true; |
|||
cfg_cpuUnit = currentValue; |
|||
} |
|||
} |
|||
Component.onCompleted: { |
|||
// TODO (3.0): Merge "cfg_showCpuMonitor" and "cfg_cpuUnit" |
|||
currentIndex = cfg_showCpuMonitor ? indexOfValue(cfg_cpuUnit) : 0; |
|||
} |
|||
} |
|||
|
|||
QtControls.ComboBox { |
|||
QtLayouts.Layout.fillWidth: true |
|||
Kirigami.FormData.label: i18n("Clock visibility:") |
|||
enabled: cfg_showCpuMonitor |
|||
|
|||
currentIndex: -1 |
|||
textRole: "label" |
|||
valueRole: "value" |
|||
model: [{ |
|||
"label": i18n("Disabled"), |
|||
"value": "none" |
|||
}, { |
|||
"label": i18nc("Agregator", "Average"), |
|||
"value": "average" |
|||
}, { |
|||
"label": i18nc("Agregator", "Minimum"), |
|||
"value": "minimum" |
|||
}, { |
|||
"label": i18nc("Agregator", "Maximum"), |
|||
"value": "maximum" |
|||
}] |
|||
|
|||
onActivated: { |
|||
if (currentValue === "none") { |
|||
cfg_showClock = false; |
|||
} else { |
|||
cfg_showClock = true; |
|||
cfg_clockAgregator = currentValue; |
|||
} |
|||
} |
|||
Component.onCompleted: { |
|||
// TODO (3.0): Merge "cfg_showClock" and "cfg_clockAgregator" |
|||
currentIndex = cfg_showClock ? indexOfValue(cfg_clockAgregator) : 0; |
|||
} |
|||
} |
|||
|
|||
QtControls.CheckBox { |
|||
id: showCpuTemperature |
|||
text: i18n("Show temperature") |
|||
enabled: cfg_showCpuMonitor |
|||
} |
|||
|
|||
// Memory |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "Memory") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
QtControls.ComboBox { |
|||
QtLayouts.Layout.fillWidth: true |
|||
Kirigami.FormData.label: i18n("Visibility:") |
|||
|
|||
currentIndex: -1 |
|||
textRole: "label" |
|||
valueRole: "value" |
|||
model: [{ |
|||
"label": i18n("Disabled"), |
|||
"value": "none" |
|||
}, { |
|||
"label": i18n("Physical memory (in KiB)"), |
|||
"value": "physical" |
|||
}, { |
|||
"label": i18n("Physical memory (in %)"), |
|||
"value": "physical-percent" |
|||
}, { |
|||
"label": i18n("Application memory (in KiB)"), |
|||
"value": "application" |
|||
}, { |
|||
"label": i18n("Application memory (in %)"), |
|||
"value": "application-percent" |
|||
}] |
|||
|
|||
onActivated: { |
|||
if (currentValue === "none") { |
|||
cfg_showRamMonitor = false; |
|||
} else { |
|||
cfg_showRamMonitor = true; |
|||
cfg_memoryUnit = currentValue; |
|||
} |
|||
} |
|||
Component.onCompleted: { |
|||
// TODO (3.0): Merge "cfg_showRamMonitor" and "cfg_memoryUnit" |
|||
currentIndex = cfg_showRamMonitor ? indexOfValue(cfg_memoryUnit) : 0; |
|||
} |
|||
} |
|||
|
|||
QtLayouts.GridLayout { |
|||
QtLayouts.Layout.fillWidth: true |
|||
columns: 2 |
|||
rowSpacing: Kirigami.Units.smallSpacing |
|||
columnSpacing: Kirigami.Units.largeSpacing |
|||
|
|||
QtControls.CheckBox { |
|||
id: memorySwapGraph |
|||
text: i18n("Show swap") |
|||
enabled: cfg_showRamMonitor |
|||
} |
|||
} |
|||
|
|||
// Network |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "Network") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
QtControls.ComboBox { |
|||
QtLayouts.Layout.fillWidth: true |
|||
Kirigami.FormData.label: i18n("Visibility:") |
|||
|
|||
currentIndex: -1 |
|||
textRole: "label" |
|||
valueRole: "value" |
|||
model: [{ |
|||
"label": i18n("Disabled"), |
|||
"value": "none" |
|||
}, { |
|||
"label": i18n("In kibibyte (KiB/s)"), |
|||
"value": "kibibyte" |
|||
}, { |
|||
"label": i18n("In kilobit (Kbps)"), |
|||
"value": "kilobit" |
|||
}, { |
|||
"label": i18n("In kilobyte (KBps)"), |
|||
"value": "kilobyte" |
|||
}] |
|||
|
|||
onActivated: { |
|||
if (currentValue === "none") { |
|||
cfg_showNetMonitor = false; |
|||
} else { |
|||
cfg_showNetMonitor = true; |
|||
cfg_networkUnit = currentValue; |
|||
} |
|||
} |
|||
Component.onCompleted: { |
|||
// TODO (3.0): Merge "cfg_showNetMonitor" and "cfg_networkUnit" |
|||
currentIndex = cfg_showNetMonitor ? indexOfValue(cfg_networkUnit) : 0; |
|||
} |
|||
} |
|||
|
|||
// GPU |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "GPU") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
QtLayouts.GridLayout { |
|||
QtLayouts.Layout.fillWidth: true |
|||
columns: 2 |
|||
rowSpacing: Kirigami.Units.smallSpacing |
|||
columnSpacing: Kirigami.Units.largeSpacing |
|||
|
|||
QtControls.CheckBox { |
|||
id: showGpuMonitor |
|||
text: i18n("Enabled?") |
|||
} |
|||
QtControls.CheckBox { |
|||
id: gpuMemoryGraph |
|||
text: i18n("Show memory") |
|||
enabled: showGpuMonitor.checked |
|||
} |
|||
QtControls.CheckBox { |
|||
id: gpuMemoryInPercent |
|||
text: i18n("Memory in percent") |
|||
enabled: showGpuMonitor.checked |
|||
} |
|||
QtControls.CheckBox { |
|||
id: showGpuTemperature |
|||
text: i18n("Show temperature") |
|||
enabled: showGpuMonitor.checked |
|||
} |
|||
} |
|||
|
|||
// Disk I/O |
|||
Rectangle { |
|||
height: Kirigami.Units.largeSpacing |
|||
color: "transparent" |
|||
} |
|||
Item { |
|||
Kirigami.FormData.label: i18nc("Chart name", "Disks I/O") |
|||
Kirigami.FormData.isSection: true |
|||
} |
|||
|
|||
QtLayouts.GridLayout { |
|||
QtLayouts.Layout.fillWidth: true |
|||
columns: 2 |
|||
rowSpacing: Kirigami.Units.smallSpacing |
|||
columnSpacing: Kirigami.Units.largeSpacing |
|||
|
|||
QtControls.CheckBox { |
|||
id: showDiskMonitor |
|||
text: i18n("Enabled?") |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Click action |
|||
QtLayouts.ColumnLayout { |
|||
id: clickPage |
|||
spacing: Kirigami.Units.largeSpacing |
|||
|
|||
Kirigami.FormLayout { |
|||
wideMode: true |
|||
|
|||
QtControls.TextField { |
|||
id: appsFilter |
|||
Kirigami.FormData.label: i18n("Search an application:") |
|||
QtLayouts.Layout.fillWidth: true |
|||
placeholderText: i18n("Application name") |
|||
inputMethodHints: Qt.ImhNoPredictiveText |
|||
} |
|||
} |
|||
|
|||
// Apps list |
|||
PlasmaComponents.Label { |
|||
text: i18n("Applications") |
|||
font.pointSize: PlasmaCore.Theme.defaultFont.pointSize * 1.2 |
|||
} |
|||
|
|||
Item { |
|||
QtLayouts.Layout.fillWidth: true |
|||
QtLayouts.Layout.fillHeight: true |
|||
|
|||
Rectangle { |
|||
anchors.fill: parent |
|||
color: theme.headerBackgroundColor |
|||
border.color: theme.complementaryBackgroundColor |
|||
border.width: 1 |
|||
radius: 4 |
|||
} |
|||
|
|||
PlasmaComponents.ScrollView { |
|||
anchors.fill: parent |
|||
anchors.margins: 10 |
|||
anchors.rightMargin: 5 |
|||
|
|||
ListView { |
|||
id: appsList |
|||
|
|||
model: appsModel |
|||
clip: true |
|||
interactive: true |
|||
|
|||
highlight: PC2.Highlight { |
|||
} |
|||
highlightMoveDuration: 0 |
|||
highlightMoveVelocity: -1 |
|||
|
|||
delegate: RMComponents.ApplicationDelegateItem { |
|||
width: root.width |
|||
|
|||
serviceName: model.menuId.replace(".desktop", "") |
|||
name: model.name |
|||
comment: model.comment |
|||
iconName: model.iconName |
|||
selected: ListView.isCurrentItem |
|||
|
|||
onClicked: { |
|||
appsList.currentIndex = index; |
|||
cfg_actionService = serviceName; |
|||
} |
|||
} |
|||
|
|||
Component.onCompleted: updateCurrentIndex() |
|||
|
|||
function updateCurrentIndex() { |
|||
for (var i = 0; i < model.count; i++) { |
|||
if (model.get(i).menuId === cfg_actionService + ".desktop") { |
|||
currentIndex = i; |
|||
return; |
|||
} |
|||
} |
|||
currentIndex = -1; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
@ -1,49 +0,0 @@ |
|||
import QtQuick 2.2 |
|||
import QtQuick.Dialogs 1.0 as QtDialog |
|||
import org.kde.plasma.components 3.0 as PlasmaComponents |
|||
import org.kde.kirigami 2.6 as Kirigami |
|||
|
|||
PlasmaComponents.Button { |
|||
id: colorSelector |
|||
|
|||
// Aliases |
|||
property alias value: colorPicker.currentColor |
|||
|
|||
// Properties |
|||
property string label |
|||
property string dialogTitle |
|||
property color defaultColor |
|||
property bool customized |
|||
|
|||
// Customized checkbox |
|||
enabled: Kirigami.FormData.checked |
|||
Kirigami.FormData.checkable: true |
|||
Kirigami.FormData.checked: customized |
|||
|
|||
onEnabledChanged: customized = enabled |
|||
onClicked: colorPicker.open() |
|||
|
|||
// Size |
|||
topPadding: 12 |
|||
bottomPadding: topPadding |
|||
leftPadding: topPadding * 2 |
|||
rightPadding: leftPadding |
|||
|
|||
// Components |
|||
QtDialog.ColorDialog { |
|||
id: colorPicker |
|||
title: dialogTitle |
|||
} |
|||
MouseArea { |
|||
id: mouseArea |
|||
anchors.fill: parent |
|||
onPressed: mouse.accepted = false |
|||
cursorShape: enabled ? Qt.PointingHandCursor : Qt.ArrowCursor |
|||
} |
|||
|
|||
background: Rectangle { |
|||
color: customized ? colorPicker.currentColor : defaultColor |
|||
opacity: colorPicker.enabled ? 1 : 0.75 |
|||
radius: 2 |
|||
} |
|||
} |
@ -1,20 +0,0 @@ |
|||
import QtQuick 2.2 |
|||
import org.kde.kirigami 2.6 as Kirigami |
|||
import "./" as RMControls |
|||
|
|||
RMControls.SpinBox { |
|||
id: customizableSize |
|||
|
|||
property bool customized |
|||
|
|||
// Customized checkbox |
|||
enabled: Kirigami.FormData.checked |
|||
Kirigami.FormData.checkable: true |
|||
Kirigami.FormData.checked: customized |
|||
onEnabledChanged: customized = enabled |
|||
|
|||
// Component |
|||
textFromValue: function (value, locale) { |
|||
return valueToText(value, locale) + " px"; |
|||
} |
|||
} |
@ -1,57 +0,0 @@ |
|||
import QtQuick 2.0 |
|||
import QtQuick.Layouts 1.15 as QtLayouts |
|||
import QtQuick.Controls 2.0 as QQC2 |
|||
import org.kde.kirigami 2.6 as Kirigami |
|||
import "./" as RMControls |
|||
|
|||
QtLayouts.RowLayout { |
|||
spacing: Kirigami.Units.largeSpacing |
|||
|
|||
property alias predefinedChoices: predefinedChoices |
|||
property alias spinBox: spinBox |
|||
|
|||
property int customValueIndex: 0 |
|||
property real factor: 1 // This is for auto convert from Kilo, Mega, etc |
|||
|
|||
property real value: Math.round(realValue / factor) |
|||
property real realValue |
|||
|
|||
Component.onCompleted: { |
|||
// Initialize spin real value |
|||
spinBox.realValue = value; |
|||
|
|||
// Bind "realValue" to "spinBox.realValue" and "factor" |
|||
realValue = Qt.binding(() => spinBox.realValue * factor); |
|||
} |
|||
|
|||
QQC2.ComboBox { |
|||
id: predefinedChoices |
|||
QtLayouts.Layout.fillWidth: true |
|||
currentIndex: -1 |
|||
|
|||
onActivated: { |
|||
// Skip update spin box if user select custom option |
|||
if (currentIndex === customValueIndex) { |
|||
return; |
|||
} |
|||
|
|||
// Set value from choice in spin box (for have only one place to manage value) |
|||
if (currentValue !== -1) { |
|||
spinBox.realValue = valueFromPredefinedChoice(currentValue, currentIndex); |
|||
} |
|||
} |
|||
|
|||
// Auto select predefined choice |
|||
Component.onCompleted: { |
|||
const index = indexOfValue(realValue); |
|||
currentIndex = index !== -1 ? index : customValueIndex; |
|||
} |
|||
} |
|||
RMControls.SpinBox { |
|||
id: spinBox |
|||
QtLayouts.Layout.fillWidth: true |
|||
visible: predefinedChoices.currentIndex === customValueIndex |
|||
} |
|||
|
|||
property var valueFromPredefinedChoice: (value, index) => value / factor |
|||
} |
@ -1,125 +0,0 @@ |
|||
/** |
|||
* Example: |
|||
import "./components/controls" as RMControls |
|||
// Integer |
|||
RMControls.SpinBox { |
|||
from: 0 |
|||
to: 1000 |
|||
stepSize: 5 |
|||
|
|||
textFromValue: function(value, locale) { |
|||
return valueToText(value, locale) + " px" |
|||
} |
|||
} |
|||
// Double |
|||
RMControls.SpinBox { |
|||
decimals: 3 |
|||
minimumValue: 0.0 |
|||
maximumValue: 1000.0 |
|||
stepSize: Math.round(0.5 * factor) |
|||
|
|||
textFromValue: function(value, locale) { |
|||
return valueToText(value, locale) + " m" |
|||
} |
|||
} |
|||
*/ |
|||
import QtQuick 2.0 |
|||
import QtQuick.Controls 2.0 as QQC2 |
|||
import org.kde.plasma.core 2.0 as PlasmaCore |
|||
|
|||
QQC2.SpinBox { |
|||
id: control |
|||
editable: true |
|||
|
|||
readonly property real factor: Math.pow(10, decimals) |
|||
readonly property int spinBox_MININT: Math.ceil(-2147483648 / factor) |
|||
readonly property int spinBox_MAXINT: Math.floor(2147483647 / factor) |
|||
|
|||
value: Math.round(realValue * factor) |
|||
from: Math.round(minimumValue * factor) |
|||
to: Math.round(maximumValue * factor) |
|||
|
|||
// Copry from https://doc.qt.io/qt-5/qml-qtquick-controls2-spinbox.html#custom-values |
|||
property int decimals: 0 |
|||
property real realValue |
|||
|
|||
property real minimumValue: 0 |
|||
property real maximumValue: spinBox_MAXINT |
|||
|
|||
// Bind "realValue" to "value" and "factor" |
|||
Component.onCompleted: { |
|||
realValue = Qt.binding(() => value / factor); |
|||
} |
|||
|
|||
validator: DoubleValidator { |
|||
locale: control.locale.name |
|||
bottom: Math.min(control.from, control.to) |
|||
top: Math.max(control.from, control.to) |
|||
} |
|||
|
|||
textFromValue: valueToText |
|||
valueFromText: (text, locale) => { |
|||
text = text.replace(/[^\-\.\d]/g, ""); // Remove non digit characters |
|||
if (text === ".") { |
|||
text = "0"; |
|||
} |
|||
return Number.fromLocaleString(locale, text) * factor; |
|||
} |
|||
|
|||
property var valueToText: (value, locale) => { |
|||
// "toLocaleString" has no concept of "the minimum amount of |
|||
// digits to represent this number", so we need to calculate this |
|||
// manually. This ensures that things like "0" and "10" will be |
|||
// displayed without any decimals, while things like "2.2" and |
|||
// "3.87" will be displayed with the right number of decimals. |
|||
const realValue = Number(value / factor); |
|||
return realValue.toLocaleString(locale, 'f', countDecimals(realValue)); |
|||
} |
|||
|
|||
contentItem: TextInput { |
|||
opacity: enabled ? 1 : 0.5 |
|||
text: control.displayText |
|||
font: control.font |
|||
color: PlasmaCore.Theme.viewTextColor |
|||
selectionColor: PlasmaCore.Theme.highlightColor |
|||
selectedTextColor: PlasmaCore.Theme.highlightedTextColor |
|||
verticalAlignment: Qt.AlignVCenter |
|||
readOnly: !control.editable |
|||
validator: control.validator |
|||
inputMethodHints: control.inputMethodHints |
|||
selectByMouse: true |
|||
|
|||
// Accept return/enter key |
|||
Keys.onReturnPressed: returnPressed = true |
|||
Keys.onEnterPressed: returnPressed = true |
|||
|
|||
// Reselect field when validate value with "return" |
|||
property bool returnPressed |
|||
onTextChanged: { |
|||
if (returnPressed) { |
|||
returnPressed = false; |
|||
selectAll(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Allow cancel editing |
|||
Keys.onEscapePressed: { |
|||
contentItem.text = textFromValue(value, locale.name); |
|||
focus = false; |
|||
} |
|||
|
|||
// Select value on foucs |
|||
onActiveFocusChanged: { |
|||
if (activeFocus) { |
|||
contentItem.selectAll(); |
|||
} |
|||
} |
|||
|
|||
function countDecimals(value) { |
|||
if (Math.floor(value) === value) { |
|||
return 0; |
|||
} |
|||
return value.toString().split(".")[1].length || 0; |
|||
} |
|||
} |
@ -1,123 +0,0 @@ |
|||
/* |
|||
* Copyright 2015 Martin Kotelnik <clearmartin@seznam.cz> |
|||
* |
|||
* This program is free software; you can redistribute it and/or |
|||
* modify it under the terms of the GNU General Public License as |
|||
* published by the Free Software Foundation; either version 2 of |
|||
* the License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http: //www.gnu.org/licenses/>. |
|||
*/ |
|||
import QtQuick 2.9 |
|||
import QtQuick.Layouts 1.1 |
|||
import org.kde.plasma.plasmoid 2.0 |
|||
import org.kde.plasma.core 2.0 as PlasmaCore |
|||
import org.kde.kio 1.0 as Kio |
|||
import "./components/graph" as RMGraph |
|||
|
|||
MouseArea { |
|||
id: root |
|||
|
|||
readonly property bool vertical: plasmoid.formFactor === PlasmaCore.Types.Vertical |
|||
|
|||
// Settings properties |
|||
property bool verticalLayout: plasmoid.configuration.verticalLayout |
|||
property double fontScale: (plasmoid.configuration.fontScale / 100) |
|||
|
|||
// Component properties |
|||
property int itemMargin: plasmoid.configuration.graphMargin |
|||
property double parentWidth: parent === null ? 0 : parent.width |
|||
property double parentHeight: parent === null ? 0 : parent.height |
|||
property double initWidth: vertical ? (verticalLayout ? parentWidth : (parentWidth - itemMargin) / 2) : (verticalLayout ? (parentHeight - itemMargin) / 2 : parentHeight) |
|||
property double itemWidth: plasmoid.configuration.customGraphWidth ? plasmoid.configuration.graphWidth : Math.round(initWidth * (verticalLayout ? 1 : 1.5)) |
|||
property double itemHeight: plasmoid.configuration.customGraphHeight ? plasmoid.configuration.graphHeight : Math.round(initWidth) |
|||
property double fontPixelSize: Math.round(verticalLayout ? (itemHeight / 1.4 * fontScale) : (itemHeight * fontScale)) |
|||
|
|||
Layout.preferredWidth: !verticalLayout ? (itemWidth * graphView.model.length + itemMargin * (graphView.model.length + 1)) : itemWidth |
|||
Layout.preferredHeight: verticalLayout ? (itemHeight * graphView.model.length + itemMargin * (graphView.model.length + 1)) : itemHeight |
|||
LayoutMirroring.enabled: !vertical && Qt.application.layoutDirection === Qt.RightToLeft |
|||
LayoutMirroring.childrenInherit: true |
|||
|
|||
Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation |
|||
|
|||
// Click action |
|||
Kio.KRun { |
|||
id: kRun |
|||
} |
|||
|
|||
onClicked: { |
|||
kRun.openService(plasmoid.configuration.actionService); |
|||
} |
|||
|
|||
// Global update timer |
|||
Timer { |
|||
id: updateTask |
|||
interval: plasmoid.configuration.updateInterval * 1000 |
|||
|
|||
running: true |
|||
triggeredOnStart: true |
|||
repeat: true |
|||
|
|||
onTriggered: { |
|||
for (const i in graphView.model) { |
|||
const graph = graphView.getGraph(i); |
|||
if (graph !== null) { |
|||
graph._update(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Main Layout |
|||
ListView { |
|||
id: graphView |
|||
anchors.fill: parent |
|||
spacing: itemMargin |
|||
orientation: verticalLayout ? ListView.Vertical : ListView.Horizontal |
|||
interactive: false |
|||
|
|||
model: plasmoid.configuration.graphOrders.filter(item => { |
|||
if (item === "cpu") { |
|||
return plasmoid.configuration.showCpuMonitor; |
|||
} else if (item === "disks") { |
|||
return plasmoid.configuration.showDiskMonitor; |
|||
} else if (item === "gpu") { |
|||
return plasmoid.configuration.showGpuMonitor; |
|||
} else if (item === "memory") { |
|||
return plasmoid.configuration.showRamMonitor; |
|||
} else if (item === "network") { |
|||
return plasmoid.configuration.showNetMonitor; |
|||
} |
|||
return false; |
|||
}) |
|||
|
|||
delegate: Loader { |
|||
source: _graphIdToFilename(modelData) |
|||
|
|||
width: itemWidth |
|||
height: itemHeight |
|||
|
|||
onLoaded: { |
|||
item.textContainer.firstLineLabel.font.pixelSize = Qt.binding(() => root.fontPixelSize); |
|||
item.textContainer.secondLineLabel.font.pixelSize = Qt.binding(() => root.fontPixelSize); |
|||
item.textContainer.thirdLineLabel.font.pixelSize = Qt.binding(() => root.fontPixelSize); |
|||
} |
|||
} |
|||
|
|||
function getGraph(index) { |
|||
const loaderItem = graphView.itemAtIndex(index); |
|||
return loaderItem !== null ? loaderItem.item : null; |
|||
} |
|||
} |
|||
|
|||
function _graphIdToFilename(graphId) { |
|||
const filename = (graphId.charAt(0).toUpperCase() + graphId.slice(1)) + "Graph"; |
|||
return "./components/graph/" + filename + ".qml"; |
|||
} |
|||
} |
@ -1,31 +0,0 @@ |
|||
{ |
|||
"KPlugin": { |
|||
"Authors": [ |
|||
{ |
|||
"Name": "Kotelnik" |
|||
}, |
|||
{ |
|||
"Name": "orblazer" |
|||
}, |
|||
{ |
|||
"Name": "Starrah" |
|||
} |
|||
], |
|||
"Category": "System Information", |
|||
"Description": "Plasmoid for monitoring CPU, memory, network traffic GPU and disk IO. This is an fork from \"Resources Monitor\" by Kotelnik", |
|||
"Description[fr]": "Plasmoid pour surveiller l'utilisation du CPU, de la mémoire, du traffic réseau, de la carte graphique et des disque dur. Ceci est un fork de \"Resources Monitor\" de Kotelnik", |
|||
"Description[nl]": "Een Plasmoid voor het monitoren van CPU, geheugen, netwerkverkeer GPU en disk IO. Dit is een vork uit \"Resources Monitor\" van Kotelnik.", |
|||
"Icon": "utilities-system-monitor", |
|||
"Id": "org.kde.resourcesMonitor-fork", |
|||
"License": "GPL-3.0-only", |
|||
"Name": "Resources Monitor (fork)", |
|||
"Name[fr]": "Moniteur des ressources (fork)", |
|||
"Name[nl]": "Systeembronmonitor (afsplitsing)", |
|||
"Version": "2.10.2", |
|||
"Website": "https://github.com/orblazer/plasma-applet-resources-monitor", |
|||
"BugReportUrl": "https://github.com/orblazer/plasma-applet-resources-monitor/issues" |
|||
}, |
|||
"X-Plasma-API": "declarativeappletscript", |
|||
"X-Plasma-MainScript": "ui/main.qml", |
|||
"KPackageStructure": "Plasma/Applet" |
|||
} |
@ -1,29 +0,0 @@ |
|||
# Translations |
|||
|
|||
You can found found the list of locale code here : [List of country locale code](https://saimana.com/list-of-country-locale-code/) |
|||
|
|||
## New Translations |
|||
|
|||
1. Fill out [`template.pot`](template.pot) with your translations then open a [new issue](https://github.com/orblazer/plasma-applet-resources-monitor/issues/new), name the file `spanish.txt`, attach the txt file to the issue (drag and drop). |
|||
|
|||
Or if you know how to make a pull request |
|||
|
|||
1. Copy the `template.pot` file and name it your locale's code (Eg: `en`/`de`/`fr`) with the extension `.po`. Then fill out all the `msgstr ""`. |
|||
2. Add `Name` and `Description` translation to `../metadata.json` |
|||
3. Build the translation with `npm run i18n:build` |
|||
4. Test the translation with `LANGUAGE="country_CODE:locale" LANG="country_CODE.UTF-8" npm run dev` |
|||
|
|||
**Note** : You need install language pack first. |
|||
|
|||
## Scripts |
|||
|
|||
- `npm run i18:merge` will parse the `i18n()` calls in the `*.qml` files and write it to the `template.pot` file. Then it will merge any changes into the `*.po` language files. |
|||
- `npm run i18n:build` will convert the `*.po` files to it's binary `*.mo` version and move it to `contents/locale/...` which will bundle the translations in the `*.plasmoid` without needing the user to manually install them. |
|||
|
|||
## Status |
|||
|
|||
| Locale | Lines | % Done| |
|||
|----------|---------|-------| |
|||
| Template | 95 | | |
|||
| fr | 95/95 | 100% | |
|||
| nl | 95/95 | 100% | |
@ -1,453 +0,0 @@ |
|||
# Translation of resourcesMonitor-fork in french |
|||
# Copyright (C) 2021 |
|||
# This file is distributed under the same license as the resourcesMonitor-fork package. |
|||
# orblazer, 2021. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: resourcesMonitor-fork\n" |
|||
"Report-Msgid-Bugs-To: https://github.com/orblazer/plasma-applet-resources-monitor\n" |
|||
"POT-Creation-Date: 2023-05-31 18:43+0200\n" |
|||
"PO-Revision-Date: 2023-05-31 18:43+0200\n" |
|||
"Last-Translator: orblazer\n" |
|||
"Language: fr\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
|
|||
#: ../contents/config/config.qml:6 ../contents/ui/config/ConfigData.qml:120 ../contents/ui/config/ConfigGeneral.qml:79 |
|||
msgctxt "Config header" |
|||
msgid "General" |
|||
msgstr "Général" |
|||
|
|||
#: ../contents/config/config.qml:11 |
|||
msgctxt "Config header" |
|||
msgid "Data" |
|||
msgstr "Données" |
|||
|
|||
#: ../contents/config/config.qml:16 |
|||
msgctxt "Config header" |
|||
msgid "Appearance" |
|||
msgstr "Apparence" |
|||
|
|||
#: ../contents/ui/components/functions.js:20 |
|||
msgctxt "kilobyte suffix" |
|||
msgid "Bps" |
|||
msgstr "ops" |
|||
|
|||
#: ../contents/ui/components/functions.js:28 |
|||
msgctxt "kilobit suffix" |
|||
msgid "bps" |
|||
msgstr "bps" |
|||
|
|||
#: ../contents/ui/components/functions.js:36 |
|||
msgctxt "kibibyte suffix" |
|||
msgid "iB/s" |
|||
msgstr "io/s" |
|||
|
|||
#: ../contents/ui/components/graph/CpuGraph.qml:41 |
|||
msgctxt "Graph label" |
|||
msgid "Clock" |
|||
msgstr "Horloge" |
|||
|
|||
#: ../contents/ui/components/graph/CpuGraph.qml:41 ../contents/ui/components/graph/GpuGraph.qml:32 |
|||
msgctxt "Graph label" |
|||
msgid "Temp." |
|||
msgstr "Temp." |
|||
|
|||
#: ../contents/ui/components/graph/DisksGraph.qml:28 |
|||
msgctxt "Graph label" |
|||
msgid "Read" |
|||
msgstr "Lecture" |
|||
|
|||
#: ../contents/ui/components/graph/DisksGraph.qml:28 |
|||
msgctxt "Graph label" |
|||
msgid "Write" |
|||
msgstr "Écriture" |
|||
|
|||
#: ../contents/ui/components/graph/GpuGraph.qml:56 |
|||
msgctxt "Percent unit" |
|||
msgid "%1%" |
|||
msgstr "%1%" |
|||
|
|||
#: ../contents/ui/components/graph/NetworkGraph.qml:31 |
|||
msgctxt "Graph label" |
|||
msgid "Receiving" |
|||
msgstr "Réception" |
|||
|
|||
#: ../contents/ui/components/graph/NetworkGraph.qml:31 |
|||
msgctxt "Graph label" |
|||
msgid "Sending" |
|||
msgstr "Envoi" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:76 ../contents/ui/config/ConfigAppearance.qml:361 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:122 |
|||
msgctxt "Chart name" |
|||
msgid "CPU" |
|||
msgstr "CPU" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:81 ../contents/ui/config/ConfigAppearance.qml:386 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:209 |
|||
msgctxt "Chart name" |
|||
msgid "Memory" |
|||
msgstr "Mémoire" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:86 ../contents/ui/config/ConfigAppearance.qml:436 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:315 |
|||
msgctxt "Chart name" |
|||
msgid "GPU" |
|||
msgstr "GPU" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:91 ../contents/ui/config/ConfigAppearance.qml:468 |
|||
#: ../contents/ui/config/ConfigData.qml:239 ../contents/ui/config/ConfigGeneral.qml:352 |
|||
msgctxt "Chart name" |
|||
msgid "Disks I/O" |
|||
msgstr "Disques E/S" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:96 ../contents/ui/config/ConfigAppearance.qml:411 |
|||
#: ../contents/ui/config/ConfigData.qml:142 ../contents/ui/config/ConfigGeneral.qml:270 |
|||
msgctxt "Chart name" |
|||
msgid "Network" |
|||
msgstr "Réseau" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:115 ../contents/ui/config/ConfigGeneral.qml:116 |
|||
msgctxt "Config header" |
|||
msgid "Charts" |
|||
msgstr "Graphiques" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:120 |
|||
msgctxt "Config header" |
|||
msgid "Text" |
|||
msgstr "Texte" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:125 |
|||
msgctxt "Config header" |
|||
msgid "Colors" |
|||
msgstr "Couleurs" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:143 |
|||
msgid "Vertical layout" |
|||
msgstr "Disposition verticale" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:148 |
|||
msgid "History amount:" |
|||
msgstr "Quantité d'histoire :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:155 |
|||
msgid "Width:" |
|||
msgstr "Largeur :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:162 |
|||
msgid "Height:" |
|||
msgstr "Hauteur :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:169 |
|||
msgid "Margin:" |
|||
msgstr "Marge :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:180 |
|||
msgid "Fill opacity:" |
|||
msgstr "Opacité du remplissage :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:192 |
|||
msgid "Charts order" |
|||
msgstr "Ordre des graphiques" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:280 |
|||
msgid "Drop shadows" |
|||
msgstr "Ombres portées" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:285 |
|||
msgid "Font scale:" |
|||
msgstr "Taille de la police :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:297 |
|||
msgid "Text displayment:" |
|||
msgstr "Affichage du texte :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:303 |
|||
msgctxt "Text displayment" |
|||
msgid "Always" |
|||
msgstr "Toujours" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:306 |
|||
msgctxt "Text displayment" |
|||
msgid "On hover" |
|||
msgstr "Au survol" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:309 |
|||
msgctxt "Text displayment" |
|||
msgid "Hints when hover" |
|||
msgstr "Indices au survol" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:319 |
|||
msgid "Placement:" |
|||
msgstr "Placement :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:325 |
|||
msgctxt "Text placement" |
|||
msgid "Top left" |
|||
msgstr "En haut à gauche" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:328 |
|||
msgctxt "Text placement" |
|||
msgid "Top right" |
|||
msgstr "En haut à droite" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:331 |
|||
msgctxt "Text placement" |
|||
msgid "Bottom left" |
|||
msgstr "En bas à gauche" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:334 |
|||
msgctxt "Text placement" |
|||
msgid "Bottom right" |
|||
msgstr "En bas à droite" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:351 |
|||
msgid "Charts colors" |
|||
msgstr "Couleurs des graphiques" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:367 ../contents/ui/config/ConfigAppearance.qml:442 |
|||
msgctxt "Chart config" |
|||
msgid "Usage:" |
|||
msgstr "Utilisation :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:369 ../contents/ui/config/ConfigAppearance.qml:394 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:419 ../contents/ui/config/ConfigAppearance.qml:426 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:444 ../contents/ui/config/ConfigAppearance.qml:451 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:476 ../contents/ui/config/ConfigAppearance.qml:483 |
|||
msgctxt "Chart color" |
|||
msgid "Choose series color" |
|||
msgstr "Choisir la couleur de la série" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:374 ../contents/ui/config/ConfigAppearance.qml:456 |
|||
msgctxt "Chart config" |
|||
msgid "Temperature:" |
|||
msgstr "Température :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:376 ../contents/ui/config/ConfigAppearance.qml:458 |
|||
msgctxt "Chart color" |
|||
msgid "Choose text color" |
|||
msgstr "Choisir la couleur du texte" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:392 |
|||
msgctxt "Chart config" |
|||
msgid "Physical:" |
|||
msgstr "Physique :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:399 |
|||
msgctxt "Chart config" |
|||
msgid "Swap:" |
|||
msgstr "Swap :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:401 |
|||
msgctxt "Chart color" |
|||
msgid "Choose color of series and text" |
|||
msgstr "Choisir la couleur de la série et du texte" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:417 ../contents/ui/config/ConfigData.qml:191 |
|||
msgctxt "Chart config" |
|||
msgid "Receiving:" |
|||
msgstr "Réception :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:424 ../contents/ui/config/ConfigData.qml:215 |
|||
msgctxt "Chart config" |
|||
msgid "Sending:" |
|||
msgstr "Envoi :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:449 |
|||
msgctxt "Chart config" |
|||
msgid "Memory:" |
|||
msgstr "Mémoire :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:474 ../contents/ui/config/ConfigData.qml:250 |
|||
msgctxt "Chart config" |
|||
msgid "Read:" |
|||
msgstr "Lecture :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:481 ../contents/ui/config/ConfigData.qml:274 |
|||
msgctxt "Chart config" |
|||
msgid "Write:" |
|||
msgstr "Écriture :" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:489 |
|||
msgid "Threshold text colors" |
|||
msgstr "Couleurs des seuils d'alerte" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:495 |
|||
msgid "Warning status:" |
|||
msgstr "État d’avertissement" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:497 |
|||
msgid "Choose text color when the value is in warning status" |
|||
msgstr "Choisissez la couleur du texte quand le seuil d'avertissement est passé" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:502 |
|||
msgid "Critical status:" |
|||
msgstr "État critique" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:504 |
|||
msgid "Choose text color when the value is in critical status" |
|||
msgstr "Choisissez la couleur du texte quand le seul critique est passé" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:39 ../contents/ui/config/ConfigData.qml:67 |
|||
msgid "Custom" |
|||
msgstr "Personnalisée" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:125 |
|||
msgctxt "Config header" |
|||
msgid "Thresholds" |
|||
msgstr "Seuils d'alerte" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:148 |
|||
msgid "Network interfaces:" |
|||
msgstr "Interfaces réseau :" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:185 ../contents/ui/config/ConfigData.qml:244 |
|||
msgid "Maximum transfer speed" |
|||
msgstr "Vitesse de transfert maximale" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:298 |
|||
msgctxt "Config header" |
|||
msgid "Graphic card" |
|||
msgstr "Carte graphique" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:305 |
|||
msgid "Graphic card:" |
|||
msgstr "Carte graphique :" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:347 |
|||
msgid "Warning" |
|||
msgstr "Avertissement" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:354 |
|||
msgid "Critical" |
|||
msgstr "Critique" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:361 |
|||
msgid "CPU Temperature:" |
|||
msgstr "Température du CPU" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:393 |
|||
msgid "Physical Memory Usage:" |
|||
msgstr "Utilisation de la mémoire" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:417 |
|||
msgid "GPU Temperature:" |
|||
msgstr "Température du GPU" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:84 |
|||
msgctxt "Config header" |
|||
msgid "Click action" |
|||
msgstr "Action du clique" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:101 |
|||
msgid "Update interval:" |
|||
msgstr "Intervalle d'actualisation :" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:110 |
|||
msgid "%1 seconds" |
|||
msgstr "%1 secondes" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:128 ../contents/ui/config/ConfigGeneral.qml:215 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:276 |
|||
msgid "Visibility:" |
|||
msgstr "Visibilité" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:134 ../contents/ui/config/ConfigGeneral.qml:170 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:221 ../contents/ui/config/ConfigGeneral.qml:282 |
|||
msgid "Disabled" |
|||
msgstr "Désactivé" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:137 |
|||
msgid "Total usage" |
|||
msgstr "Utilisation total" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:140 |
|||
msgid "System usage" |
|||
msgstr "Utilisation du système" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:143 |
|||
msgid "User usage" |
|||
msgstr "Utilisation de l'Utilisateur" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:163 |
|||
msgid "Clock visibility:" |
|||
msgstr "Visibilité de l'horloge :" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:173 |
|||
msgctxt "Agregator" |
|||
msgid "Average" |
|||
msgstr "Moyenne" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:176 |
|||
msgctxt "Agregator" |
|||
msgid "Minimum" |
|||
msgstr "Minimum" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:179 |
|||
msgctxt "Agregator" |
|||
msgid "Maximum" |
|||
msgstr "Maximum" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:199 ../contents/ui/config/ConfigGeneral.qml:341 |
|||
msgid "Show temperature" |
|||
msgstr "Afficher la température" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:224 |
|||
msgid "Physical memory (in KiB)" |
|||
msgstr "Mémoire Physique (en Kio)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:227 |
|||
msgid "Physical memory (in %)" |
|||
msgstr "Mémoire Physique (en %)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:230 |
|||
msgid "Application memory (in KiB)" |
|||
msgstr "Mémoire Applicative (en Kio)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:233 |
|||
msgid "Application memory (in %)" |
|||
msgstr "Mémoire Applicative (en %)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:259 |
|||
msgid "Show swap" |
|||
msgstr "Afficher le swap" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:285 |
|||
msgid "In kibibyte (KiB/s)" |
|||
msgstr "En kibioctet (Kio/s)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:288 |
|||
msgid "In kilobit (Kbps)" |
|||
msgstr "En kilobit (Kbps)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:291 |
|||
msgid "In kilobyte (KBps)" |
|||
msgstr "En kilooctet (Kops)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:327 ../contents/ui/config/ConfigGeneral.qml:364 |
|||
msgid "Enabled?" |
|||
msgstr "Activé ?" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:331 |
|||
msgid "Show memory" |
|||
msgstr "Afficher la mémoire" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:336 |
|||
msgid "Memory in percent" |
|||
msgstr "Mémoire en pourcent" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:380 |
|||
msgid "Search an application:" |
|||
msgstr "Chercher une application :" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:382 |
|||
msgid "Application name" |
|||
msgstr "Nom de l'application" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:389 |
|||
msgid "Applications" |
|||
msgstr "Applications" |
@ -1,454 +0,0 @@ |
|||
# Translation of resourcesMonitor-fork in nl |
|||
# Copyright (C) 2021 |
|||
# This file is distributed under the same license as the resourcesMonitor-fork package. |
|||
# Heimen Stoffels <vistausss@fastmail.com>, 2021. |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: resourcesMonitor-fork\n" |
|||
"Report-Msgid-Bugs-To: https://github.com/orblazer/plasma-applet-resources-monitor\n" |
|||
"POT-Creation-Date: 2023-05-31 18:43+0200\n" |
|||
"PO-Revision-Date: 2023-05-31 18:44+0200\n" |
|||
"Last-Translator: orblazer\n" |
|||
"Language: nl\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
|||
"X-Generator: Poedit 3.0\n" |
|||
|
|||
#: ../contents/config/config.qml:6 ../contents/ui/config/ConfigData.qml:120 ../contents/ui/config/ConfigGeneral.qml:79 |
|||
msgctxt "Config header" |
|||
msgid "General" |
|||
msgstr "Algemeen" |
|||
|
|||
#: ../contents/config/config.qml:11 |
|||
msgctxt "Config header" |
|||
msgid "Data" |
|||
msgstr "Gegevens" |
|||
|
|||
#: ../contents/config/config.qml:16 |
|||
msgctxt "Config header" |
|||
msgid "Appearance" |
|||
msgstr "Uiterlijk" |
|||
|
|||
#: ../contents/ui/components/functions.js:20 |
|||
msgctxt "kilobyte suffix" |
|||
msgid "Bps" |
|||
msgstr "Bps" |
|||
|
|||
#: ../contents/ui/components/functions.js:28 |
|||
msgctxt "kilobit suffix" |
|||
msgid "bps" |
|||
msgstr "bps" |
|||
|
|||
#: ../contents/ui/components/functions.js:36 |
|||
msgctxt "kibibyte suffix" |
|||
msgid "iB/s" |
|||
msgstr "iB/s" |
|||
|
|||
#: ../contents/ui/components/graph/CpuGraph.qml:41 |
|||
msgctxt "Graph label" |
|||
msgid "Clock" |
|||
msgstr "Klok" |
|||
|
|||
#: ../contents/ui/components/graph/CpuGraph.qml:41 ../contents/ui/components/graph/GpuGraph.qml:32 |
|||
msgctxt "Graph label" |
|||
msgid "Temp." |
|||
msgstr "Temp." |
|||
|
|||
#: ../contents/ui/components/graph/DisksGraph.qml:28 |
|||
msgctxt "Graph label" |
|||
msgid "Read" |
|||
msgstr "Lees" |
|||
|
|||
#: ../contents/ui/components/graph/DisksGraph.qml:28 |
|||
msgctxt "Graph label" |
|||
msgid "Write" |
|||
msgstr "Schrijf" |
|||
|
|||
#: ../contents/ui/components/graph/GpuGraph.qml:56 |
|||
msgctxt "Percent unit" |
|||
msgid "%1%" |
|||
msgstr "%1%" |
|||
|
|||
#: ../contents/ui/components/graph/NetworkGraph.qml:31 |
|||
msgctxt "Graph label" |
|||
msgid "Receiving" |
|||
msgstr "Ontvangst" |
|||
|
|||
#: ../contents/ui/components/graph/NetworkGraph.qml:31 |
|||
msgctxt "Graph label" |
|||
msgid "Sending" |
|||
msgstr "Verzend." |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:76 ../contents/ui/config/ConfigAppearance.qml:361 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:122 |
|||
msgctxt "Chart name" |
|||
msgid "CPU" |
|||
msgstr "CPU" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:81 ../contents/ui/config/ConfigAppearance.qml:386 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:209 |
|||
msgctxt "Chart name" |
|||
msgid "Memory" |
|||
msgstr "Geheugen" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:86 ../contents/ui/config/ConfigAppearance.qml:436 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:315 |
|||
msgctxt "Chart name" |
|||
msgid "GPU" |
|||
msgstr "GPU" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:91 ../contents/ui/config/ConfigAppearance.qml:468 |
|||
#: ../contents/ui/config/ConfigData.qml:239 ../contents/ui/config/ConfigGeneral.qml:352 |
|||
msgctxt "Chart name" |
|||
msgid "Disks I/O" |
|||
msgstr "Schijven I/O" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:96 ../contents/ui/config/ConfigAppearance.qml:411 |
|||
#: ../contents/ui/config/ConfigData.qml:142 ../contents/ui/config/ConfigGeneral.qml:270 |
|||
msgctxt "Chart name" |
|||
msgid "Network" |
|||
msgstr "Netwerk" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:115 ../contents/ui/config/ConfigGeneral.qml:116 |
|||
msgctxt "Config header" |
|||
msgid "Charts" |
|||
msgstr "Grafieken" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:120 |
|||
msgctxt "Config header" |
|||
msgid "Text" |
|||
msgstr "Tekst" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:125 |
|||
msgctxt "Config header" |
|||
msgid "Colors" |
|||
msgstr "Kleuren" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:143 |
|||
msgid "Vertical layout" |
|||
msgstr "Verticale indeling" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:148 |
|||
msgid "History amount:" |
|||
msgstr "Historie bedrag:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:155 |
|||
msgid "Width:" |
|||
msgstr "Breedte:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:162 |
|||
msgid "Height:" |
|||
msgstr "Hoogte:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:169 |
|||
msgid "Margin:" |
|||
msgstr "Marge:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:180 |
|||
msgid "Fill opacity:" |
|||
msgstr "Ondoorzichtigheid vullen:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:192 |
|||
msgid "Charts order" |
|||
msgstr "Volgorde grafieken" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:280 |
|||
msgid "Drop shadows" |
|||
msgstr "Vallende schaduwen" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:285 |
|||
msgid "Font scale:" |
|||
msgstr "Tekstgrootte:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:297 |
|||
msgid "Text displayment:" |
|||
msgstr "Tekst tonen:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:303 |
|||
msgctxt "Text displayment" |
|||
msgid "Always" |
|||
msgstr "Altijd" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:306 |
|||
msgctxt "Text displayment" |
|||
msgid "On hover" |
|||
msgstr "Na aanwijzen" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:309 |
|||
msgctxt "Text displayment" |
|||
msgid "Hints when hover" |
|||
msgstr "Tip tonen na aanwijzen" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:319 |
|||
msgid "Placement:" |
|||
msgstr "Locatie:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:325 |
|||
msgctxt "Text placement" |
|||
msgid "Top left" |
|||
msgstr "Linksboven" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:328 |
|||
msgctxt "Text placement" |
|||
msgid "Top right" |
|||
msgstr "Rechtboven" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:331 |
|||
msgctxt "Text placement" |
|||
msgid "Bottom left" |
|||
msgstr "Linksonder" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:334 |
|||
msgctxt "Text placement" |
|||
msgid "Bottom right" |
|||
msgstr "Rechtsonder" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:351 |
|||
msgid "Charts colors" |
|||
msgstr "Kleuren grafieken" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:367 ../contents/ui/config/ConfigAppearance.qml:442 |
|||
msgctxt "Chart config" |
|||
msgid "Usage:" |
|||
msgstr "Gebruik:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:369 ../contents/ui/config/ConfigAppearance.qml:394 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:419 ../contents/ui/config/ConfigAppearance.qml:426 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:444 ../contents/ui/config/ConfigAppearance.qml:451 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:476 ../contents/ui/config/ConfigAppearance.qml:483 |
|||
msgctxt "Chart color" |
|||
msgid "Choose series color" |
|||
msgstr "Kies seriekleur" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:374 ../contents/ui/config/ConfigAppearance.qml:456 |
|||
msgctxt "Chart config" |
|||
msgid "Temperature:" |
|||
msgstr "Temperatuur:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:376 ../contents/ui/config/ConfigAppearance.qml:458 |
|||
msgctxt "Chart color" |
|||
msgid "Choose text color" |
|||
msgstr "Kies tekstkleur" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:392 |
|||
msgctxt "Chart config" |
|||
msgid "Physical:" |
|||
msgstr "Fysiek:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:399 |
|||
msgctxt "Chart config" |
|||
msgid "Swap:" |
|||
msgstr "Swap:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:401 |
|||
msgctxt "Chart color" |
|||
msgid "Choose color of series and text" |
|||
msgstr "Kies kleur van serie en tekst" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:417 ../contents/ui/config/ConfigData.qml:191 |
|||
msgctxt "Chart config" |
|||
msgid "Receiving:" |
|||
msgstr "Ontvangst:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:424 ../contents/ui/config/ConfigData.qml:215 |
|||
msgctxt "Chart config" |
|||
msgid "Sending:" |
|||
msgstr "Verzending:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:449 |
|||
msgctxt "Chart config" |
|||
msgid "Memory:" |
|||
msgstr "Geheugen" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:474 ../contents/ui/config/ConfigData.qml:250 |
|||
msgctxt "Chart config" |
|||
msgid "Read:" |
|||
msgstr "Lees:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:481 ../contents/ui/config/ConfigData.qml:274 |
|||
msgctxt "Chart config" |
|||
msgid "Write:" |
|||
msgstr "Schrijf:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:489 |
|||
msgid "Threshold text colors" |
|||
msgstr "Drempelwaarde tekstkleuren" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:495 |
|||
msgid "Warning status:" |
|||
msgstr "Waarschuwingsstatus:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:497 |
|||
msgid "Choose text color when the value is in warning status" |
|||
msgstr "Kies de tekstkleur wanneer de waarde in de waarschuwingsstatus staat" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:502 |
|||
msgid "Critical status:" |
|||
msgstr "Kritieke status:" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:504 |
|||
msgid "Choose text color when the value is in critical status" |
|||
msgstr "Tekstkleur kiezen wanneer de waarde in kritieke status is" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:39 ../contents/ui/config/ConfigData.qml:67 |
|||
msgid "Custom" |
|||
msgstr "Aangepast" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:125 |
|||
msgctxt "Config header" |
|||
msgid "Thresholds" |
|||
msgstr "Drempels" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:148 |
|||
msgid "Network interfaces:" |
|||
msgstr "Netwerkkaarten:" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:185 ../contents/ui/config/ConfigData.qml:244 |
|||
msgid "Maximum transfer speed" |
|||
msgstr "Maximale overdrachtssnelheid" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:298 |
|||
msgctxt "Config header" |
|||
msgid "Graphic card" |
|||
msgstr "Grafische kaart" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:305 |
|||
msgid "Graphic card:" |
|||
msgstr "Grafische kaart:" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:347 |
|||
msgid "Warning" |
|||
msgstr "Waarschuwing" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:354 |
|||
msgid "Critical" |
|||
msgstr "Kritisch" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:361 |
|||
msgid "CPU Temperature:" |
|||
msgstr "CPU-temperatuur:" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:393 |
|||
msgid "Physical Memory Usage:" |
|||
msgstr "Fysiek geheugengebruik:" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:417 |
|||
msgid "GPU Temperature:" |
|||
msgstr "GPU-temperatuur:" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:84 |
|||
msgctxt "Config header" |
|||
msgid "Click action" |
|||
msgstr "Klik actie" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:101 |
|||
msgid "Update interval:" |
|||
msgstr "Bijwerktussenpoos:" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:110 |
|||
msgid "%1 seconds" |
|||
msgstr "%1 seconden" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:128 ../contents/ui/config/ConfigGeneral.qml:215 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:276 |
|||
msgid "Visibility:" |
|||
msgstr "Zichtbaarheid:" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:134 ../contents/ui/config/ConfigGeneral.qml:170 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:221 ../contents/ui/config/ConfigGeneral.qml:282 |
|||
msgid "Disabled" |
|||
msgstr "Uitgeschakeld" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:137 |
|||
msgid "Total usage" |
|||
msgstr "Totaal gebruik" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:140 |
|||
msgid "System usage" |
|||
msgstr "Systeemgebruik" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:143 |
|||
msgid "User usage" |
|||
msgstr "Gebruikersgebruik" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:163 |
|||
msgid "Clock visibility:" |
|||
msgstr "Klok zichtbaarheid:" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:173 |
|||
msgctxt "Agregator" |
|||
msgid "Average" |
|||
msgstr "Gemiddeld" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:176 |
|||
msgctxt "Agregator" |
|||
msgid "Minimum" |
|||
msgstr "Minimaal" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:179 |
|||
msgctxt "Agregator" |
|||
msgid "Maximum" |
|||
msgstr "Maximaal" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:199 ../contents/ui/config/ConfigGeneral.qml:341 |
|||
msgid "Show temperature" |
|||
msgstr "Toon temperatuur" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:224 |
|||
msgid "Physical memory (in KiB)" |
|||
msgstr "Fysiek geheugen (in KiB)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:227 |
|||
msgid "Physical memory (in %)" |
|||
msgstr "Fysiek geheugen (in %)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:230 |
|||
msgid "Application memory (in KiB)" |
|||
msgstr "Toepassingsgeheugen (KiB)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:233 |
|||
msgid "Application memory (in %)" |
|||
msgstr "Toepassingsgeheugen (in %)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:259 |
|||
msgid "Show swap" |
|||
msgstr "Toon swap" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:285 |
|||
msgid "In kibibyte (KiB/s)" |
|||
msgstr "In kibibyte (KiB/s)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:288 |
|||
msgid "In kilobit (Kbps)" |
|||
msgstr "In kilobit (Kbps)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:291 |
|||
msgid "In kilobyte (KBps)" |
|||
msgstr "In kilobyte (KBps)" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:327 ../contents/ui/config/ConfigGeneral.qml:364 |
|||
msgid "Enabled?" |
|||
msgstr "Ingeschakeld?" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:331 |
|||
msgid "Show memory" |
|||
msgstr "Toon geheugen" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:336 |
|||
msgid "Memory in percent" |
|||
msgstr "Geheugen in procent" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:380 |
|||
msgid "Search an application:" |
|||
msgstr "Een toepassing zoeken:" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:382 |
|||
msgid "Application name" |
|||
msgstr "Naam toepassing" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:389 |
|||
msgid "Applications" |
|||
msgstr "Toepassingen" |
@ -1,483 +0,0 @@ |
|||
# Translation of resourcesMonitor-fork in LANGUAGE |
|||
# Copyright (C) 2023 |
|||
# This file is distributed under the same license as the resourcesMonitor-fork package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: resourcesMonitor-fork\n" |
|||
"Report-Msgid-Bugs-To: https://github.com/orblazer/plasma-applet-resources-monitor\n" |
|||
"POT-Creation-Date: 2023-05-31 18:43+0200\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <LL@li.org>\n" |
|||
"Language: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
|
|||
#: ../contents/config/config.qml:6 |
|||
#: ../contents/ui/config/ConfigData.qml:120 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:79 |
|||
msgctxt "Config header" |
|||
msgid "General" |
|||
msgstr "" |
|||
|
|||
#: ../contents/config/config.qml:11 |
|||
msgctxt "Config header" |
|||
msgid "Data" |
|||
msgstr "" |
|||
|
|||
#: ../contents/config/config.qml:16 |
|||
msgctxt "Config header" |
|||
msgid "Appearance" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/functions.js:20 |
|||
msgctxt "kilobyte suffix" |
|||
msgid "Bps" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/functions.js:28 |
|||
msgctxt "kilobit suffix" |
|||
msgid "bps" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/functions.js:36 |
|||
msgctxt "kibibyte suffix" |
|||
msgid "iB/s" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/graph/CpuGraph.qml:41 |
|||
msgctxt "Graph label" |
|||
msgid "Clock" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/graph/CpuGraph.qml:41 |
|||
#: ../contents/ui/components/graph/GpuGraph.qml:32 |
|||
msgctxt "Graph label" |
|||
msgid "Temp." |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/graph/DisksGraph.qml:28 |
|||
msgctxt "Graph label" |
|||
msgid "Read" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/graph/DisksGraph.qml:28 |
|||
msgctxt "Graph label" |
|||
msgid "Write" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/graph/GpuGraph.qml:56 |
|||
msgctxt "Percent unit" |
|||
msgid "%1%" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/graph/NetworkGraph.qml:31 |
|||
msgctxt "Graph label" |
|||
msgid "Receiving" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/components/graph/NetworkGraph.qml:31 |
|||
msgctxt "Graph label" |
|||
msgid "Sending" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:76 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:361 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:122 |
|||
msgctxt "Chart name" |
|||
msgid "CPU" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:81 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:386 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:209 |
|||
msgctxt "Chart name" |
|||
msgid "Memory" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:86 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:436 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:315 |
|||
msgctxt "Chart name" |
|||
msgid "GPU" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:91 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:468 |
|||
#: ../contents/ui/config/ConfigData.qml:239 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:352 |
|||
msgctxt "Chart name" |
|||
msgid "Disks I/O" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:96 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:411 |
|||
#: ../contents/ui/config/ConfigData.qml:142 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:270 |
|||
msgctxt "Chart name" |
|||
msgid "Network" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:115 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:116 |
|||
msgctxt "Config header" |
|||
msgid "Charts" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:120 |
|||
msgctxt "Config header" |
|||
msgid "Text" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:125 |
|||
msgctxt "Config header" |
|||
msgid "Colors" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:143 |
|||
msgid "Vertical layout" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:148 |
|||
msgid "History amount:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:155 |
|||
msgid "Width:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:162 |
|||
msgid "Height:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:169 |
|||
msgid "Margin:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:180 |
|||
msgid "Fill opacity:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:192 |
|||
msgid "Charts order" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:280 |
|||
msgid "Drop shadows" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:285 |
|||
msgid "Font scale:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:297 |
|||
msgid "Text displayment:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:303 |
|||
msgctxt "Text displayment" |
|||
msgid "Always" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:306 |
|||
msgctxt "Text displayment" |
|||
msgid "On hover" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:309 |
|||
msgctxt "Text displayment" |
|||
msgid "Hints when hover" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:319 |
|||
msgid "Placement:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:325 |
|||
msgctxt "Text placement" |
|||
msgid "Top left" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:328 |
|||
msgctxt "Text placement" |
|||
msgid "Top right" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:331 |
|||
msgctxt "Text placement" |
|||
msgid "Bottom left" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:334 |
|||
msgctxt "Text placement" |
|||
msgid "Bottom right" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:351 |
|||
msgid "Charts colors" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:367 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:442 |
|||
msgctxt "Chart config" |
|||
msgid "Usage:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:369 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:394 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:419 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:426 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:444 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:451 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:476 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:483 |
|||
msgctxt "Chart color" |
|||
msgid "Choose series color" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:374 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:456 |
|||
msgctxt "Chart config" |
|||
msgid "Temperature:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:376 |
|||
#: ../contents/ui/config/ConfigAppearance.qml:458 |
|||
msgctxt "Chart color" |
|||
msgid "Choose text color" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:392 |
|||
msgctxt "Chart config" |
|||
msgid "Physical:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:399 |
|||
msgctxt "Chart config" |
|||
msgid "Swap:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:401 |
|||
msgctxt "Chart color" |
|||
msgid "Choose color of series and text" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:417 |
|||
#: ../contents/ui/config/ConfigData.qml:191 |
|||
msgctxt "Chart config" |
|||
msgid "Receiving:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:424 |
|||
#: ../contents/ui/config/ConfigData.qml:215 |
|||
msgctxt "Chart config" |
|||
msgid "Sending:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:449 |
|||
msgctxt "Chart config" |
|||
msgid "Memory:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:474 |
|||
#: ../contents/ui/config/ConfigData.qml:250 |
|||
msgctxt "Chart config" |
|||
msgid "Read:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:481 |
|||
#: ../contents/ui/config/ConfigData.qml:274 |
|||
msgctxt "Chart config" |
|||
msgid "Write:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:489 |
|||
msgid "Threshold text colors" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:495 |
|||
msgid "Warning status:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:497 |
|||
msgid "Choose text color when the value is in warning status" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:502 |
|||
msgid "Critical status:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigAppearance.qml:504 |
|||
msgid "Choose text color when the value is in critical status" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:39 |
|||
#: ../contents/ui/config/ConfigData.qml:67 |
|||
msgid "Custom" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:125 |
|||
msgctxt "Config header" |
|||
msgid "Thresholds" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:148 |
|||
msgid "Network interfaces:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:185 |
|||
#: ../contents/ui/config/ConfigData.qml:244 |
|||
msgid "Maximum transfer speed" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:298 |
|||
msgctxt "Config header" |
|||
msgid "Graphic card" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:305 |
|||
msgid "Graphic card:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:347 |
|||
msgid "Warning" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:354 |
|||
msgid "Critical" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:361 |
|||
msgid "CPU Temperature:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:393 |
|||
msgid "Physical Memory Usage:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigData.qml:417 |
|||
msgid "GPU Temperature:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:84 |
|||
msgctxt "Config header" |
|||
msgid "Click action" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:101 |
|||
msgid "Update interval:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:110 |
|||
msgid "%1 seconds" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:128 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:215 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:276 |
|||
msgid "Visibility:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:134 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:170 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:221 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:282 |
|||
msgid "Disabled" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:137 |
|||
msgid "Total usage" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:140 |
|||
msgid "System usage" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:143 |
|||
msgid "User usage" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:163 |
|||
msgid "Clock visibility:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:173 |
|||
msgctxt "Agregator" |
|||
msgid "Average" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:176 |
|||
msgctxt "Agregator" |
|||
msgid "Minimum" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:179 |
|||
msgctxt "Agregator" |
|||
msgid "Maximum" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:199 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:341 |
|||
msgid "Show temperature" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:224 |
|||
msgid "Physical memory (in KiB)" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:227 |
|||
msgid "Physical memory (in %)" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:230 |
|||
msgid "Application memory (in KiB)" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:233 |
|||
msgid "Application memory (in %)" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:259 |
|||
msgid "Show swap" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:285 |
|||
msgid "In kibibyte (KiB/s)" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:288 |
|||
msgid "In kilobit (Kbps)" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:291 |
|||
msgid "In kilobyte (KBps)" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:327 |
|||
#: ../contents/ui/config/ConfigGeneral.qml:364 |
|||
msgid "Enabled?" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:331 |
|||
msgid "Show memory" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:336 |
|||
msgid "Memory in percent" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:380 |
|||
msgid "Search an application:" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:382 |
|||
msgid "Application name" |
|||
msgstr "" |
|||
|
|||
#: ../contents/ui/config/ConfigGeneral.qml:389 |
|||
msgid "Applications" |
|||
msgstr "" |
Loading…
Reference in new issue