This commit is contained in:
2026-05-01 22:05:33 -05:00
parent 5a84a8f294
commit b7bf86aab7
34 changed files with 1224 additions and 574 deletions

View File

@@ -97,11 +97,30 @@ animations {
// enable transparency // enable transparency
window-rule { window-rule {
match is-active=false match is-active=false
opacity 1.0 //inactive transparency opacity 0.8 //inactive transparency
background-effect {
blur true
//xray false
}
} }
window-rule { window-rule {
match is-active=true match is-active=true
opacity 1.0 //active transparency opacity 0.95 //active transparency
background-effect {
blur true
//xray false
}
}
// Make top and overlay layers use the regular blur (if enabled),
// while bottom and background layers keep using the efficient xray blur.
layer-rule {
match layer="top"
match layer="overlay"
background-effect {
//blur true
xray false
}
} }
window-rule { window-rule {
draw-border-with-background false draw-border-with-background false

View File

@@ -20,14 +20,14 @@ window-rule {
//} //}
// WORKSAPCE: VM // WORKSAPCE: VM
workspace "VM" { //workspace "VM" {
open-on-output "LG Electronics LG ULTRAGEAR 101NTLELA752" // open-on-output "LG Electronics LG ULTRAGEAR 101NTLELA752"
} //}
window-rule { //window-rule {
match app-id="virt-manager" // match app-id="virt-manager"
open-on-workspace "VM" // open-on-workspace "VM"
} //}
window-rule { //window-rule {
match app-id="VirtualBox Manager" // match app-id="VirtualBox Manager"
open-on-workspace "VM" // open-on-workspace "VM"
} //}

View File

@@ -1,11 +1,10 @@
import QtQuick
import QtQuick.Layouts
import Quickshell
import qs.Commons import qs.Commons
import qs.Widgets import qs.Widgets
import qs.Services.UI import qs.Services.UI
import qs.Services.System import qs.Services.System
import QtQuick
import QtQuick.Layouts
import Quickshell
Item { Item {
id: root id: root
@@ -18,43 +17,65 @@ Item {
property int sectionWidgetIndex: -1 property int sectionWidgetIndex: -1
property int sectionWidgetsCount: 0 property int sectionWidgetsCount: 0
// ---------- Configuration ---------- // ── Configuration ──
property var cfg: pluginApi?.pluginSettings || ({}) property var cfg: pluginApi?.pluginSettings || ({})
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({}) property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
property string arrowType: cfg.arrowType || defaults.arrowType || "chevron" property string arrowType: cfg.arrowType ?? defaults.arrowType
property int minWidth: cfg.minWidth || defaults.minWidth || 0
property bool useCustomColors: cfg.useCustomColors ?? defaults.useCustomColors property bool useCustomColors: cfg.useCustomColors ?? defaults.useCustomColors
property bool showNumbers: cfg.showNumbers ?? defaults.showNumbers property bool showNumbers: cfg.showNumbers ?? defaults.showNumbers
property bool forceMegabytes: cfg.forceMegabytes ?? defaults.forceMegabytes
property color colorSilent: root.useCustomColors && cfg.colorSilent || Color.mSurfaceVariant property color colorSilent: root.useCustomColors && cfg.colorSilent || Color.mSurfaceVariant
property color colorTx: root.useCustomColors && cfg.colorTx || Color.mSecondary property color colorTx: root.useCustomColors && cfg.colorTx || Color.mSecondary
property color colorRx: root.useCustomColors && cfg.colorRx || Color.mPrimary property color colorRx: root.useCustomColors && cfg.colorRx || Color.mPrimary
property color colorText: root.useCustomColors && cfg.colorText || Color.mOnSurfaceVariant property color colorText: root.useCustomColors && cfg.colorText || Color.mOnSurfaceVariant
property int byteThresholdActive: cfg.byteThresholdActive || defaults.byteThresholdActive || 1024 property int byteThresholdActive: cfg.byteThresholdActive ?? defaults.byteThresholdActive
property real fontSizeModifier: cfg.fontSizeModifier || defaults.fontSizeModifier || 1 property real fontSizeModifier: cfg.fontSizeModifier ?? defaults.fontSizeModifier
property real iconSizeModifier: cfg.iconSizeModifier || defaults.iconSizeModifier || 1 property real iconSizeModifier: cfg.iconSizeModifier ?? defaults.iconSizeModifier
property real spacingInbetween: cfg.spacingInbetween || defaults.spacingInbetween || 0 property real spacingInbetween: cfg.spacingInbetween ?? defaults.spacingInbetween
property real contentMargin: cfg.contentMargin ?? defaults.contentMargin ?? Style.marginS
property bool useCustomFont: cfg.useCustomFont ?? defaults.useCustomFont
property string customFontFamily: cfg.customFontFamily ?? defaults.customFontFamily
property bool customFontBold: cfg.customFontBold ?? defaults.customFontBold
property bool customFontItalic: cfg.customFontItalic ?? defaults.customFontItalic
property bool horizontalNumbers: cfg.horizontalLayout ?? defaults.horizontalLayout
readonly property string resolvedFontFamily: {
if (root.useCustomFont && root.customFontFamily)
return root.customFontFamily;
return Settings.data.ui.fontDefault;
}
readonly property int resolvedFontWeight: {
if (root.useCustomFont && root.customFontBold)
return Font.Bold;
return Style.fontWeightMedium;
}
readonly property bool resolvedFontItalic: root.useCustomFont && root.customFontItalic
readonly property bool numbersVisible: root.showNumbers && barIsSpacious && !barIsVertical
property string barPosition: Settings.data.bar.position || "top" property string barPosition: Settings.data.bar.position || "top"
property string barDensity: Settings.data.bar.density || "compact" property string barDensity: Settings.data.bar.density || "compact"
property bool barIsSpacious: barDensity != "mini" property bool barIsSpacious: barDensity != "mini"
property bool barIsVertical: barPosition === "left" || barPosition === "right" property bool barIsVertical: barPosition === "left" || barPosition === "right"
readonly property real contentWidth: barIsVertical ? Style.capsuleHeight : Math.max(contentRow.implicitWidth, minWidth) readonly property real contentWidth: barIsVertical ? Style.capsuleHeight : contentRow.implicitWidth + root.contentMargin * 2
readonly property real contentHeight: barIsVertical ? Math.round(contentRow.implicitHeight + Style.marginM * 2) : Style.capsuleHeight readonly property real contentHeight: barIsVertical ? Math.round(contentRow.implicitHeight + Style.marginM * 2) : Style.capsuleHeight
implicitWidth: contentWidth implicitWidth: contentWidth
implicitHeight: contentHeight implicitHeight: contentHeight
// ---------- Widget ---------- // ── Widget ──
property real txSpeed: SystemStatService.txSpeed property string txSpeed: (SystemStatService.formatSpeed(SystemStatService.txSpeed).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s").padStart(8, " ")
property real rxSpeed: SystemStatService.rxSpeed property string rxSpeed: (SystemStatService.formatSpeed(SystemStatService.rxSpeed).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s").padStart(8, " ")
Rectangle { Rectangle {
id: visualCapsule id: visualCapsule
@@ -62,56 +83,117 @@ Item {
y: Style.pixelAlignCenter(parent.height, height) y: Style.pixelAlignCenter(parent.height, height)
width: root.contentWidth width: root.contentWidth
height: root.contentHeight height: root.contentHeight
color: root.useCustomColors && cfg.colorBackground || Style.capsuleColor color: Style.capsuleColor
radius: Style.radiusM radius: Style.radiusM
border.color: Style.capsuleBorderColor border.color: Style.capsuleBorderColor
border.width: Style.capsuleBorderWidth border.width: Style.capsuleBorderWidth
RowLayout { RowLayout {
id: contentRow id: contentRow
anchors.centerIn: parent anchors.centerIn: parent
spacing: Style.marginS spacing: Style.marginS
// Vertical layout: stacked values to the left
Column { Column {
visible: root.showNumbers && barIsSpacious && !barIsVertical visible: root.numbersVisible && !root.horizontalNumbers
spacing: root.spacingInbetween spacing: root.spacingInbetween
NText { NText {
visible: true horizontalAlignment: Text.AlignRight
text: convertBytes(root.txSpeed) text: root.txSpeed
color: root.colorText color: root.colorText
pointSize: Style.barFontSize * 0.75 * root.fontSizeModifier pointSize: Style.barFontSize * root.fontSizeModifier
font.family: root.resolvedFontFamily
font.weight: root.resolvedFontWeight
font.italic: root.resolvedFontItalic
} }
NText { NText {
visible: true horizontalAlignment: Text.AlignRight
text: convertBytes(root.rxSpeed) text: root.rxSpeed
color: root.colorText color: root.colorText
pointSize: Style.barFontSize * 0.75 * root.fontSizeModifier pointSize: Style.barFontSize * root.fontSizeModifier
font.family: root.resolvedFontFamily
font.weight: root.resolvedFontWeight
font.italic: root.resolvedFontItalic
} }
} }
// Horizontal layout: TX value left
NText {
visible: root.numbersVisible && root.horizontalNumbers
horizontalAlignment: Text.AlignRight
text: root.rxSpeed
color: root.colorText
pointSize: Style.barFontSize * root.fontSizeModifier
font.family: root.resolvedFontFamily
font.weight: root.resolvedFontWeight
font.italic: root.resolvedFontItalic
}
// Icons
Column { Column {
spacing: -10.0 + root.spacingInbetween spacing: -10.0 + root.spacingInbetween
NIcon { NIcon {
icon: arrowType + "-up" icon: arrowType + "-up"
color: root.txSpeed > root.byteThresholdActive ? root.colorTx : root.colorSilent color: SystemStatService.txSpeed >= root.byteThresholdActive ? root.colorTx : root.colorSilent
pointSize: Style.fontSizeL * root.iconSizeModifier pointSize: Style.fontSizeL * root.iconSizeModifier
} }
NIcon { NIcon {
icon: arrowType + "-down" icon: arrowType + "-down"
color: root.rxSpeed > root.byteThresholdActive ? root.colorRx : root.colorSilent color: SystemStatService.rxSpeed >= root.byteThresholdActive ? root.colorRx : root.colorSilent
pointSize: Style.fontSizeL * root.iconSizeModifier pointSize: Style.fontSizeL * root.iconSizeModifier
} }
} }
// Horizontal layout: RX value right
NText {
visible: root.numbersVisible && root.horizontalNumbers
horizontalAlignment: Text.AlignLeft
text: root.txSpeed
color: root.colorText
pointSize: Style.barFontSize * root.fontSizeModifier
font.family: root.resolvedFontFamily
font.weight: root.resolvedFontWeight
font.italic: root.resolvedFontItalic
}
} }
} }
// ---------- Interaction ---------- // ── Interaction ──
HoverHandler {
id: hoverHandler
onHoveredChanged: {
if (hovered) {
closeTimer.stop();
hoverTimer.start();
} else {
hoverTimer.stop();
closeTimer.start();
}
}
}
Timer {
id: hoverTimer
interval: 500
onTriggered: {
if (hoverHandler.hovered && root.pluginApi && !pluginApi.panelOpenScreen)
pluginApi.openPanel(root.screen, root);
}
}
Timer {
id: closeTimer
interval: 250
onTriggered: {
if (!hoverHandler.hovered && root.pluginApi && pluginApi.panelOpenScreen)
pluginApi.togglePanel(root.screen, root);
}
}
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent
@@ -127,7 +209,7 @@ Item {
model: [ model: [
{ {
"label": I18n.tr("actions.widget-settings"), "label": root.pluginApi?.tr("actions.widget-settings"),
"action": "widget-settings", "action": "widget-settings",
"icon": "settings" "icon": "settings"
}, },
@@ -143,25 +225,4 @@ Item {
} }
} }
} }
// ---------- Utilities ----------
function convertBytes(bytesPerSecond) {
const KB = 1024;
const MB = KB * 1024;
let value;
let unit;
if (bytesPerSecond < MB & !root.forceMegabytes) {
value = bytesPerSecond / KB;
unit = "KB";
} else {
value = bytesPerSecond / MB;
unit = "MB";
}
const text = value.toFixed(1) + " " + unit;
return text.padStart(10, " ");
}
} }

View File

@@ -0,0 +1,103 @@
import qs.Commons
import qs.Modules.MainScreen
import qs.Services.UI
import qs.Services.System
import qs.Widgets
import QtQuick
import QtQuick.Layouts
Item {
id: root
readonly property var geometryPlaceholder: panelContent
readonly property bool allowAttach: true
property var pluginApi: null
property var cfg: pluginApi?.pluginSettings || ({})
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
property string arrowType: cfg.arrowType ?? defaults.arrowType
property real contentPreferredWidth: 440 * Style.uiScaleRatio
property real contentPreferredHeight: panelContent.implicitHeight + Style.marginL * 2
anchors.fill: parent
Component.onCompleted: {
if (pluginApi) {
Logger.i("NetworkIndicator", "Panel initialized");
}
}
ColumnLayout {
id: panelContent
anchors.fill: parent
anchors.margins: Style.marginL
NBox {
Layout.fillWidth: true
Layout.preferredHeight: 90 * Style.uiScaleRatio
ColumnLayout {
anchors.fill: parent
anchors.margins: Style.marginS
anchors.bottomMargin: Style.radiusM * 0.5
spacing: Style.marginXS
RowLayout {
Layout.fillWidth: true
spacing: Style.marginXS
NIcon {
icon: arrowType + "-down"
pointSize: Style.fontSizeXS
color: Color.mPrimary
}
NText {
text: (SystemStatService.formatSpeed(SystemStatService.rxSpeed).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s").padStart(8, " ")
pointSize: Style.fontSizeXS
color: Color.mPrimary
font.family: Settings.data.ui.fontFixed
Layout.rightMargin: Style.marginS
}
NIcon {
icon: arrowType + "-up"
pointSize: Style.fontSizeXS
color: Color.mSecondary
}
NText {
text: (SystemStatService.formatSpeed(SystemStatService.txSpeed).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s").padStart(8, " ")
pointSize: Style.fontSizeXS
color: Color.mSecondary
font.family: Settings.data.ui.fontFixed
}
Item {
Layout.fillWidth: true
}
}
NGraph {
Layout.fillWidth: true
Layout.fillHeight: true
values: SystemStatService.rxSpeedHistory
values2: SystemStatService.txSpeedHistory
minValue: 0
maxValue: SystemStatService.rxMaxSpeed
minValue2: 0
maxValue2: SystemStatService.txMaxSpeed
color: Color.mPrimary
color2: Color.mSecondary
strokeWidth: Math.max(1, Style.uiScaleRatio)
fill: true
fillOpacity: 0.15
updateInterval: SystemStatService.networkIntervalMs
animateScale: true
}
}
}
}
}

View File

@@ -1,13 +1,16 @@
# NetworkIndicator Plugin for Noctalia # NetworkIndicator Plugin for Noctalia
A compact Noctalia bar widget that displays current network upload (TX) and download (RX) activity, with optional live throughput values. A compact Noctalia bar widget that displays current network upload (TX) and download (RX) activity, with optional live throughput values and a hover-activated graph panel.
## Features ## Features
- **TX/RX Activity Indicators**: Separate icons for upload (TX) and download (RX). - **TX/RX Activity Indicators**: Separate icons for upload (TX) and download (RX).
- **Active/Idle Coloring**: Icons switch between active and silent colors based on a configurable traffic threshold. - **Active/Idle Coloring**: Icons switch between "active" and "silent" colors based on a configurable traffic threshold.
- **Optional Throughput Values**: Displays formatted TX/RX speeds as text (shown only when the bar is spacious and horizontal). - **Optional Throughput Values**: Displays formatted TX/RX speeds as text (shown only when the bar is spacious and horizontal).
- **Vertical and Horizontal Layouts**: Stack TX/RX values on the left of the arrows, or place them side by side with arrows centered in between.
- **Unit Formatting**: Automatically switches between KB/s and MB/s, or can be configured to always display MB/s. - **Unit Formatting**: Automatically switches between KB/s and MB/s, or can be configured to always display MB/s.
- **Custom Font**: Override the default font for speed values, with optional bold and italic styles.
- **Network Graph Panel**: Hover over the widget to open a live graph showing RX and TX history from the system monitor.
- **Theme Support**: Uses Noctalia theme colors by default, with optional custom colors. - **Theme Support**: Uses Noctalia theme colors by default, with optional custom colors.
- **Configurable Settings**: Provides a comprehensive set of user-adjustable options. - **Configurable Settings**: Provides a comprehensive set of user-adjustable options.
@@ -19,25 +22,32 @@ This plugin is part of the `noctalia-plugins` repository.
Access the plugin settings in Noctalia to configure the following options: Access the plugin settings in Noctalia to configure the following options:
- **Icon Type**: Select the icon style used for TX/RX: `arrow`, `arrow-narrow`, `caret`, `chevron`. - **Icon Type**: Select the icon style used for TX/RX: `arrow`, `arrow-bar`, `arrow-big`, `arrow-narrow`, `caret`, `chevron`, `chevron-compact`, `fold`.
- **Minimum Widget Width**: Enforce a minimum width for the widget. - **Show Values**: Display formatted TX/RX speeds as numbers. Automatically hidden on vertical bars and when using "mini" density.
- **Show Active Threshold**: Set the traffic threshold in bytes per second (B/s) above which TX/RX is considered “active”.
- **Show Values**: Display formatted TX/RX speeds as numbers. This option is automatically hidden on vertical bars and when using “mini” density.
- **Force Megabytes**: Always display values in MB/s instead of switching to KB/s at low traffic levels. - **Force Megabytes**: Always display values in MB/s instead of switching to KB/s at low traffic levels.
- **Horizontal Layout**: Place TX and RX values side by side instead of stacked.
- **Minimum Width**: Set a minimum width for the widget to prevent resizing when values change.
- **Content Margin**: Horizontal padding on both sides of the widget content.
- **Show Active Threshold**: Set the traffic threshold in bytes per second (B/s) above which TX/RX is considered "active".
- **Vertical Spacing**: Adjust the spacing between the TX and RX elements. - **Vertical Spacing**: Adjust the spacing between the TX and RX elements.
- **Font Size Modifier**: Scale the text size. - **Font Size Modifier**: Scale the text size.
- **Icon Size Modifier**: Scale the icon size. - **Icon Size Modifier**: Scale the icon size.
- **Custom Colors**: When enabled, configure the following colors: TX Active, RX Active, RX/TX Inactive, and Text. - **Custom Font**: Override the default font with any installed font, with bold and italic options.
- **Custom Colors**: When enabled, configure TX Active, RX Active, RX/TX Inactive, Text, Font, and Background colors.
## Usage ## Usage
- Add the widget to your Noctalia bar. - Add the widget to your Noctalia bar.
- Hover over the widget to open the network graph panel.
- Right-click the widget to access settings.
- Configure the plugin settings as required. - Configure the plugin settings as required.
## Requirements ## Requirements
- Noctalia 3.6.0 or later. - Noctalia 4.7.6 or later.
## Technical Details ## Technical Details
- The widget reads `SystemStatService.txSpeed` and `SystemStatService.rxSpeed`; therefore, the polling interval is determined by that service. - The widget reads `SystemStatService.txSpeed` and `SystemStatService.rxSpeed`; the polling interval is determined by that service.
- The graph panel uses `SystemStatService.rxSpeedHistory` and `SystemStatService.txSpeedHistory` with `NGraph` from the Noctalia Shell.
- The panel opens on hover with a short delay and closes automatically when the cursor leaves the widget.

View File

@@ -1,7 +1,8 @@
import QtQuick
import QtQuick.Layouts
import qs.Commons import qs.Commons
import qs.Widgets import qs.Widgets
import qs.Services.System
import QtQuick
import QtQuick.Layouts
ColumnLayout { ColumnLayout {
id: root id: root
@@ -13,294 +14,338 @@ ColumnLayout {
property var cfg: pluginApi?.pluginSettings || ({}) property var cfg: pluginApi?.pluginSettings || ({})
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({}) property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
property string arrowType: cfg.arrowType || defaults.arrowType property string editArrowType: cfg.arrowType ?? defaults.arrowType
property int minWidth: cfg.minWidth || defaults.minWidth property int editByteThresholdActive: cfg.byteThresholdActive ?? defaults.byteThresholdActive
property real editFontSizeModifier: cfg.fontSizeModifier ?? defaults.fontSizeModifier
property bool editHorizontalLayout: cfg.horizontalLayout ?? defaults.horizontalLayout ?? false
property real editIconSizeModifier: cfg.iconSizeModifier ?? defaults.iconSizeModifier
property bool editShowNumbers: cfg.showNumbers ?? defaults.showNumbers
property real editSpacingInbetween: cfg.spacingInbetween ?? defaults.spacingInbetween
property real editContentMargin: cfg.contentMargin ?? defaults.contentMargin ?? Style.marginS
property bool useCustomColors: cfg.useCustomColors ?? defaults.useCustomColors property bool editUseCustomFont: cfg.useCustomFont ?? defaults.useCustomFont ?? false
property bool showNumbers: cfg.showNumbers ?? defaults.showNumbers property string editCustomFontFamily: cfg.customFontFamily ?? defaults.customFontFamily ?? ""
property bool forceMegabytes: cfg.forceMegabytes ?? defaults.forceMegabytes property bool editCustomFontBold: cfg.customFontBold ?? defaults.customFontBold ?? false
property bool editCustomFontItalic: cfg.customFontItalic ?? defaults.customFontItalic ?? false
property color colorSilent: root.useCustomColors && cfg.colorSilent || Color.mSurfaceVariant property bool editUseCustomColors: cfg.useCustomColors ?? defaults.useCustomColors ?? false
property color colorTx: root.useCustomColors && cfg.colorTx || Color.mSecondary property color editColorBackground: editUseCustomColors && cfg.colorBackground || Style.capsuleColor
property color colorRx: root.useCustomColors && cfg.colorRx || Color.mPrimary property color editColorFont: editUseCustomColors && cfg.colorFont || Color.mOnSurface
property color colorText: root.useCustomColors && cfg.colorText || Qt.alpha(Color.mOnSurfaceVariant, 0.3) property color editColorRx: editUseCustomColors && cfg.colorRx || Color.mPrimary
property color colorBackground: root.useCustomColors && cfg.colorBackground || Style.capsuleColor property color editColorSilent: editUseCustomColors && cfg.colorSilent || Color.mSurfaceVariant
property color editColorText: editUseCustomColors && cfg.colorText || Qt.alpha(Color.mOnSurfaceVariant, 0.3)
property int byteThresholdActive: cfg.byteThresholdActive || defaults.byteThresholdActive property color editColorTx: editUseCustomColors && cfg.colorTx || Color.mSecondary
property real fontSizeModifier: cfg.fontSizeModifier || defaults.fontSizeModifier
property real iconSizeModifier: cfg.iconSizeModifier || defaults.iconSizeModifier
property real spacingInbetween: cfg.spacingInbetween || defaults.spacingInbetween
property string barPosition: Settings.data.bar.position || "top" property string barPosition: Settings.data.bar.position || "top"
property string barDensity: Settings.data.bar.density || "compact" property string barDensity: Settings.data.bar.density || "compact"
property bool barIsSpacious: root.barDensity != "mini" property bool barIsSpacious: barDensity !== "mini"
property bool barIsVertical: root.barPosition === "left" || barPosition === "right" property bool barIsVertical: barPosition === "left" || barPosition === "right"
spacing: Style.marginL
Component.onCompleted: {
Logger.i("NetworkIndicator", "Settings UI loaded");
}
function toIntOr(defaultValue, text) { function toIntOr(defaultValue, text) {
const v = parseInt(String(text).trim(), 10); const v = parseInt(String(text).trim(), 10);
return isNaN(v) ? defaultValue : v; return isNaN(v) ? defaultValue : v;
} }
// ---------- General ---------- function saveSettings() {
if (!pluginApi || !pluginApi.pluginSettings) {
Logger.e("NetworkIndicator", "Cannot save: pluginApi or pluginSettings is null");
return;
}
pluginApi.pluginSettings.arrowType = root.editArrowType;
pluginApi.pluginSettings.byteThresholdActive = root.editByteThresholdActive;
pluginApi.pluginSettings.showNumbers = root.editShowNumbers;
pluginApi.pluginSettings.horizontalLayout = root.editHorizontalLayout;
pluginApi.pluginSettings.fontSizeModifier = root.editFontSizeModifier;
pluginApi.pluginSettings.iconSizeModifier = root.editIconSizeModifier;
pluginApi.pluginSettings.spacingInbetween = root.editSpacingInbetween;
pluginApi.pluginSettings.contentMargin = root.editContentMargin;
pluginApi.pluginSettings.useCustomFont = root.editUseCustomFont;
pluginApi.pluginSettings.customFontFamily = root.editCustomFontFamily;
pluginApi.pluginSettings.customFontBold = root.editCustomFontBold;
pluginApi.pluginSettings.customFontItalic = root.editCustomFontItalic;
pluginApi.pluginSettings.useCustomColors = root.editUseCustomColors;
if (root.editUseCustomColors) {
pluginApi.pluginSettings.colorSilent = root.editColorSilent.toString();
pluginApi.pluginSettings.colorTx = root.editColorTx.toString();
pluginApi.pluginSettings.colorRx = root.editColorRx.toString();
pluginApi.pluginSettings.colorText = root.editColorText.toString();
pluginApi.pluginSettings.colorFont = root.editColorFont.toString();
pluginApi.pluginSettings.colorBackground = root.editColorBackground.toString();
}
pluginApi.saveSettings();
Logger.i("NetworkIndicator", "Settings saved");
}
Layout.rightMargin: Style.marginL
spacing: Style.marginL
// ── Icon ──
RowLayout {
NComboBox { NComboBox {
label: pluginApi?.tr("settings.iconType.label") currentKey: root.editArrowType
description: pluginApi?.tr("settings.iconType.desc") description: root.pluginApi?.tr("settings.iconType.desc")
label: root.pluginApi?.tr("settings.iconType.label")
model: root.iconNames.map(function (n) { model: root.iconNames.map(n => ({
return {
key: n, key: n,
name: n name: n
}; }))
})
currentKey: root.arrowType onSelected: key => root.editArrowType = key
onSelected: key => root.arrowType = key
} }
NDivider {
Layout.fillWidth: true
}
// ── General ──
NToggle {
checked: root.editShowNumbers
defaultValue: defaults.showNumbers ?? true
description: root.pluginApi?.tr("settings.showNumbers.desc")
label: root.pluginApi?.tr("settings.showNumbers.label")
visible: root.barIsSpacious && !root.barIsVertical
onToggled: c => root.editShowNumbers = c
}
NToggle {
checked: root.editHorizontalLayout
defaultValue: defaults.horizontalLayout ?? false
description: root.pluginApi?.tr("settings.horizontalLayout.desc")
label: root.pluginApi?.tr("settings.horizontalLayout.label")
visible: root.barIsSpacious && !root.barIsVertical
onToggled: c => root.editHorizontalLayout = c
}
NDivider {
Layout.fillWidth: true
}
// ── Layout ──
ColumnLayout { ColumnLayout {
spacing: -10.0 + root.spacingInbetween Layout.fillWidth: true
spacing: Style.marginXXS
NIcon { NLabel {
icon: arrowType + "-up" description: root.pluginApi?.tr("settings.contentMargin.desc")
color: Color.mSecondary label: root.pluginApi?.tr("settings.contentMargin.label")
pointSize: Style.fontSizeL * root.iconSizeModifier
} }
NIcon { NValueSlider {
icon: arrowType + "-down" Layout.fillWidth: true
color: Color.mPrimary from: 0
pointSize: Style.fontSizeL * root.iconSizeModifier stepSize: 1
} text: root.editContentMargin + "px"
} to: 20
} value: root.editContentMargin
NTextInput { onMoved: value => root.editContentMargin = value
label: pluginApi?.tr("settings.minWidth.label") }
description: pluginApi?.tr("settings.minWidth.desc")
placeholderText: String(root.minWidth)
text: String(root.minWidth)
onTextChanged: root.minWidth = root.toIntOr(0, text)
} }
NTextInput { NTextInput {
label: pluginApi?.tr("settings.byteThresholdActive.label") label: pluginApi?.tr("settings.byteThresholdActive.label")
description: pluginApi?.tr("settings.byteThresholdActive.desc") description: pluginApi?.tr("settings.byteThresholdActive.desc")
placeholderText: root.byteThresholdActive + " bytes" placeholderText: root.editByteThresholdActive + " bytes"
text: String(root.byteThresholdActive) text: String(root.editByteThresholdActive)
onTextChanged: root.byteThresholdActive = root.toIntOr(0, text) onTextChanged: root.editByteThresholdActive = root.toIntOr(0, text)
} }
NToggle {
label: pluginApi?.tr("settings.showNumbers.label")
description: pluginApi?.tr("settings.showNumbers.desc")
visible: barIsSpacious && !barIsVertical
checked: root.showNumbers
onToggled: function (checked) {
root.showNumbers = checked;
}
}
NToggle {
label: pluginApi?.tr("settings.forceMegabytes.label")
description: pluginApi?.tr("settings.forceMegabytes.desc")
visible: barIsSpacious && !barIsVertical
checked: root.forceMegabytes
onToggled: function (checked) {
root.forceMegabytes = checked;
}
}
NDivider {
visible: true
Layout.fillWidth: true
Layout.topMargin: Style.marginL
Layout.bottomMargin: Style.marginL
}
// ---------- Slider ----------
ColumnLayout { ColumnLayout {
spacing: Style.marginXXS
Layout.fillWidth: true Layout.fillWidth: true
spacing: Style.marginXXS
NLabel { NLabel {
label: pluginApi?.tr("settings.spacingInbetween.label") description: root.pluginApi?.tr("settings.spacingInbetween.desc")
description: pluginApi?.tr("settings.spacingInbetween.desc") label: root.pluginApi?.tr("settings.spacingInbetween.label")
} }
NValueSlider { NValueSlider {
Layout.fillWidth: true Layout.fillWidth: true
from: -5 from: -5
to: 5
stepSize: 1 stepSize: 1
value: root.spacingInbetween text: root.editSpacingInbetween.toFixed(0)
onMoved: value => root.spacingInbetween = value to: 5
text: root.spacingInbetween.toFixed(0) value: root.editSpacingInbetween
onMoved: value => root.editSpacingInbetween = value
} }
} }
ColumnLayout { ColumnLayout {
spacing: Style.marginXXS
Layout.fillWidth: true Layout.fillWidth: true
spacing: Style.marginXXS
NLabel { NLabel {
label: pluginApi?.tr("settings.fontSizeModifier.label") description: root.pluginApi?.tr("settings.fontSizeModifier.desc")
description: pluginApi?.tr("settings.fontSizeModifier.desc") label: root.pluginApi?.tr("settings.fontSizeModifier.label")
} }
NValueSlider { NValueSlider {
Layout.fillWidth: true Layout.fillWidth: true
from: 0.5 from: 0.5
to: 1.5
stepSize: 0.05 stepSize: 0.05
value: root.fontSizeModifier text: root.editFontSizeModifier.toFixed(2)
onMoved: value => root.fontSizeModifier = value to: 1.5
text: fontSizeModifier.toFixed(2) value: root.editFontSizeModifier
onMoved: value => root.editFontSizeModifier = value
} }
} }
ColumnLayout { ColumnLayout {
spacing: Style.marginXXS
Layout.fillWidth: true Layout.fillWidth: true
spacing: Style.marginXXS
NLabel { NLabel {
label: pluginApi?.tr("settings.iconSizeModifier.label") description: root.pluginApi?.tr("settings.iconSizeModifier.desc")
description: pluginApi?.tr("settings.iconSizeModifier.desc") label: root.pluginApi?.tr("settings.iconSizeModifier.label")
} }
NValueSlider { NValueSlider {
Layout.fillWidth: true Layout.fillWidth: true
from: 0.5 from: 0.5
to: 1.5
stepSize: 0.05 stepSize: 0.05
value: root.iconSizeModifier text: root.editIconSizeModifier.toFixed(2)
onMoved: value => root.iconSizeModifier = value to: 1.5
text: root.iconSizeModifier.toFixed(2) value: root.editIconSizeModifier
onMoved: value => root.editIconSizeModifier = value
} }
} }
NDivider { NDivider {
visible: true
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: Style.marginL
Layout.bottomMargin: Style.marginL
} }
// ---------- Colors ---------- // ── Font ──
NToggle { NToggle {
label: pluginApi?.tr("settings.useCustomColors.label") checked: root.editUseCustomFont
description: pluginApi?.tr("settings.useCustomColors.desc") defaultValue: defaults.useCustomFont ?? false
checked: root.useCustomColors description: root.pluginApi?.tr("settings.useCustomFont.desc")
onToggled: function (checked) { label: root.pluginApi?.tr("settings.useCustomFont.label")
root.useCustomColors = checked;
} onToggled: c => root.editUseCustomFont = c
} }
ColumnLayout { ColumnLayout {
visible: root.useCustomColors visible: root.editUseCustomFont
Layout.fillWidth: true
spacing: Style.marginL
NSearchableComboBox {
label: root.pluginApi?.tr("settings.customFontFamily.label")
description: root.pluginApi?.tr("settings.customFontFamily.desc")
model: FontService.availableFonts
currentKey: root.editCustomFontFamily || Qt.application.font.family
placeholder: root.pluginApi?.tr("settings.customFontFamily.placeholder")
searchPlaceholder: root.pluginApi?.tr("settings.customFontFamily.searchPlaceholder")
popupHeight: 420
onSelected: key => {
root.editCustomFontFamily = (key === Qt.application.font.family) ? "" : key;
}
}
NToggle {
checked: root.editCustomFontBold
defaultValue: defaults.customFontBold ?? false
description: root.pluginApi?.tr("settings.customFontBold.desc")
label: root.pluginApi?.tr("settings.customFontBold.label")
onToggled: c => root.editCustomFontBold = c
}
NToggle {
checked: root.editCustomFontItalic
defaultValue: defaults.customFontItalic ?? false
description: root.pluginApi?.tr("settings.customFontItalic.desc")
label: root.pluginApi?.tr("settings.customFontItalic.label")
onToggled: c => root.editCustomFontItalic = c
}
}
NDivider {
Layout.fillWidth: true
}
// ── Colors ──
NToggle {
checked: root.editUseCustomColors
defaultValue: defaults.useCustomColors ?? false
description: root.pluginApi?.tr("settings.useCustomColors.desc")
label: root.pluginApi?.tr("settings.useCustomColors.label")
onToggled: c => root.editUseCustomColors = c
}
ColumnLayout {
visible: root.editUseCustomColors
RowLayout { RowLayout {
NLabel { NLabel {
label: pluginApi?.tr("settings.colorTx.label")
description: pluginApi?.tr("settings.colorTx.desc")
Layout.alignment: Qt.AlignTop Layout.alignment: Qt.AlignTop
description: root.pluginApi?.tr("settings.colorTx.desc")
label: root.pluginApi?.tr("settings.colorTx.label")
} }
NColorPicker { NColorPicker {
selectedColor: root.colorTx selectedColor: root.editColorTx
onColorSelected: color => root.colorTx = color
onColorSelected: color => root.editColorTx = color
} }
} }
RowLayout { RowLayout {
NLabel { NLabel {
label: pluginApi?.tr("settings.colorRx.label") Layout.alignment: Qt.AlignTop
description: pluginApi?.tr("settings.colorRx.desc") description: root.pluginApi?.tr("settings.colorRx.desc")
label: root.pluginApi?.tr("settings.colorRx.label")
} }
NColorPicker { NColorPicker {
selectedColor: root.colorRx selectedColor: root.editColorRx
onColorSelected: color => root.colorRx = color
onColorSelected: color => root.editColorRx = color
} }
} }
RowLayout { RowLayout {
NLabel { NLabel {
label: pluginApi?.tr("settings.colorSilent.label") Layout.alignment: Qt.AlignTop
description: pluginApi?.tr("settings.colorSilent.desc") description: root.pluginApi?.tr("settings.colorSilent.desc")
label: root.pluginApi?.tr("settings.colorSilent.label")
} }
NColorPicker { NColorPicker {
selectedColor: root.colorSilent selectedColor: root.editColorSilent
onColorSelected: color => root.colorSilent = color
onColorSelected: color => root.editColorSilent = color
} }
} }
RowLayout { RowLayout {
NLabel { NLabel {
label: pluginApi?.tr("settings.colorText.label") Layout.alignment: Qt.AlignTop
description: pluginApi?.tr("settings.colorText.desc") description: root.pluginApi?.tr("settings.colorText.desc")
label: root.pluginApi?.tr("settings.colorText.label")
} }
NColorPicker { NColorPicker {
selectedColor: root.colorText selectedColor: root.editColorText
onColorSelected: color => root.colorText = color
}
}
RowLayout { onColorSelected: color => root.editColorText = color
NLabel {
label: pluginApi?.tr("settings.colorBackground.label")
description: pluginApi?.tr("settings.colorBackground.desc")
}
NColorPicker {
selectedColor: root.colorBackground
onColorSelected: color => root.colorBackground = color
} }
} }
} }
// ---------- Saving ----------
function saveSettings() {
if (!pluginApi) {
Logger.e("NetworkIndicator", "Cannot save settings: pluginApi is null");
return;
}
pluginApi.pluginSettings.useCustomColors = root.useCustomColors;
pluginApi.pluginSettings.showNumbers = root.showNumbers;
pluginApi.pluginSettings.forceMegabytes = root.forceMegabytes;
pluginApi.pluginSettings.arrowType = root.arrowType;
pluginApi.pluginSettings.minWidth = root.minWidth;
pluginApi.pluginSettings.byteThresholdActive = root.byteThresholdActive;
pluginApi.pluginSettings.fontSizeModifier = root.fontSizeModifier;
pluginApi.pluginSettings.iconSizeModifier = root.iconSizeModifier;
pluginApi.pluginSettings.spacingInbetween = root.spacingInbetween;
if (root.useCustomColors) {
pluginApi.pluginSettings.colorSilent = root.colorSilent.toString();
pluginApi.pluginSettings.colorTx = root.colorTx.toString();
pluginApi.pluginSettings.colorRx = root.colorRx.toString();
pluginApi.pluginSettings.colorText = root.colorText.toString();
pluginApi.pluginSettings.colorBackground = root.colorBackground.toString();
}
pluginApi.saveSettings();
Logger.i("NetworkIndicator", "Settings saved successfully");
}
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Widget-Einstellungen"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Aktivitätsschwellwert in Byte pro Sekunde (B/s) festlegen.", "desc": "Aktivitätsschwellwert in Byte pro Sekunde (B/s) festlegen.",
"label": "Aktivitätsschwellwert anzeigen" "label": "Aktivitätsschwellwert anzeigen"
}, },
"colorBackground": {
"desc": "Hintergrundfarbe festlegen.",
"label": "Hintergrund"
},
"colorRx": { "colorRx": {
"desc": "Symbolfarbe für Download (RX), wenn der Schwellwert überschritten ist.", "desc": "Symbolfarbe für Download (RX), wenn der Schwellwert überschritten ist.",
"label": "RX aktiv" "label": "RX aktiv"
@@ -24,26 +23,40 @@
"desc": "Symbolfarbe für Upload (TX), wenn der Schwellwert überschritten ist.", "desc": "Symbolfarbe für Upload (TX), wenn der Schwellwert überschritten ist.",
"label": "TX aktiv" "label": "TX aktiv"
}, },
"contentMargin": {
"desc": "Horizontaler Abstand auf beiden Seiten des Widget-Inhalts.",
"label": "Inhaltsrand"
},
"customFontBold": {
"desc": "Geschwindigkeitswerte fett darstellen.",
"label": "Fett"
},
"customFontFamily": {
"desc": "Schriftart für die Geschwindigkeitswerte wählen.",
"label": "Schriftart",
"placeholder": "Schriftart auswählen",
"searchPlaceholder": "Schriften suchen…"
},
"customFontItalic": {
"desc": "Geschwindigkeitswerte kursiv darstellen.",
"label": "Kursiv"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Schriftgröße relativ zum Standard skalieren.", "desc": "Schriftgröße relativ zum Standard skalieren.",
"label": "Schriftgrößen-Faktor" "label": "Schriftgrößen-Faktor"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Alle Verkehrs­werte in MB anzeigen, statt bei geringer Nutzung auf KB zu wechseln.", "desc": "TX- und RX-Werte nebeneinander statt übereinander anzeigen.",
"label": "Immer Megabyte (MB) verwenden" "label": "Horizontales Layout"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Symbolgröße relativ zum Standard skalieren.", "desc": "Symbolgröße relativ zum Standard skalieren.",
"label": "Symbolgrößen-Faktor" "label": "Symbolgrößen-Faktor"
}, },
"iconType": { "iconType": {
"desc": "Symbolstil auswählen", "desc": "Symbolstil für die TX/RX-Anzeigen auswählen.",
"label": "Symboltyp" "label": "Symboltyp"
}, },
"minWidth": {
"desc": "Mindestbreite für das Widget festlegen (in px).",
"label": "Minimale Widget-Breite"
},
"showNumbers": { "showNumbers": {
"desc": "Aktuelle RX/TX-Geschwindigkeiten als Zahlen anzeigen.", "desc": "Aktuelle RX/TX-Geschwindigkeiten als Zahlen anzeigen.",
"label": "Werte anzeigen" "label": "Werte anzeigen"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Eigene Farben statt der Standard-Themefarben verwenden.", "desc": "Eigene Farben statt der Standard-Themefarben verwenden.",
"label": "Eigene Farben" "label": "Eigene Farben"
},
"useCustomFont": {
"desc": "Standardschriftart für Geschwindigkeitswerte überschreiben.",
"label": "Eigene Schriftart"
} }
} }
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Widget settings"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Set the activity threshold in bytes per second (B/s).", "desc": "Set the activity threshold in bytes per second (B/s).",
"label": "Show Active Threshold" "label": "Show Active Threshold"
}, },
"colorBackground": {
"desc": "Set the background color for the widget.",
"label": "Background"
},
"colorRx": { "colorRx": {
"desc": "Set the download (RX) icon color when above the threshold.", "desc": "Set the download (RX) icon color when above the threshold.",
"label": "RX Active" "label": "RX Active"
@@ -24,13 +23,31 @@
"desc": "Set the upload (TX) icon color when above the threshold.", "desc": "Set the upload (TX) icon color when above the threshold.",
"label": "TX Active" "label": "TX Active"
}, },
"contentMargin": {
"desc": "Horizontal padding on both sides of the widget content.",
"label": "Content Margin"
},
"customFontBold": {
"desc": "Render speed values in bold.",
"label": "Bold"
},
"customFontFamily": {
"desc": "Choose a font for the speed values.",
"label": "Font",
"placeholder": "Select a font",
"searchPlaceholder": "Search fonts…"
},
"customFontItalic": {
"desc": "Render speed values in italic.",
"label": "Italic"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Scale the text size relative to the default.", "desc": "Scale the text size relative to the default.",
"label": "Font Size Modifier" "label": "Font Size Modifier"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Show all traffic values in MB instead of switching to KB for low usage.", "desc": "Place TX and RX values side by side instead of stacked.",
"label": "Force megabytes (MB)" "label": "Horizontal Layout"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Scale the icon size relative to the default.", "desc": "Scale the icon size relative to the default.",
@@ -40,10 +57,6 @@
"desc": "Choose the icon style used for the TX/RX indicators.", "desc": "Choose the icon style used for the TX/RX indicators.",
"label": "Icon Type" "label": "Icon Type"
}, },
"minWidth": {
"desc": "Set a minimum width for the widget (in px).",
"label": "Minimum Widget Width"
},
"showNumbers": { "showNumbers": {
"desc": "Display the current RX/TX speeds as numbers.", "desc": "Display the current RX/TX speeds as numbers.",
"label": "Show Values" "label": "Show Values"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Enable custom colors instead of theme defaults.", "desc": "Enable custom colors instead of theme defaults.",
"label": "Custom Colors" "label": "Custom Colors"
},
"useCustomFont": {
"desc": "Override the default font for speed values.",
"label": "Custom Font"
} }
} }
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Configuración del widget"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Establecer el umbral de actividad en bytes por segundo (B/s).", "desc": "Establecer el umbral de actividad en bytes por segundo (B/s).",
"label": "Mostrar umbral activo" "label": "Mostrar umbral activo"
}, },
"colorBackground": {
"desc": "Establecer el color de fondo para el widget.",
"label": "Antecedentes"
},
"colorRx": { "colorRx": {
"desc": "Establecer el color del icono de descarga (RX) cuando esté por encima del umbral.", "desc": "Establecer el color del icono de descarga (RX) cuando esté por encima del umbral.",
"label": "RX Activo" "label": "RX Activo"
@@ -24,13 +23,31 @@
"desc": "Establecer el color del icono de carga (TX) cuando esté por encima del umbral.", "desc": "Establecer el color del icono de carga (TX) cuando esté por encima del umbral.",
"label": "TX Activo" "label": "TX Activo"
}, },
"contentMargin": {
"desc": "Relleno horizontal en ambos lados del contenido del widget.",
"label": "Margen del contenido"
},
"customFontBold": {
"desc": "Mostrar los valores de velocidad en negrita.",
"label": "Negrita"
},
"customFontFamily": {
"desc": "Elegir una fuente para los valores de velocidad.",
"label": "Fuente",
"placeholder": "Seleccionar fuente",
"searchPlaceholder": "Buscar fuentes…"
},
"customFontItalic": {
"desc": "Mostrar los valores de velocidad en cursiva.",
"label": "Cursiva"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Escalar el tamaño del texto en relación con el predeterminado.", "desc": "Escalar el tamaño del texto en relación con el predeterminado.",
"label": "Modificador de tamaño de fuente" "label": "Modificador de tamaño de fuente"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Mostrar todos los valores de tráfico en MB en lugar de cambiar a KB para bajo uso.", "desc": "Colocar los valores TX y RX uno al lado del otro en lugar de apilados.",
"label": "Forzar megabytes (MB)" "label": "Diseño horizontal"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Escalar el tamaño del icono en relación con el tamaño predeterminado.", "desc": "Escalar el tamaño del icono en relación con el tamaño predeterminado.",
@@ -40,10 +57,6 @@
"desc": "Elige el estilo de icono utilizado para los indicadores TX/RX.", "desc": "Elige el estilo de icono utilizado para los indicadores TX/RX.",
"label": "Tipo de icono" "label": "Tipo de icono"
}, },
"minWidth": {
"desc": "Establecer un ancho mínimo para el widget (en px).",
"label": "Ancho mínimo del widget"
},
"showNumbers": { "showNumbers": {
"desc": "Mostrar las velocidades actuales de RX/TX como números.", "desc": "Mostrar las velocidades actuales de RX/TX como números.",
"label": "Mostrar valores" "label": "Mostrar valores"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Activar colores personalizados en lugar de los predeterminados del tema.", "desc": "Activar colores personalizados en lugar de los predeterminados del tema.",
"label": "Colores personalizados" "label": "Colores personalizados"
},
"useCustomFont": {
"desc": "Reemplazar la fuente predeterminada para los valores de velocidad.",
"label": "Fuente personalizada"
} }
} }
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Paramètres du widget"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Définir le seuil d'activité en octets par seconde (o/s).", "desc": "Définir le seuil d'activité en octets par seconde (o/s).",
"label": "Afficher le seuil actif" "label": "Afficher le seuil actif"
}, },
"colorBackground": {
"desc": "Définir la couleur d'arrière-plan du widget.",
"label": "Contexte"
},
"colorRx": { "colorRx": {
"desc": "Définir la couleur de l'icône de téléchargement (RX) lorsque la valeur est supérieure au seuil.", "desc": "Définir la couleur de l'icône de téléchargement (RX) lorsque la valeur est supérieure au seuil.",
"label": "RX Active" "label": "RX Active"
@@ -18,19 +17,37 @@
}, },
"colorText": { "colorText": {
"desc": "Définir la couleur du texte utilisée pour les valeurs RX et TX.", "desc": "Définir la couleur du texte utilisée pour les valeurs RX et TX.",
"label": "I am unable to help with that, as there is no text provided to translate. Please provide the text you would like translated." "label": "Texte"
}, },
"colorTx": { "colorTx": {
"desc": "Définir la couleur de l'icône de téléversement (TX) lorsque le seuil est dépassé.", "desc": "Définir la couleur de l'icône de téléversement (TX) lorsque le seuil est dépassé.",
"label": "TX Active" "label": "TX Active"
}, },
"contentMargin": {
"desc": "Marge horizontale des deux côtés du contenu du widget.",
"label": "Marge du contenu"
},
"customFontBold": {
"desc": "Afficher les valeurs de vitesse en gras.",
"label": "Gras"
},
"customFontFamily": {
"desc": "Choisir une police pour les valeurs de vitesse.",
"label": "Police",
"placeholder": "Sélectionner une police",
"searchPlaceholder": "Rechercher des polices…"
},
"customFontItalic": {
"desc": "Afficher les valeurs de vitesse en italique.",
"label": "Italique"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Mettre à l'échelle la taille du texte par rapport à la taille par défaut.", "desc": "Mettre à l'échelle la taille du texte par rapport à la taille par défaut.",
"label": "Modificateur de taille de police" "label": "Modificateur de taille de police"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Afficher toutes les valeurs de trafic en Mo au lieu de passer en Ko pour une faible utilisation.", "desc": "Afficher les valeurs TX et RX côte à côte au lieu de les empiler.",
"label": "Forcer les mégaoctets (Mo)" "label": "Disposition horizontale"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Ajuster la taille de l'icône par rapport à la taille par défaut.", "desc": "Ajuster la taille de l'icône par rapport à la taille par défaut.",
@@ -40,10 +57,6 @@
"desc": "Choisissez le style d'icône utilisé pour les indicateurs TX/RX.", "desc": "Choisissez le style d'icône utilisé pour les indicateurs TX/RX.",
"label": "Type d'icône" "label": "Type d'icône"
}, },
"minWidth": {
"desc": "Définir une largeur minimale pour le widget (en px).",
"label": "Largeur minimale du widget"
},
"showNumbers": { "showNumbers": {
"desc": "Afficher les vitesses RX/TX actuelles sous forme de nombres.", "desc": "Afficher les vitesses RX/TX actuelles sous forme de nombres.",
"label": "Afficher les valeurs" "label": "Afficher les valeurs"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Activer les couleurs personnalisées au lieu des couleurs par défaut du thème.", "desc": "Activer les couleurs personnalisées au lieu des couleurs par défaut du thème.",
"label": "Couleurs personnalisées" "label": "Couleurs personnalisées"
},
"useCustomFont": {
"desc": "Remplacer la police par défaut pour les valeurs de vitesse.",
"label": "Police personnalisée"
} }
} }
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Widget beállítások"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Állítsa be az aktivitási küszöbértéket bájt/másodpercben (B/s).", "desc": "Állítsa be az aktivitási küszöbértéket bájt/másodpercben (B/s).",
"label": "Aktív küszöbérték mutatása" "label": "Aktív küszöbérték mutatása"
}, },
"colorBackground": {
"desc": "Állítsa be a widget háttérszínét.",
"label": "Háttér"
},
"colorRx": { "colorRx": {
"desc": "Állítsa be a letöltés (RX) ikon színét, ha az meghaladja a küszöbértéket.", "desc": "Állítsa be a letöltés (RX) ikon színét, ha az meghaladja a küszöbértéket.",
"label": "RX Aktív" "label": "RX Aktív"
@@ -18,19 +17,37 @@
}, },
"colorText": { "colorText": {
"desc": "Állítsa be az RX és TX értékekhez használt szövegszínt.", "desc": "Állítsa be az RX és TX értékekhez használt szövegszínt.",
"label": "Általános" "label": "Szöveg"
}, },
"colorTx": { "colorTx": {
"desc": "Állítsa be a feltöltés (TX) ikon színét, ha a küszöbérték felett van.", "desc": "Állítsa be a feltöltés (TX) ikon színét, ha a küszöbérték felett van.",
"label": "TX Aktív" "label": "TX Aktív"
}, },
"contentMargin": {
"desc": "Vízszetes padding a widget tartalma mindkét oldalán.",
"label": "Tartalom margó"
},
"customFontBold": {
"desc": "Sebességértékek vastag betűvel.",
"label": "Vastag"
},
"customFontFamily": {
"desc": "Válasszon betűtípust a sebességértékekhez.",
"label": "Betűtípus",
"placeholder": "Betűtípus kiválasztása",
"searchPlaceholder": "Betűtípusok keresése…"
},
"customFontItalic": {
"desc": "Sebességértékek dőlt betűvel.",
"label": "Dőlt"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "A szövegméret skálázása az alapértelmezett mérethez képest.", "desc": "A szövegméret skálázása az alapértelmezett mérethez képest.",
"label": "Betűméret módosító" "label": "Betűméret módosító"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Az összes forgalmi értéket MB-ban mutassa, ahelyett, hogy alacsony használat esetén KB-ra váltana.", "desc": "TX és RX értékek egymás mellett, nem egymás alatt.",
"label": "Megabájt (MB) kényszerítése" "label": "Vízszintes elrendezés"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Az ikonméret skálázása az alapértelmezett mérethez képest.", "desc": "Az ikonméret skálázása az alapértelmezett mérethez képest.",
@@ -40,10 +57,6 @@
"desc": "Válaszd ki az TX/RX indikátorokhoz használt ikonkészletet.", "desc": "Válaszd ki az TX/RX indikátorokhoz használt ikonkészletet.",
"label": "Ikon típusa" "label": "Ikon típusa"
}, },
"minWidth": {
"desc": "Állítson be egy minimális szélességet a widget számára (px-ben).",
"label": "Minimum Widget Szélesség"
},
"showNumbers": { "showNumbers": {
"desc": "A pillanatnyi RX/TX sebességek megjelenítése számként.", "desc": "A pillanatnyi RX/TX sebességek megjelenítése számként.",
"label": "Értékek megjelenítése" "label": "Értékek megjelenítése"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Egyéni színek engedélyezése a téma alapértelmezett színei helyett.", "desc": "Egyéni színek engedélyezése a téma alapértelmezett színei helyett.",
"label": "Egyéni színek" "label": "Egyéni színek"
},
"useCustomFont": {
"desc": "Az alapértelmezett betűtípus felülírása a sebességértékekhez.",
"label": "Egyéni betűtípus"
} }
} }
} }

