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