View File

@@ -1,60 +1,77 @@
{ {
"actions": {
"widget-settings": "Impostazioni widget"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Imposta la soglia di attività in byte al secondo (B/s).", "desc": "Imposta la soglia di attività in byte al secondo (B/s).",
"label": "Zeige Aktive Schwelle" "label": "Mostra soglia attiva"
},
"colorBackground": {
"desc": "Imposta il colore di sfondo per il widget.",
"label": "Hintergrund"
}, },
"colorRx": { "colorRx": {
"desc": "Imposta il colore dell'icona di download (RX) quando è sopra la soglia.", "desc": "Imposta il colore dell'icona di download (RX) quando sopra la soglia.",
"label": "RX Aktiv" "label": "RX Attivo"
}, },
"colorSilent": { "colorSilent": {
"desc": "Imposta il colore dell'icona quando il traffico è al di sotto della soglia.", "desc": "Imposta il colore dell'icona quando il traffico è sotto la soglia.",
"label": "RX/TX Neaktivan" "label": "RX/TX Inattivo"
}, },
"colorText": { "colorText": {
"desc": "Imposta il colore del testo utilizzato sia per i valori RX che TX.", "desc": "Imposta il colore del testo utilizzato per i valori RX e TX.",
"label": "Please provide the English text you would like me to translate. I need the text to be able to provide the translation." "label": "Testo"
}, },
"colorTx": { "colorTx": {
"desc": "Määritä lähetyskuvakkeen (TX) väri, kun raja-arvo ylittyy.", "desc": "Imposta il colore dell'icona di upload (TX) quando sopra la soglia.",
"label": "TX Aktibo" "label": "TX Attivo"
},
"contentMargin": {
"desc": "Padding orizzontale su entrambi i lati del contenuto del widget.",
"label": "Margine contenuto"
},
"customFontBold": {
"desc": "Visualizza i valori di velocità in grassetto.",
"label": "Grassetto"
},
"customFontFamily": {
"desc": "Scegli un font per i valori di velocità.",
"label": "Font",
"placeholder": "Seleziona un font",
"searchPlaceholder": "Cerca font…"
},
"customFontItalic": {
"desc": "Visualizza i valori di velocità in corsivo.",
"label": "Corsivo"
}, },
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Skala textstorleken relativt standardstorleken.", "desc": "Scala la dimensione del testo rispetto al valore predefinito.",
"label": "Modifikator veličine fonta" "label": "Modificatore dimensione font"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Zeigen Sie alle Verkehrswerte in MB an, anstatt bei geringer Nutzung auf KB umzuschalten.", "desc": "Posiziona i valori TX e RX fianco a fianco invece che impilati.",
"label": "Megabajtów siłą (MB)" "label": "Layout orizzontale"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Mérje a ikon méretét a alapértelmezetthez képest.", "desc": "Scala la dimensione dell'icona rispetto al valore predefinito.",
"label": "Modifikator za veličinu ikone" "label": "Modificatore dimensione icona"
}, },
"iconType": { "iconType": {
"desc": "Alege stilul pictogramei folosit pentru indicatorii TX/RX.", "desc": "Scegli lo stile dell'icona usata per gli indicatori TX/RX.",
"label": "Tip ikonë" "label": "Tipo icona"
},
"minWidth": {
"desc": "Imposta una larghezza minima per il widget (in px).",
"label": "Breite des minimalen Widgets"
}, },
"showNumbers": { "showNumbers": {
"desc": "Zeige die aktuellen RX/TX-Geschwindigkeiten als Zahlen an.", "desc": "Visualizza le velocità RX/TX attuali come numeri.",
"label": "Ipakita ang mga Halaga" "label": "Mostra valori"
}, },
"spacingInbetween": { "spacingInbetween": {
"desc": "Rregulloje hapësirën midis elementeve RX/TX.", "desc": "Regola lo spazio tra gli elementi RX/TX.",
"label": "Vertikaler Abstand" "label": "Spaziatura verticale"
}, },
"useCustomColors": { "useCustomColors": {
"desc": "Aktiviere benutzerdefinierte Farben anstelle der Standardfarben des Designs.", "desc": "Attiva i colori personalizzati invece dei colori predefiniti del tema.",
"label": "Ngjyra të personalizuara" "label": "Colori personalizzati"
},
"useCustomFont": {
"desc": "Sovrascrivi il font predefinito per i valori di velocità.",
"label": "Font personalizzato"
} }
} }
} }

View File

@@ -1,12 +1,11 @@
{ {
"actions": {
"widget-settings": "ウィジェット設定"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "アクティビティの閾値をバイト毎秒 (B/s) で設定します。", "desc": "アクティビティの閾値をバイト毎秒 (B/s) で設定します。",
"label": "アクティブなしきい値を表示" "label": "アクティブ値を表示"
},
"colorBackground": {
"desc": "ウィジェットの背景色を設定します。",
"label": "背景"
}, },
"colorRx": { "colorRx": {
"desc": "閾値を超えた場合のダウンロード (RX) アイコンの色を設定します。", "desc": "閾値を超えた場合のダウンロード (RX) アイコンの色を設定します。",
@@ -18,19 +17,37 @@
}, },
"colorText": { "colorText": {
"desc": "RX と TX の両方の値に使用するテキストの色を設定します。", "desc": "RX と TX の両方の値に使用するテキストの色を設定します。",
"label": "申し訳ありませんが、翻訳するテキストが提供されていません。テキストを入力してください。" "label": "テキスト"
}, },
"colorTx": { "colorTx": {
"desc": "閾値を超えた場合のアップロード (TX) アイコンの色を設定します。", "desc": "閾値を超えた場合のアップロード (TX) アイコンの色を設定します。",
"label": "TX アクティブ" "label": "TX アクティブ"
}, },
"contentMargin": {
"desc": "ウィジェットコンテンツの両サイドの水平パディング。",
"label": "コンテンツマージン"
},
"customFontBold": {
"desc": "速度値を太字で表示。",
"label": "太字"
},
"customFontFamily": {
"desc": "速度値に使用するフォントを選択してください。",
"label": "フォント",
"placeholder": "フォントを選択",
"searchPlaceholder": "フォントを検索…"
},
"customFontItalic": {
"desc": "速度値を斜体で表示。",
"label": "斜体"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "テキストのサイズをデフォルトを基準に調整します。", "desc": "テキストのサイズをデフォルトを基準に調整します。",
"label": "フォントサイズ変更" "label": "フォントサイズ変更"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "低い使用量でもKBに切り替えずに、すべてのトラフィック値をMBで表示する。", "desc": "TXとRXの値を縦並びではなく横並びで表示。",
"label": "メガバイトを強制的に実行する" "label": "水平レイアウト"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "デフォルトに対するアイコンのサイズを調整します。", "desc": "デフォルトに対するアイコンのサイズを調整します。",
@@ -40,21 +57,21 @@
"desc": "TX/RXインジケーターに使用するアイコンのスタイルを選択してください。", "desc": "TX/RXインジケーターに使用するアイコンのスタイルを選択してください。",
"label": "アイコンの種類" "label": "アイコンの種類"
}, },
"minWidth": {
"desc": "ウィジェットの最小幅をpxで設定します。",
"label": "ウィジェットの最小幅"
},
"showNumbers": { "showNumbers": {
"desc": "現在のRX/TX速度を数値で表示する。", "desc": "現在のRX/TX速度を数値で表示。",
"label": "値を表示" "label": "値を表示"
}, },
"spacingInbetween": { "spacingInbetween": {
"desc": "RX/TX要素間の間隔を調整してください。", "desc": "RX/TX要素間の間隔を調整してください。",
"label": "垂直方向の間隔" "label": "垂直間隔"
}, },
"useCustomColors": { "useCustomColors": {
"desc": "テーマのデフォルトの代わりにカスタムカラーを有効にする。", "desc": "テーマのデフォルトの代わりにカスタムカラーを有効にする。",
"label": "カスタムカラー" "label": "カスタムカラー"
},
"useCustomFont": {
"desc": "速度値のデフォルトフォントを上書き。",
"label": "カスタムフォント"
} }
} }
} }

View File

@@ -1,15 +1,14 @@
{ {
"actions": {
"widget-settings": "Mîhengên widgetê"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Sînorê çalakiyê bi bayt di duyemîn de (B/s) destnîşan bike.", "desc": "Sînorê çalakiyê bi bayt di duyemîn de (B/s) destnîşan bike.",
"label": "Derheqê Çalakîyê Nîşan Bide" "label": "Derheqê Çalakîyê Nîşan Bide"
}, },
"colorBackground": {
"desc": "Rengê paşxaneyê ji bo widgetê destnîşan bike.",
"label": "Paşxan"
},
"colorRx": { "colorRx": {
"desc": "Dema rengê îkona daxistinê (RX) dema ku ji tixûbê derbas dibe, destnîşan bike.", "desc": "Rengê îkona daxistinê (RX) dema ku ji tixûbê derbas dibe, destnîşan bike.",
"label": "RX Çalak" "label": "RX Çalak"
}, },
"colorSilent": { "colorSilent": {
@@ -18,19 +17,37 @@
}, },
"colorText": { "colorText": {
"desc": "Rengê nivîsê yê ku ji bo nirxên RX û TX tê bikaranîn, destnîşan bike.", "desc": "Rengê nivîsê yê ku ji bo nirxên RX û TX tê bikaranîn, destnîşan bike.",
"label": "Bar Height" "label": "Nivîs"
}, },
"colorTx": { "colorTx": {
"desc": "Rengê îkona barkirinê (TX) dema ku ji tixûbê derbas dibe, destnîşan bike.", "desc": "Rengê îkona barkirinê (TX) dema ku ji tixûbê derbas dibe, destnîşan bike.",
"label": "TX Çalak" "label": "TX Çalak"
}, },
"contentMargin": {
"desc": "Peddinga asayî li her aliyê naveroka widgetê.",
"label": "Berkêşana Naverokê"
},
"customFontBold": {
"desc": "Nirxên lezê bi qalın ve bike.",
"label": "Qalın"
},
"customFontFamily": {
"desc": "Ji bo nirxên lezê fontek hilbijêre.",
"label": "Font",
"placeholder": "Fontek hilbijêre",
"searchPlaceholder": "Font lêgerîn…"
},
"customFontItalic": {
"desc": "Nirxên lezê bi xwar ve bike.",
"label": "Xwar"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Mezinahiya nivîsê li gorî ya xwerû mezin bike.", "desc": "Mezinahiya nivîsê li gorî ya xwerû mezin bike.",
"label": "Guherînera Mezinahiya Tîpan" "label": "Guherînera Mezinahiya Tîpan"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Hemû nirxên trafîkê bi MB nîşan bide, li şûna ku ji bo bikaranîna kêm veguhere KB.", "desc": "Nirxên TX û RX li hev re biparêze, ne bi hev ve.",
"label": "Meqsed mekabyte (MB)" "label": "Sazmona_ASAYÎ"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Mezinahiya îkonê li gorî ya xwerû mezin bike.", "desc": "Mezinahiya îkonê li gorî ya xwerû mezin bike.",
@@ -40,21 +57,21 @@
"desc": "Şêwaza îkonê ya ku ji bo nîşanderên TX/RX tê bikaranîn hilbijêre.", "desc": "Şêwaza îkonê ya ku ji bo nîşanderên TX/RX tê bikaranîn hilbijêre.",
"label": "Cureyê Îkonê" "label": "Cureyê Îkonê"
}, },
"minWidth": {
"desc": "Ji bo widget firehiyeke kêmtirin (bi px) diyar bike.",
"label": "Firehiya Herî Kêm a Wîcêtê"
},
"showNumbers": { "showNumbers": {
"desc": "Leza lezahenên RX/TX yên niha wekî hejmaran.", "desc": "Leza lezahenên RX/TX yên niha wekî hejmaran.",
"label": "Nîşan bide Nirxan" "label": "Nîşan bide Nirxan"
}, },
"spacingInbetween": { "spacingInbetween": {
"desc": "Cihêtiya navbera elementên RX/TX eyar bike.", "desc": "Cihêtiya navbera elementên RX/TX eyar bike.",
"label": "Valahiya Rastkirin" "label": "Valahiya_Rastkirin"
}, },
"useCustomColors": { "useCustomColors": {
"desc": "Çalak bike rengên xwerû li şûna rengên xwerû yên temayê.", "desc": "Çalak bike rengên xwerû li şûna rengên xwerû yên temayê.",
"label": "Rengên Xweser" "label": "Rengên Xweser"
},
"useCustomFont": {
"desc": "Fontê DEFAULT ji bo nirxên lezê binpê kirin.",
"label": "Fontê Xweser"
} }
} }
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Widget-instellingen"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Stel de activiteitsdrempel in bytes per seconde (B/s) in.", "desc": "Stel de activiteitsdrempel in bytes per seconde (B/s) in.",
"label": "Actieve drempel weergeven" "label": "Actieve drempel weergeven"
}, },
"colorBackground": {
"desc": "Stel de achtergrondkleur voor de widget in.",
"label": "Achtergrond"
},
"colorRx": { "colorRx": {
"desc": "Stel de kleur van het download (RX) pictogram in wanneer deze boven de drempelwaarde ligt.", "desc": "Stel de kleur van het download (RX) pictogram in wanneer deze boven de drempelwaarde ligt.",
"label": "RX Actief" "label": "RX Actief"
@@ -22,15 +21,33 @@
}, },
"colorTx": { "colorTx": {
"desc": "Stel de kleur van het upload (TX) icoon in wanneer boven de drempelwaarde.", "desc": "Stel de kleur van het upload (TX) icoon in wanneer boven de drempelwaarde.",
"label": "TX Active" "label": "TX Actief"
},
"contentMargin": {
"desc": "Horizontale padding aan beide zijden van de widget-inhoud.",
"label": "Inhoudmarge"
},
"customFontBold": {
"desc": "Geef snelheidswaarden vetgedrukt weer.",
"label": "Vet"
},
"customFontFamily": {
"desc": "Kies een lettertype voor de snelheidswaarden.",
"label": "Lettertype",
"placeholder": "Selecteer lettertype",
"searchPlaceholder": "Lettertypen zoeken…"
},
"customFontItalic": {
"desc": "Geef snelheidswaarden scheefgedrukt weer.",
"label": "Schuin"
}, },
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Schaal de tekstgrootte ten opzichte van de standaard.", "desc": "Schaal de tekstgrootte ten opzichte van de standaard.",
"label": "Lettergrootte aanpassing" "label": "Lettergrootte aanpassing"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Toon alle verkeerswaarden in MB in plaats van over te schakelen naar KB bij laag gebruik.", "desc": "Plaats TX en RX waarden naast elkaar in plaats van gestapeld.",
"label": "Forceer megabytes (MB)" "label": "Horizontale lay-out"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Schaal de pictogramgrootte ten opzichte van de standaard.", "desc": "Schaal de pictogramgrootte ten opzichte van de standaard.",
@@ -40,10 +57,6 @@
"desc": "Kies de pictogramstijl die gebruikt wordt voor de TX/RX-indicatoren.", "desc": "Kies de pictogramstijl die gebruikt wordt voor de TX/RX-indicatoren.",
"label": "Icoontype" "label": "Icoontype"
}, },
"minWidth": {
"desc": "Stel een minimale breedte in voor de widget (in px).",
"label": "Minimale widgetbreedte"
},
"showNumbers": { "showNumbers": {
"desc": "Toon de huidige RX/TX snelheden als getallen.", "desc": "Toon de huidige RX/TX snelheden als getallen.",
"label": "Waarden weergeven" "label": "Waarden weergeven"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Schakel aangepaste kleuren in in plaats van de standaard themakleuren.", "desc": "Schakel aangepaste kleuren in in plaats van de standaard themakleuren.",
"label": "Aangepaste kleuren" "label": "Aangepaste kleuren"
},
"useCustomFont": {
"desc": "Overschrijf het standaard lettertype voor snelheidswaarden.",
"label": "Aangepast lettertype"
} }
} }
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Ustawienia widgetu"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Ustaw próg aktywności w bajtach na sekundę (B/s).", "desc": "Ustaw próg aktywności w bajtach na sekundę (B/s).",
"label": "Pokaż Aktywny Próg" "label": "Pokaż Aktywny Próg"
}, },
"colorBackground": {
"desc": "Ustaw kolor tła widżetu.",
"label": "Tło"
},
"colorRx": { "colorRx": {
"desc": "Ustaw kolor ikony pobierania (RX), gdy wartość przekroczy próg.", "desc": "Ustaw kolor ikony pobierania (RX), gdy wartość przekroczy próg.",
"label": "RX Aktywny" "label": "RX Aktywny"
@@ -18,19 +17,37 @@
}, },
"colorText": { "colorText": {
"desc": "Ustaw kolor tekstu używany zarówno dla wartości RX, jak i TX.", "desc": "Ustaw kolor tekstu używany zarówno dla wartości RX, jak i TX.",
"label": "Uptime" "label": "Tekst"
}, },
"colorTx": { "colorTx": {
"desc": "Ustaw kolor ikony wysyłania (TX), gdy przekroczony zostanie próg.", "desc": "Ustaw kolor ikony wysyłania (TX), gdy przekroczony zostanie próg.",
"label": "Aktywny TX" "label": "TX Aktywny"
},
"contentMargin": {
"desc": "Poziomy padding po obu stronach treści widgetu.",
"label": "Margines treści"
},
"customFontBold": {
"desc": "Wyświetlaj wartości prędkości pogrubionym tekstem.",
"label": "Pogrubiony"
},
"customFontFamily": {
"desc": "Wybierz czcionkę dla wartości prędkości.",
"label": "Czcionka",
"placeholder": "Wybierz czcionkę",
"searchPlaceholder": "Szukaj czcionek…"
},
"customFontItalic": {
"desc": "Wyświetlaj wartości prędkości kursywą.",
"label": "Kursywa"
}, },
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Skaluj rozmiar tekstu względem domyślnego.", "desc": "Skaluj rozmiar tekstu względem domyślnego.",
"label": "Modyfikator rozmiaru czcionki" "label": "Modyfikator rozmiaru czcionki"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Wyświetlaj wszystkie wartości transferu w MB zamiast przełączać się na KB przy niskim użyciu.", "desc": "Umieść wartości TX i RX obok siebie zamiast jedna nad drugą.",
"label": "Wymuś megabajty (MB)" "label": "Układ poziomy"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Skaluj rozmiar ikony względem domyślnego.", "desc": "Skaluj rozmiar ikony względem domyślnego.",
@@ -40,10 +57,6 @@
"desc": "Wybierz styl ikony używany dla wskaźników TX/RX.", "desc": "Wybierz styl ikony używany dla wskaźników TX/RX.",
"label": "Typ Ikony" "label": "Typ Ikony"
}, },
"minWidth": {
"desc": "Ustaw minimalną szerokość widżetu (w px).",
"label": "Minimalna szerokość widżetu"
},
"showNumbers": { "showNumbers": {
"desc": "Wyświetlaj aktualne prędkości RX/TX jako liczby.", "desc": "Wyświetlaj aktualne prędkości RX/TX jako liczby.",
"label": "Pokaż wartości" "label": "Pokaż wartości"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Włącz własne kolory zamiast domyślnych motywu.", "desc": "Włącz własne kolory zamiast domyślnych motywu.",
"label": "Własne kolory" "label": "Własne kolory"
},
"useCustomFont": {
"desc": "Zastąp domyślną czcionkę dla wartości prędkości.",
"label": "Własna czcionka"
} }
} }
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Configurações do widget"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Defina o limite de atividade em bytes por segundo (B/s).", "desc": "Defina o limite de atividade em bytes por segundo (B/s).",
"label": "Mostrar Limiar Ativo" "label": "Mostrar Limiar Ativo"
}, },
"colorBackground": {
"desc": "Definir a cor de fundo do widget.",
"label": "Fundo"
},
"colorRx": { "colorRx": {
"desc": "Defina a cor do ícone de download (RX) quando acima do limite.", "desc": "Defina a cor do ícone de download (RX) quando acima do limite.",
"label": "RX Ativo" "label": "RX Ativo"
@@ -24,13 +23,31 @@
"desc": "Definir a cor do ícone de upload (TX) quando acima do limite.", "desc": "Definir a cor do ícone de upload (TX) quando acima do limite.",
"label": "TX Ativo" "label": "TX Ativo"
}, },
"contentMargin": {
"desc": "Padding horizontal em ambos os lados do conteúdo do widget.",
"label": "Margem do conteúdo"
},
"customFontBold": {
"desc": "Renderizar valores de velocidade em negrito.",
"label": "Negrito"
},
"customFontFamily": {
"desc": "Escolha uma fonte para os valores de velocidade.",
"label": "Fonte",
"placeholder": "Selecionar fonte",
"searchPlaceholder": "Pesquisar fontes…"
},
"customFontItalic": {
"desc": "Renderizar valores de velocidade em itálico.",
"label": "Itálico"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Ajustar o tamanho do texto em relação ao padrão.", "desc": "Ajustar o tamanho do texto em relação ao padrão.",
"label": "Modificador de Tamanho da Fonte" "label": "Modificador de Tamanho da Fonte"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Mostrar todos os valores de tráfego em MB em vez de mudar para KB para baixo uso.", "desc": "Colocar valores TX e RX lado a lado em vez de empilhados.",
"label": "Forçar megabytes (MB)" "label": "Layout Horizontal"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Dimensionar o tamanho do ícone em relação ao padrão.", "desc": "Dimensionar o tamanho do ícone em relação ao padrão.",
@@ -40,10 +57,6 @@
"desc": "Escolha o estilo do ícone usado para os indicadores TX/RX.", "desc": "Escolha o estilo do ícone usado para os indicadores TX/RX.",
"label": "Tipo de Ícone" "label": "Tipo de Ícone"
}, },
"minWidth": {
"desc": "Defina uma largura mínima para o widget (em px).",
"label": "Largura Mínima do Widget"
},
"showNumbers": { "showNumbers": {
"desc": "Exibir as velocidades atuais de RX/TX como números.", "desc": "Exibir as velocidades atuais de RX/TX como números.",
"label": "Mostrar Valores" "label": "Mostrar Valores"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Ativar cores personalizadas em vez das cores padrão do tema.", "desc": "Ativar cores personalizadas em vez das cores padrão do tema.",
"label": "Cores Personalizadas" "label": "Cores Personalizadas"
},
"useCustomFont": {
"desc": "Substituir a fonte padrão para valores de velocidade.",
"label": "Fonte Personalizada"
} }
} }
} }

View File

@@ -1,49 +1,62 @@
{ {
"actions": {
"widget-settings": "Настройки виджета"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Установите порог активности в байтах в секунду (Б/с).", "desc": "Установите порог активности в байтах в секунду (Б/с).",
"label": "Показать активный порог" "label": "Показать активный порог"
}, },
"colorBackground": {
"desc": "Установить цвет фона для виджета.",
"label": "Фон"
},
"colorRx": { "colorRx": {
"desc": "Установить цвет значка загрузки (RX), когда он выше порогового значения.", "desc": "Установите цвет значка загрузки (RX), когда он выше порогового значения.",
"label": "RX Active" "label": "RX активен"
}, },
"colorSilent": { "colorSilent": {
"desc": "Установить цвет значка, когда трафик ниже порогового значения.", "desc": "Установите цвет значка, когда трафик ниже порогового значения.",
"label": "RX/TX неактивны" "label": "RX/TX неактивны"
}, },
"colorText": { "colorText": {
"desc": "Установить цвет текста, используемый для значений RX и TX.", "desc": "Установите цвет текста для значений RX и TX.",
"label": "Текст" "label": "Текст"
}, },
"colorTx": { "colorTx": {
"desc": "Установить цвет значка загрузки (TX) при превышении порогового значения.", "desc": "Установите цвет значка загрузки (TX) при превышении порогового значения.",
"label": "TX Active" "label": "TX активен"
},
"contentMargin": {
"desc": "Горизонтальный отступ по обеим сторонам содержимого виджета.",
"label": "Отступ содержимого"
},
"customFontBold": {
"desc": "Отображать значения скорости жирным шрифтом.",
"label": "Жирный"
},
"customFontFamily": {
"desc": "Выберите шрифт для значений скорости.",
"label": "Шрифт",
"placeholder": "Выбрать шрифт",
"searchPlaceholder": "Поиск шрифтов…"
},
"customFontItalic": {
"desc": "Отображать значения скорости курсивом.",
"label": "Курсив"
}, },
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Изменить размер текста относительно размера по умолчанию.", "desc": "Измените размер текста относительно размера по умолчанию.",
"label": "Изменение размера шрифта" "label": "Модификатор размера шрифта"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Показывать все значения трафика в МБ, вместо переключения на КБ при низком использовании.", "desc": "Разместите значения TX и RX рядом друг с другом, а не друг под другом.",
"label": "Принудительно мегабайты (МБ)" "label": "Горизонтальная раскладка"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Изменить размер значка относительно размера по умолчанию.", "desc": "Измените размер значка относительно размера по умолчанию.",
"label": "Изменение размера значков" "label": "Модификатор размера значка"
}, },
"iconType": { "iconType": {
"desc": "Выберите стиль значков, используемых для индикаторов TX/RX.", "desc": "Выберите стиль значков для индикаторов TX/RX.",
"label": "Тип значка" "label": "Тип значка"
}, },
"minWidth": {
"desc": "Установить минимальную ширину для виджета (в px).",
"label": "Минимальная ширина виджета"
},
"showNumbers": { "showNumbers": {
"desc": "Отображать текущие скорости RX/TX в виде чисел.", "desc": "Отображать текущие скорости RX/TX в виде чисел.",
"label": "Показать значения" "label": "Показать значения"
@@ -53,8 +66,12 @@
"label": "Вертикальный интервал" "label": "Вертикальный интервал"
}, },
"useCustomColors": { "useCustomColors": {
"desc": "Включить пользовательские цвета вместо цветов темы по умолчанию.", "desc": "Включите пользовательские цвета вместо цветов темы по умолчанию.",
"label": "Пользовательские цвета" "label": "Пользовательские цвета"
},
"useCustomFont": {
"desc": "Переопределите шрифт по умолчанию для значений скорости.",
"label": "Пользовательский шрифт"
} }
} }
} }

View File

@@ -1,13 +1,12 @@
{ {
"actions": {
"widget-settings": "Widget Ayarları"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Etkinlik eşiğini saniye başına bayt (B/s) cinsinden ayarlayın.", "desc": "Etkinlik eşiğini saniye başına bayt (B/s) cinsinden ayarlayın.",
"label": "Aktif Eşiği Göster" "label": "Aktif Eşiği Göster"
}, },
"colorBackground": {
"desc": "Araç için arka plan rengini ayarla.",
"label": "Arka plan"
},
"colorRx": { "colorRx": {
"desc": "Eşiğin üzerindeyken indirme (RX) simge rengini ayarla.", "desc": "Eşiğin üzerindeyken indirme (RX) simge rengini ayarla.",
"label": "RX Aktif" "label": "RX Aktif"
@@ -24,13 +23,31 @@
"desc": "Eşik değerinin üzerindeyken yükleme (TX) simge rengini ayarla.", "desc": "Eşik değerinin üzerindeyken yükleme (TX) simge rengini ayarla.",
"label": "TX Aktif" "label": "TX Aktif"
}, },
"contentMargin": {
"desc": "Widget içeriğinin her iki tarafında yatay dolgu.",
"label": "İçerik Kenar Boşluğu"
},
"customFontBold": {
"desc": "Hız değerlerini kalın olarak oluştur.",
"label": "Kalın"
},
"customFontFamily": {
"desc": "Hız değerleri için bir yazı tipi seçin.",
"label": "Yazı Tipi",
"placeholder": "Yazı tipi seçin",
"searchPlaceholder": "Yazı tipleri ara…"
},
"customFontItalic": {
"desc": "Hız değerlerini italik olarak oluştur.",
"label": "İtalik"
},
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Metin boyutunu varsayılana göre ölçekle.", "desc": "Metin boyutunu varsayılana göre ölçekle.",
"label": "Yazı Boyutu Değiştirici" "label": "Yazı Boyutu Değiştirici"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Düşük kullanımda KB'a geçmek yerine tüm trafik değerlerini MB olarak göster.", "desc": "TX ve RX değerlerini üst üste yerine yan yana yerleştir.",
"label": "Megabayt (MB) zorla" "label": "Yatay Düzen"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Simge boyutunu varsayılan değere göre ölçekle.", "desc": "Simge boyutunu varsayılan değere göre ölçekle.",
@@ -40,10 +57,6 @@
"desc": "TX/RX göstergeleri için kullanılan simge stilini seçin.", "desc": "TX/RX göstergeleri için kullanılan simge stilini seçin.",
"label": "Simge Türü" "label": "Simge Türü"
}, },
"minWidth": {
"desc": "Araç için minimum genişlik (piksel cinsinden) belirleyin.",
"label": "Minimum Widget Genişliği"
},
"showNumbers": { "showNumbers": {
"desc": "Mevcut RX/TX hızlarını sayı olarak görüntüle.", "desc": "Mevcut RX/TX hızlarını sayı olarak görüntüle.",
"label": "Değerleri Göster" "label": "Değerleri Göster"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Tema varsayılanları yerine özel renkleri etkinleştir.", "desc": "Tema varsayılanları yerine özel renkleri etkinleştir.",
"label": "Özel Renkler" "label": "Özel Renkler"
},
"useCustomFont": {
"desc": "Hız değerleri için varsayılan yazı tipini geçersiz kıl.",
"label": "Özel Yazı Tipi"
} }
} }
} }

View File

@@ -1,36 +1,53 @@
{ {
"actions": {
"widget-settings": "Налаштування віджета"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "Встановіть поріг активності в байтах на секунду (Б/с).", "desc": "Встановіть поріг активності в байтах на секунду (Б/с).",
"label": "Показати активний поріг" "label": "Показати активний поріг"
}, },
"colorBackground": {
"desc": "Встановити колір фону для віджета.",
"label": "Тло"
},
"colorRx": { "colorRx": {
"desc": "Встановити колір значка завантаження (RX), коли він перевищує поріг.", "desc": "Встановіть колір значка завантаження (RX), коли він перевищує поріг.",
"label": "RX Active" "label": "RX активний"
}, },
"colorSilent": { "colorSilent": {
"desc": "Встановити колір значка, коли трафік нижче порогового значення.", "desc": "Встановіть колір значка, коли трафік нижче порогового значення.",
"label": "RX/TX неактивні" "label": "RX/TX неактивні"
}, },
"colorText": { "colorText": {
"desc": "Встановити колір тексту, який використовується для значень RX та TX.", "desc": "Встановіть колір тексту, який використовується для значень RX та TX.",
"label": "Текст" "label": "Текст"
}, },
"colorTx": { "colorTx": {
"desc": "Встановити колір піктограми завантаження (TX), коли значення перевищує поріг.", "desc": "Встановіть колір піктограми завантаження (TX), коли значення перевищує поріг.",
"label": "TX Active" "label": "TX активний"
},
"contentMargin": {
"desc": "Горизонтальний відступ з обох боків вмісту віджета.",
"label": "Відступ вмісту"
},
"customFontBold": {
"desc": "Відображати значення швидкості жирним шрифтом.",
"label": "Жирний"
},
"customFontFamily": {
"desc": "Оберіть шрифт для значень швидкості.",
"label": "Шрифт",
"placeholder": "Обрати шрифт",
"searchPlaceholder": "Пошук шрифтів…"
},
"customFontItalic": {
"desc": "Відображати значення швидкості курсивом.",
"label": "Курсив"
}, },
"fontSizeModifier": { "fontSizeModifier": {
"desc": "Змінити розмір тексту відносно стандартного.", "desc": "Змінити розмір тексту відносно стандартного.",
"label": "Модифікатор розміру шрифту" "label": "Модифікатор розміру шрифту"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "Показувати всі значення трафіку в МБ замість переходу на КБ для низького використання.", "desc": "Розмістити значення TX та RX поруч, а не один під одним.",
"label": "Примусово мегабайти (МБ)" "label": "Горизонтальне розташування"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "Змінюйте розмір значка відносно стандартного.", "desc": "Змінюйте розмір значка відносно стандартного.",
@@ -40,10 +57,6 @@
"desc": "Виберіть стиль іконок, що використовуються для індикаторів TX/RX.", "desc": "Виберіть стиль іконок, що використовуються для індикаторів TX/RX.",
"label": "Тип іконки" "label": "Тип іконки"
}, },
"minWidth": {
"desc": "Встановити мінімальну ширину для віджета (у пікселях).",
"label": "Мінімальна ширина віджета"
},
"showNumbers": { "showNumbers": {
"desc": "Показувати поточні швидкості RX/TX у вигляді чисел.", "desc": "Показувати поточні швидкості RX/TX у вигляді чисел.",
"label": "Показати значення" "label": "Показати значення"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "Увімкнути власні кольори замість кольорів теми за замовчуванням.", "desc": "Увімкнути власні кольори замість кольорів теми за замовчуванням.",
"label": "Користувацькі кольори" "label": "Користувацькі кольори"
},
"useCustomFont": {
"desc": "Перевизначити шрифт за замовчуванням для значень швидкості.",
"label": "Користувацький шрифт"
} }
} }
} }

View File

@@ -1,20 +1,19 @@
{ {
"actions": {
"widget-settings": "小组件设置"
},
"settings": { "settings": {
"byteThresholdActive": { "byteThresholdActive": {
"desc": "设置活动阈值,单位为字节/秒 (B/s)。", "desc": "设置活动阈值,单位为字节/秒 (B/s)。",
"label": "显示活动阈值" "label": "显示活动阈值"
}, },
"colorBackground": {
"desc": "设置小部件的背景颜色。",
"label": "背景"
},
"colorRx": { "colorRx": {
"desc": "设置高于阈值时的下载RX图标颜色。", "desc": "设置高于阈值时的下载RX图标颜色。",
"label": "RX Active" "label": "RX 活跃"
}, },
"colorSilent": { "colorSilent": {
"desc": "当流量低于阈值时,设置图标颜色。", "desc": "当流量低于阈值时,设置图标颜色。",
"label": "RX/TX 无活动" "label": "RX/TX 非活跃"
}, },
"colorText": { "colorText": {
"desc": "设置用于RX和TX值的文本颜色。", "desc": "设置用于RX和TX值的文本颜色。",
@@ -22,28 +21,42 @@
}, },
"colorTx": { "colorTx": {
"desc": "设置上传TX图标颜色当高于阈值时。", "desc": "设置上传TX图标颜色当高于阈值时。",
"label": "TX Active" "label": "TX 活跃"
},
"contentMargin": {
"desc": "小组件内容两侧的水平内边距。",
"label": "内容边距"
},
"customFontBold": {
"desc": "以粗体显示速度值。",
"label": "粗体"
},
"customFontFamily": {
"desc": "为速度值选择字体。",
"label": "字体",
"placeholder": "选择字体",
"searchPlaceholder": "搜索字体…"
},
"customFontItalic": {
"desc": "以斜体显示速度值。",
"label": "斜体"
}, },
"fontSizeModifier": { "fontSizeModifier": {
"desc": "相对于默认值缩放文本大小。", "desc": "相对于默认值缩放文本大小。",
"label": "字体大小调整" "label": "字体大小调整"
}, },
"forceMegabytes": { "horizontalLayout": {
"desc": "显示所有流量值以MB为单位而不是在低使用量时切换到KB。", "desc": "将TX和RX值并排显示而不是堆叠。",
"label": "强制兆字节 (MB)" "label": "水平布局"
}, },
"iconSizeModifier": { "iconSizeModifier": {
"desc": "相对于默认值缩放图标大小。", "desc": "相对于默认值缩放图标大小。",
"label": "图标大小修改器" "label": "图标大小调整"
}, },
"iconType": { "iconType": {
"desc": "选择用于 TX/RX 指示器的图标样式。", "desc": "选择用于 TX/RX 指示器的图标样式。",
"label": "图标类型" "label": "图标类型"
}, },
"minWidth": {
"desc": "设置小部件的最小宽度(以像素为单位)。",
"label": "最小部件宽度"
},
"showNumbers": { "showNumbers": {
"desc": "以数字形式显示当前的 RX/TX 速度。", "desc": "以数字形式显示当前的 RX/TX 速度。",
"label": "显示数值" "label": "显示数值"
@@ -55,6 +68,10 @@
"useCustomColors": { "useCustomColors": {
"desc": "启用自定义颜色,而非主题默认颜色。", "desc": "启用自定义颜色,而非主题默认颜色。",
"label": "自定义颜色" "label": "自定义颜色"
},
"useCustomFont": {
"desc": "覆盖速度值的默认字体。",
"label": "自定义字体"
} }
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"id": "network-indicator", "id": "network-indicator",
"name": "Network Indicator", "name": "Network Indicator",
"version": "1.0.7", "version": "1.1.0",
"minNoctaliaVersion": "3.7.5", "minNoctaliaVersion": "4.7.6",
"author": "tonigineer", "author": "tonigineer",
"license": "MIT", "license": "MIT",
"repository": "https://github.com/noctalia-dev/noctalia-plugins", "repository": "https://github.com/noctalia-dev/noctalia-plugins",
@@ -14,6 +14,7 @@
], ],
"entryPoints": { "entryPoints": {
"barWidget": "BarWidget.qml", "barWidget": "BarWidget.qml",
"panel": "Panel.qml",
"settings": "Settings.qml" "settings": "Settings.qml"
}, },
"dependencies": { "dependencies": {
@@ -22,14 +23,16 @@
"metadata": { "metadata": {
"defaultSettings": { "defaultSettings": {
"arrowType": "caret", "arrowType": "caret",
"byteThresholdActive": 1024, "byteThresholdActive": 5000,
"fontSizeModifier": 1.0, "fontSizeModifier": 0.75,
"forceMegabytes": false,
"iconSizeModifier": 1.0, "iconSizeModifier": 1.0,
"minWidth": 0,
"showNumbers": true, "showNumbers": true,
"spacingInbetween": 0, "spacingInbetween": 0,
"useCustomColors": false "useCustomColors": false,
"useCustomFont": false,
"customFontBold": false,
"customFontItalic": false,
"horizontalLayout": false
} }
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 KiB

After

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -31,6 +31,7 @@ Item {
property bool enableToast: cfg.enableToast ?? defaults.enableToast ?? true property bool enableToast: cfg.enableToast ?? defaults.enableToast ?? true
property string activeColorKey: cfg.activeColor ?? defaults.activeColor ?? "primary" property string activeColorKey: cfg.activeColor ?? defaults.activeColor ?? "primary"
property string micFilterRegex: cfg.micFilterRegex ?? defaults.micFilterRegex ?? "" property string micFilterRegex: cfg.micFilterRegex ?? defaults.micFilterRegex ?? ""
property string camFilterRegex: cfg.camFilterRegex ?? defaults.camFilterRegex ?? ""
PwObjectTracker { PwObjectTracker {
objects: Pipewire.ready ? Pipewire.nodes.values : [] objects: Pipewire.ready ? Pipewire.nodes.values : []
@@ -44,8 +45,25 @@ Item {
onStreamFinished: { onStreamFinished: {
var appsString = this.text.trim(); var appsString = this.text.trim();
var apps = appsString.length > 0 ? appsString.split(',') : []; var apps = appsString.length > 0 ? appsString.split(',') : [];
root.camApps = apps;
root.camActive = apps.length > 0; var filterRegex = null;
if (root.camFilterRegex && root.camFilterRegex.length > 0) {
try {
filterRegex = new RegExp(root.camFilterRegex);
} catch (e) {
Logger.w("PrivacyIndicator: Invalid camFilterRegex:", root.camFilterRegex);
}
}
var appNames = [];
for (var i = 0; i < apps.length; i++) {
var appName = apps[i];
if (filterRegex && appName && filterRegex.test(appName)) continue;
if (appName && appNames.indexOf(appName) === -1) appNames.push(appName);
}
root.camApps = appNames;
root.camActive = appNames.length > 0;
} }
} }
} }
@@ -265,7 +283,7 @@ Item {
property bool oldMicActive: false property bool oldMicActive: false
onMicActiveChanged: { onMicActiveChanged: {
if (enableToast && micActive && !oldMicActive) { if (enableToast && micActive && !oldMicActive) {
ToastService.showNotice(pluginApi?.tr("toast.mic-on") || "Microphone is active", "", "microphone"); ToastService.showNotice(pluginApi?.tr("toast.mic-on"), "", "microphone");
} }
oldMicActive = micActive oldMicActive = micActive
} }
@@ -273,7 +291,7 @@ Item {
property bool oldCamActive: false property bool oldCamActive: false
onCamActiveChanged: { onCamActiveChanged: {
if (enableToast && camActive && !oldCamActive) { if (enableToast && camActive && !oldCamActive) {
ToastService.showNotice(pluginApi?.tr("toast.cam-on") || "Camera is active", "", "camera"); ToastService.showNotice(pluginApi?.tr("toast.cam-on"), "", "camera");
} }
oldCamActive = camActive oldCamActive = camActive
} }
@@ -285,7 +303,7 @@ Item {
property bool oldScrActive: false property bool oldScrActive: false
onScrActiveChanged: { onScrActiveChanged: {
if (enableToast && scrActive && !oldScrActive) { if (enableToast && scrActive && !oldScrActive) {
ToastService.showNotice(pluginApi?.tr("toast.screen-on") || "Screen sharing is active", "", "screen-share"); ToastService.showNotice(pluginApi?.tr("toast.screen-on"), "", "screen-share");
} }
oldScrActive = scrActive oldScrActive = scrActive
} }

View File

@@ -16,6 +16,7 @@ Item {
property real contentPreferredHeight: 450 * Style.uiScaleRatio property real contentPreferredHeight: 450 * Style.uiScaleRatio
readonly property var mainInstance: pluginApi?.mainInstance readonly property var mainInstance: pluginApi?.mainInstance
readonly property bool allowAttach: true
Rectangle { Rectangle {
id: panelContainer id: panelContainer
@@ -46,7 +47,7 @@ Item {
NText { NText {
Layout.fillWidth: true Layout.fillWidth: true
text: pluginApi?.tr("history.title") || "Access History" text: pluginApi?.tr("history.title")
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
pointSize: Style.fontSizeL pointSize: Style.fontSizeL
color: Color.mOnSurface color: Color.mOnSurface
@@ -154,7 +155,7 @@ Item {
NText { NText {
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
visible: (!mainInstance || mainInstance.accessHistory.length === 0) visible: (!mainInstance || mainInstance.accessHistory.length === 0)
text: pluginApi?.tr("history.empty") || "No recent access" text: pluginApi?.tr("history.empty")
color: Qt.alpha(Color.mOnSurface, 0.5) color: Qt.alpha(Color.mOnSurface, 0.5)
pointSize: Style.fontSizeM pointSize: Style.fontSizeM
Layout.topMargin: Style.marginL Layout.topMargin: Style.marginL

View File

@@ -18,6 +18,7 @@ ColumnLayout {
property string activeColor: cfg.activeColor ?? defaults.activeColor ?? "primary" property string activeColor: cfg.activeColor ?? defaults.activeColor ?? "primary"
property string inactiveColor: cfg.inactiveColor ?? defaults.inactiveColor ?? "none" property string inactiveColor: cfg.inactiveColor ?? defaults.inactiveColor ?? "none"
property string micFilterRegex: cfg.micFilterRegex ?? defaults.micFilterRegex property string micFilterRegex: cfg.micFilterRegex ?? defaults.micFilterRegex
property string camFilterRegex: cfg.camFilterRegex ?? defaults.camFilterRegex
spacing: Style.marginL spacing: Style.marginL
@@ -102,12 +103,21 @@ ColumnLayout {
NTextInput { NTextInput {
Layout.fillWidth: true Layout.fillWidth: true
label: pluginApi?.tr("settings.micFilterRegex.label") || "Microphone filter regex" label: pluginApi?.tr("settings.micFilterRegex.label")
description: pluginApi?.tr("settings.micFilterRegex.desc") || "Regex pattern to filter out microphone applications" description: pluginApi?.tr("settings.micFilterRegex.desc")
placeholderText: "effect_input.rnnoise|easyeffects" placeholderText: "effect_input.rnnoise|easyeffects"
text: root.micFilterRegex text: root.micFilterRegex
onTextChanged: root.micFilterRegex = text onTextChanged: root.micFilterRegex = text
} }
NTextInput {
Layout.fillWidth: true
label: pluginApi?.tr("settings.camFilterRegex.label")
description: pluginApi?.tr("settings.camFilterRegex.desc")
placeholderText: "droidcam"
text: root.camFilterRegex
onTextChanged: root.camFilterRegex = text
}
} }
function saveSettings() { function saveSettings() {
@@ -123,6 +133,7 @@ ColumnLayout {
pluginApi.pluginSettings.activeColor = root.activeColor; pluginApi.pluginSettings.activeColor = root.activeColor;
pluginApi.pluginSettings.inactiveColor = root.inactiveColor; pluginApi.pluginSettings.inactiveColor = root.inactiveColor;
pluginApi.pluginSettings.micFilterRegex = root.micFilterRegex; pluginApi.pluginSettings.micFilterRegex = root.micFilterRegex;
pluginApi.pluginSettings.camFilterRegex = root.camFilterRegex;
pluginApi.saveSettings(); pluginApi.saveSettings();

View File

@@ -1,9 +1,24 @@
{ {
"menu": {
"settings": "Widget Einstellungen"
},
"settings": { "settings": {
"activeColor": {
"desc": "Farbe der Symbole, wenn sie aktiv sind.",
"label": "Aktive Farbsymbol"
},
"hideInactive": { "hideInactive": {
"desc": "Mikrofon-, Kamera- und Bildschirmsymbole ausblenden, wenn sie inaktiv sind.", "desc": "Mikrofon-, Kamera- und Bildschirmsymbole ausblenden, wenn sie inaktiv sind.",
"label": "Inaktive Zustände ausblenden" "label": "Inaktive Zustände ausblenden"
}, },
"enableToast": {
"desc": "Zeige Toast Mitteilungen an, wenn sich einer der Zustände ändert.",
"label": "Aktiviere Toast Mitteilungen"
},
"inactiveColor": {
"desc": "Farbe der Symbole, wenn sie inaktiv sind.",
"label": "Inaktive Farbsymbol"
},
"iconSpacing": { "iconSpacing": {
"desc": "Den Abstand zwischen den Symbolen festlegen.", "desc": "Den Abstand zwischen den Symbolen festlegen.",
"label": "Symbolabstand" "label": "Symbolabstand"
@@ -12,13 +27,9 @@
"desc": "Alle äußeren Ränder des Widgets entfernen.", "desc": "Alle äußeren Ränder des Widgets entfernen.",
"label": "Ränder entfernen" "label": "Ränder entfernen"
}, },
"activeColor": { "micFilterRegex": {
"desc": "Farbe der Symbole, wenn sie aktiv sind.", "desc": "Regex Muster zum Herausfiltern von Mikrofon-Apps. Entsprechende Apps werden vollständig von der Erkennung ausgeschlossen.",
"label": "Aktive Farbsymbol" "label": "Regex für Mikrofonfilter"
},
"inactiveColor": {
"desc": "Farbe der Symbole, wenn sie inaktiv sind.",
"label": "Inaktive Farbsymbol"
} }
}, },
"tooltip": { "tooltip": {
@@ -31,9 +42,6 @@
"mic-on": "Mikrofon ist aktiv", "mic-on": "Mikrofon ist aktiv",
"screen-on": "Bildschirmfreigabe ist aktiv" "screen-on": "Bildschirmfreigabe ist aktiv"
}, },
"menu": {
"settings": "Widget-Einstellungen"
},
"history": { "history": {
"title": "Zugriffsverlauf", "title": "Zugriffsverlauf",
"empty": "Kein kürzlicher Zugriff", "empty": "Kein kürzlicher Zugriff",

View File

@@ -30,6 +30,10 @@
"micFilterRegex": { "micFilterRegex": {
"desc": "Regex pattern to filter out microphone applications. Matching apps are completely excluded from detection.", "desc": "Regex pattern to filter out microphone applications. Matching apps are completely excluded from detection.",
"label": "Microphone filter regex" "label": "Microphone filter regex"
},
"camFilterRegex": {
"desc": "Regex pattern to filter out camera applications. Matching apps are completely excluded from detection.",
"label": "Camera filter regex"
} }
}, },
"tooltip": { "tooltip": {

View File

@@ -1,9 +1,24 @@
{ {
"menu": {
"settings": "Paramètres du widget"
},
"settings": { "settings": {
"activeColor": {
"desc": "Couleur des icônes lorsqu'elles sont actives.",
"label": "Couleur d'icône active"
},
"hideInactive": { "hideInactive": {
"desc": "Masquer les icônes du micro, de la caméra et de lécran lorsquils sont inactifs.", "desc": "Masquer les icônes du micro, de la caméra et de lécran lorsquils sont inactifs.",
"label": "Masquer les états inactifs" "label": "Masquer les états inactifs"
}, },
"enableToast": {
"desc": "Afficher des messages toast lorsque l'un des états change.",
"label": "Activer les notifications toast"
},
"inactiveColor": {
"desc": "Couleur des icônes lorsqu'elles sont inactives.",
"label": "Couleur d'icône inactive"
},
"iconSpacing": { "iconSpacing": {
"desc": "Définir lespacement entre les icônes.", "desc": "Définir lespacement entre les icônes.",
"label": "Espacement des icônes" "label": "Espacement des icônes"
@@ -12,13 +27,13 @@
"desc": "Supprime toutes les marges extérieures du widget.", "desc": "Supprime toutes les marges extérieures du widget.",
"label": "Supprimer les marges" "label": "Supprimer les marges"
}, },
"activeColor": { "micFilterRegex": {
"desc": "Couleur des icônes lorsqu'elles sont actives.", "desc": "Motif Regex pour filtrer les applications de microphone. Les applications correspondantes sont complètement exclues de la détection.",
"label": "Couleur d'icône active" "label": "Regex de filtrage du microphone"
}, },
"inactiveColor": { "camFilterRegex": {
"desc": "Couleur des icônes lorsqu'elles sont inactives.", "desc": "Motif Regex pour filtrer les applications de caméra. Les applications correspondantes sont complètement exclues de la détection.",
"label": "Couleur d'icône inactive" "label": "Regex de filtrage de la caméra"
} }
}, },
"tooltip": { "tooltip": {
@@ -31,9 +46,6 @@
"mic-on": "Le microphone est actif", "mic-on": "Le microphone est actif",
"screen-on": "Le partage d'écran est actif" "screen-on": "Le partage d'écran est actif"
}, },
"menu": {
"settings": "Paramètres du widget"
},
"history": { "history": {
"title": "Historique d'accès", "title": "Historique d'accès",
"empty": "Aucun accès récent", "empty": "Aucun accès récent",

View File

@@ -0,0 +1,58 @@
{
"menu": {
"settings": "위젯 설정"
},
"settings": {
"activeColor": {
"desc": "활성 상태일 때 아이콘에 적용되는 색상입니다.",
"label": "활성 아이콘 색상"
},
"hideInactive": {
"desc": "비활성화된 상태의 마이크, 카메라, 화면 아이콘을 숨깁니다.",
"label": "비활성 상태 숨기기"
},
"enableToast": {
"desc": "상태가 변경될 때 토스트 알림을 표시합니다.",
"label": "토스트 알림 활성화"
},
"inactiveColor": {
"desc": "비활성 상태일 때 아이콘에 적용되는 색상입니다.",
"label": "비활성 아이콘 색상"
},
"iconSpacing": {
"desc": "아이콘 사이의 간격을 설정합니다.",
"label": "아이콘 간격"
},
"removeMargins": {
"desc": "위젯의 모든 외곽 여백을 제거합니다.",
"label": "여백 제거"
},
"micFilterRegex": {
"desc": "마이크를 사용하는 애플리케이션을 필터링하기 위한 정규식을 지정합니다. 일치하는 애플리케이션은 상태 감지에서 완전히 제외됩니다.",
"label": "마이크 필터 정규식"
},
"camFilterRegex": {
"desc": "카메라를 사용하는 애플리케이션을 필터링하기 위한 정규식을 지정합니다. 일치하는 애플리케이션은 상태 감지에서 완전히 제외됩니다.",
"label": "카메라 필터 정규식"
}
},
"tooltip": {
"cam-on": "카메라: {apps}",
"mic-on": "마이크: {apps}",
"screen-on": "화면 공유: {apps}"
},
"toast": {
"cam-on": "카메라가 활성화되었습니다.",
"mic-on": "마이크가 활성화되었습니다.",
"screen-on": "화면 공유가 활성화되었습니다."
},
"history": {
"title": "접근 기록",
"empty": "최근에 접근한 기록 없음",
"clear": "비우기",
"action": {
"started": "시작됨",
"stopped": "정지됨"
}
}
}

View File

@@ -1,7 +1,7 @@
{ {
"id": "privacy-indicator", "id": "privacy-indicator",
"name": "Privacy Indicator", "name": "Privacy Indicator",
"version": "1.2.7", "version": "1.2.12",
"minNoctaliaVersion": "3.6.0", "minNoctaliaVersion": "3.6.0",
"author": "Noctalia Team", "author": "Noctalia Team",
"official": true, "official": true,
@@ -30,7 +30,8 @@
"iconSpacing": 4, "iconSpacing": 4,
"activeColor": "primary", "activeColor": "primary",
"inactiveColor": "none", "inactiveColor": "none",
"micFilterRegex": "" "micFilterRegex": "",
"camFilterRegex": ""
} }
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"updateIntervalMinutes": 30, "updateIntervalMinutes": 30,
"updateTerminalCommand": "alacritty -e", "updateTerminalCommand": "alacritty --hold -e",
"currentIconName": "world-download", "currentIconName": "world-download",
"hideOnZero": true, "hideOnZero": true,
"customCmdGetNumUpdates": "expr $(xbps-install -Mnu 2>&1 | grep -v '^$' | wc -l) + $(flatpak remote-ls --updates | wc -l)", "customCmdGetNumUpdates": "expr $(xbps-install -Mnu 2>&1 | grep -v '^$' | wc -l) + $(flatpak remote-ls --updates | wc -l)",

View File

@@ -56,12 +56,12 @@
"hideOnOverview": false, "hideOnOverview": false,
"marginHorizontal": 10, "marginHorizontal": 10,
"marginVertical": 5, "marginVertical": 5,
"middleClickAction": "none", "middleClickAction": "launcherPanel",
"middleClickCommand": "", "middleClickCommand": "",
"middleClickFollowMouse": false, "middleClickFollowMouse": false,
"monitors": [ "monitors": [
], ],
"mouseWheelAction": "none", "mouseWheelAction": "content",
"mouseWheelWrap": true, "mouseWheelWrap": true,
"outerCorners": true, "outerCorners": true,
"position": "top", "position": "top",
@@ -80,10 +80,11 @@
"center": [ "center": [
{ {
"colorizeSystemIcon": "none", "colorizeSystemIcon": "none",
"enableColorization": false, "colorizeSystemText": "none",
"generalTooltipText": "", "generalTooltipText": "",
"hideMode": "alwaysExpanded", "hideMode": "alwaysExpanded",
"icon": "rocket", "icon": "rocket",
"iconPosition": "left",
"id": "CustomButton", "id": "CustomButton",
"ipcIdentifier": "", "ipcIdentifier": "",
"leftClickExec": "qs -c noctalia-shell ipc call launcher toggle", "leftClickExec": "qs -c noctalia-shell ipc call launcher toggle",
@@ -170,7 +171,7 @@
}, },
{ {
"compactMode": false, "compactMode": false,
"diskPath": "/", "diskPath": "/boot/efi",
"iconColor": "none", "iconColor": "none",
"id": "SystemMonitor", "id": "SystemMonitor",
"showCpuCores": false, "showCpuCores": false,
@@ -179,7 +180,7 @@
"showCpuUsage": true, "showCpuUsage": true,
"showDiskAvailable": false, "showDiskAvailable": false,
"showDiskUsage": false, "showDiskUsage": false,
"showDiskUsageAsPercent": false, "showDiskUsageAsPercent": true,
"showGpuTemp": false, "showGpuTemp": false,
"showLoadAverage": false, "showLoadAverage": false,
"showMemoryAsPercent": false, "showMemoryAsPercent": false,
@@ -190,6 +191,41 @@
"useMonospaceFont": true, "useMonospaceFont": true,
"usePadding": false "usePadding": false
}, },
{
"colorizeSystemIcon": "none",
"colorizeSystemText": "none",
"generalTooltipText": "",
"hideMode": "alwaysExpanded",
"icon": "database",
"iconPosition": "left",
"id": "CustomButton",
"ipcIdentifier": "",
"leftClickExec": "nemo",
"leftClickUpdateText": false,
"maxTextLength": {
"horizontal": 10,
"vertical": 10
},
"middleClickExec": "",
"middleClickUpdateText": false,
"parseJson": false,
"rightClickExec": "filelight",
"rightClickUpdateText": false,
"showExecTooltip": true,
"showIcon": true,
"showTextTooltip": true,
"textCollapse": "",
"textCommand": "zfs list | grep zroot/ROOT/void | cut -d ' ' -f 15",
"textIntervalMs": 20000,
"textStream": false,
"wheelDownExec": "",
"wheelDownUpdateText": false,
"wheelExec": "",
"wheelMode": "unified",
"wheelUpExec": "",
"wheelUpUpdateText": false,
"wheelUpdateText": false
},
{ {
"defaultSettings": { "defaultSettings": {
"currentIconName": "world-download", "currentIconName": "world-download",
@@ -203,10 +239,11 @@
"right": [ "right": [
{ {
"colorizeSystemIcon": "none", "colorizeSystemIcon": "none",
"enableColorization": false, "colorizeSystemText": "none",
"generalTooltipText": "", "generalTooltipText": "",
"hideMode": "alwaysExpanded", "hideMode": "alwaysExpanded",
"icon": "eye", "icon": "eye",
"iconPosition": "left",
"id": "CustomButton", "id": "CustomButton",
"ipcIdentifier": "", "ipcIdentifier": "",
"leftClickExec": "/home/aiden/toggle-transparency.sh", "leftClickExec": "/home/aiden/toggle-transparency.sh",
@@ -283,6 +320,7 @@
{ {
"colorizeDistroLogo": false, "colorizeDistroLogo": false,
"colorizeSystemIcon": "none", "colorizeSystemIcon": "none",
"colorizeSystemText": "none",
"customIconPath": "/home/aiden/Pictures/Icons/Void_Linux_logo-notext.png", "customIconPath": "/home/aiden/Pictures/Icons/Void_Linux_logo-notext.png",
"enableColorization": false, "enableColorization": false,
"icon": "noctalia", "icon": "noctalia",
@@ -552,7 +590,7 @@
"dockType": "floating", "dockType": "floating",
"enabled": false, "enabled": false,
"floatingRatio": 1, "floatingRatio": 1,
"groupApps": false, "groupApps": true,
"groupClickAction": "cycle", "groupClickAction": "cycle",
"groupContextMenuMode": "extended", "groupContextMenuMode": "extended",
"groupIndicatorStyle": "dots", "groupIndicatorStyle": "dots",
@@ -573,14 +611,14 @@
"Alacritty", "Alacritty",
"Firefox", "Firefox",
"com.discordapp.Discord", "com.discordapp.Discord",
"firefox" "element-desktop"
], ],
"pinnedStatic": true, "pinnedStatic": true,
"position": "top", "position": "top",
"showDockIndicator": false, "showDockIndicator": false,
"showLauncherIcon": false, "showLauncherIcon": true,
"sitOnFrame": false, "sitOnFrame": false,
"size": 0.72 "size": 1
}, },
"general": { "general": {
"allowPanelsOnScreenWithoutBar": true, "allowPanelsOnScreenWithoutBar": true,
@@ -593,12 +631,12 @@
"clockFormat": "hh:mm\\nt", "clockFormat": "hh:mm\\nt",
"clockStyle": "custom", "clockStyle": "custom",
"compactLockScreen": false, "compactLockScreen": false,
"dimmerOpacity": 0, "dimmerOpacity": 0.2,
"enableBlurBehind": true, "enableBlurBehind": true,
"enableLockScreenCountdown": true, "enableLockScreenCountdown": true,
"enableLockScreenMediaControls": true, "enableLockScreenMediaControls": true,
"enableShadows": true, "enableShadows": true,
"forceBlackScreenCorners": false, "forceBlackScreenCorners": true,
"iRadiusRatio": 1, "iRadiusRatio": 1,
"keybinds": { "keybinds": {
"keyDown": [ "keyDown": [
@@ -642,7 +680,7 @@
"shadowOffsetY": 3, "shadowOffsetY": 3,
"showChangelogOnStartup": true, "showChangelogOnStartup": true,
"showHibernateOnLockScreen": true, "showHibernateOnLockScreen": true,
"showScreenCorners": false, "showScreenCorners": true,
"showSessionButtonsOnLockScreen": true, "showSessionButtonsOnLockScreen": true,
"smoothScrollEnabled": true, "smoothScrollEnabled": true,
"telemetryEnabled": true "telemetryEnabled": true
@@ -876,6 +914,10 @@
{ {
"enabled": true, "enabled": true,
"id": "btop" "id": "btop"
},
{
"enabled": true,
"id": "steam"
} }
], ],
"enableUserTheming": false "enableUserTheming": false
@@ -886,7 +928,7 @@
"fontDefaultScale": 1, "fontDefaultScale": 1,
"fontFixed": "monospace", "fontFixed": "monospace",
"fontFixedScale": 1, "fontFixedScale": 1,
"panelBackgroundOpacity": 0.73, "panelBackgroundOpacity": 0.4,
"panelsAttachedToBar": true, "panelsAttachedToBar": true,
"scrollbarAlwaysVisible": true, "scrollbarAlwaysVisible": true,
"settingsPanelMode": "centered", "settingsPanelMode": "centered",

View File

@@ -3,4 +3,3 @@ git -C ~/void-packages/ pull --rebase
~/void-packages/xbps-src update-local ~/void-packages/xbps-src update-local
cat local-package-list.txt | xargs -n1 ~/void-packages/xbps-src update-check cat local-package-list.txt | xargs -n1 ~/void-packages/xbps-src update-check
sudo xbps-install -Su sudo xbps-install -Su
read -p "Press enter to continue"