updated config
This commit is contained in:
@@ -13,3 +13,6 @@ export SUDO_EDITOR=/usr/bin/nvim
|
||||
export VISUAL=/usr/bin/nvim
|
||||
alias sedit="sudoedit"
|
||||
alias flat='flatpak --user'
|
||||
|
||||
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
|
||||
export PATH="$PATH:$HOME/.rvm/bin"
|
||||
|
||||
@@ -8,12 +8,18 @@ window-rule {
|
||||
}
|
||||
window-rule {
|
||||
match app-id="Element"
|
||||
match app-id="im.riot.Riot"
|
||||
open-on-workspace "chat"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="discord"
|
||||
open-on-workspace "chat"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="cinny"
|
||||
match app-id="in.cinny.Cinny"
|
||||
open-on-workspace "chat"
|
||||
}
|
||||
//window-rule {
|
||||
// match app-id="srain"
|
||||
// open-on-workspace "chat"
|
||||
|
||||
@@ -7,222 +7,241 @@ import QtQuick.Layouts
|
||||
import Quickshell
|
||||
|
||||
Item {
|
||||
id: root
|
||||
id: root
|
||||
|
||||
property var pluginApi: null
|
||||
property var pluginApi: null
|
||||
|
||||
property ShellScreen screen
|
||||
property string widgetId: ""
|
||||
property string section: ""
|
||||
property int sectionWidgetIndex: -1
|
||||
property int sectionWidgetsCount: 0
|
||||
property ShellScreen screen
|
||||
property string widgetId: ""
|
||||
property string section: ""
|
||||
property int sectionWidgetIndex: -1
|
||||
property int sectionWidgetsCount: 0
|
||||
|
||||
// ── Configuration ──
|
||||
property string txSpeed: (SystemStatService.formatSpeed(SystemStatService.txSpeed).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s").padStart(8, " ")
|
||||
property string rxSpeed: (SystemStatService.formatSpeed(SystemStatService.rxSpeed).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s").padStart(8, " ")
|
||||
|
||||
property var cfg: pluginApi?.pluginSettings || ({})
|
||||
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
|
||||
// ── Configuration ──
|
||||
|
||||
property string arrowType: cfg.arrowType ?? defaults.arrowType
|
||||
property var cfg: pluginApi?.pluginSettings || ({})
|
||||
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
|
||||
|
||||
property bool useCustomColors: cfg.useCustomColors ?? defaults.useCustomColors
|
||||
property bool showNumbers: cfg.showNumbers ?? defaults.showNumbers
|
||||
property string iconType: cfg.iconType ?? defaults.iconType
|
||||
property int byteThresholdActive: cfg.byteThresholdActive ?? defaults.byteThresholdActive
|
||||
property string layout: cfg.layout ?? defaults.layout
|
||||
property var slots: cfg.slots ?? defaults.slots
|
||||
|
||||
property color colorSilent: root.useCustomColors && cfg.colorSilent || Color.mSurfaceVariant
|
||||
property color colorTx: root.useCustomColors && cfg.colorTx || Color.mSecondary
|
||||
property color colorRx: root.useCustomColors && cfg.colorRx || Color.mPrimary
|
||||
property color colorText: root.useCustomColors && cfg.colorText || Color.mOnSurfaceVariant
|
||||
property real fontSizeModifier: cfg.fontSizeModifier ?? defaults.fontSizeModifier
|
||||
property real iconSizeModifier: cfg.iconSizeModifier ?? defaults.iconSizeModifier
|
||||
|
||||
property int byteThresholdActive: cfg.byteThresholdActive ?? defaults.byteThresholdActive
|
||||
property real fontSizeModifier: cfg.fontSizeModifier ?? defaults.fontSizeModifier
|
||||
property real iconSizeModifier: cfg.iconSizeModifier ?? defaults.iconSizeModifier
|
||||
property real spacingInbetween: cfg.spacingInbetween ?? defaults.spacingInbetween
|
||||
property real contentMargin: cfg.contentMargin ?? defaults.contentMargin ?? Style.marginS
|
||||
property real columnSpacing: cfg.columnSpacing ?? defaults.columnSpacing
|
||||
property real rowSpacing: cfg.rowSpacing ?? defaults.rowSpacing
|
||||
property real paddingLeft: cfg.paddingLeft ?? defaults.paddingLeft
|
||||
property real paddingRight: cfg.paddingRight ?? defaults.paddingRight
|
||||
|
||||
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 useCustomColors: cfg.useCustomColors ?? defaults.useCustomColors
|
||||
property color colorSilent: root.useCustomColors && cfg.colorSilent || Color.mSurfaceVariant
|
||||
property color colorTx: root.useCustomColors && cfg.colorTx || Color.mSecondary
|
||||
property color colorRx: root.useCustomColors && cfg.colorRx || Color.mPrimary
|
||||
property color colorText: root.useCustomColors && cfg.colorText || Color.mOnSurfaceVariant
|
||||
|
||||
property bool horizontalNumbers: cfg.horizontalLayout ?? defaults.horizontalLayout
|
||||
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
|
||||
|
||||
readonly property string resolvedFontFamily: {
|
||||
if (root.useCustomFont && root.customFontFamily)
|
||||
return root.customFontFamily;
|
||||
return Settings.data.ui.fontDefault;
|
||||
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
|
||||
|
||||
// ── Widget ──
|
||||
|
||||
property bool txActive: SystemStatService.txSpeed >= root.byteThresholdActive
|
||||
property bool rxActive: SystemStatService.rxSpeed >= root.byteThresholdActive
|
||||
|
||||
property string barPosition: Settings.data.bar.position || "top"
|
||||
property string barDensity: Settings.data.bar.density || "compact"
|
||||
property bool barIsSpacious: barDensity != "mini"
|
||||
property bool barIsVertical: barPosition === "left" || barPosition === "right"
|
||||
|
||||
readonly property real contentWidth: barIsVertical ? Style.capsuleHeight : content.implicitWidth + root.paddingLeft + root.paddingRight
|
||||
readonly property real contentHeight: barIsVertical ? Math.round(content.implicitHeight + Style.marginM * 2) : Style.capsuleHeight
|
||||
|
||||
implicitWidth: contentWidth
|
||||
implicitHeight: contentHeight
|
||||
|
||||
NIcon {
|
||||
id: txIconElement
|
||||
icon: root.iconType + "-up"
|
||||
color: root.txActive ? root.colorTx : root.colorSilent
|
||||
pointSize: Style.fontSizeL * root.iconSizeModifier
|
||||
}
|
||||
|
||||
NIcon {
|
||||
id: rxIconElement
|
||||
icon: root.iconType + "-down"
|
||||
color: root.rxActive ? root.colorRx : root.colorSilent
|
||||
pointSize: Style.fontSizeL * root.iconSizeModifier
|
||||
}
|
||||
|
||||
NText {
|
||||
id: txSpeedElement
|
||||
text: root.txSpeed
|
||||
color: root.colorText
|
||||
pointSize: Style.barFontSize * root.fontSizeModifier
|
||||
font.family: root.resolvedFontFamily
|
||||
font.weight: root.resolvedFontWeight
|
||||
font.italic: root.resolvedFontItalic
|
||||
}
|
||||
|
||||
NText {
|
||||
id: rxSpeedElement
|
||||
text: root.rxSpeed
|
||||
color: root.colorText
|
||||
pointSize: Style.barFontSize * root.fontSizeModifier
|
||||
font.family: root.resolvedFontFamily
|
||||
font.weight: root.resolvedFontWeight
|
||||
font.italic: root.resolvedFontItalic
|
||||
}
|
||||
|
||||
function getElement(name) {
|
||||
switch (name) {
|
||||
case "txIcon":
|
||||
return txIconElement;
|
||||
case "rxIcon":
|
||||
return rxIconElement;
|
||||
case "txSpeed":
|
||||
return txSpeedElement;
|
||||
case "rxSpeed":
|
||||
return rxSpeedElement;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
readonly property var spacers: [spacer0, spacer1, spacer2, spacer3]
|
||||
|
||||
Item {
|
||||
id: spacer0
|
||||
}
|
||||
Item {
|
||||
id: spacer1
|
||||
}
|
||||
Item {
|
||||
id: spacer2
|
||||
}
|
||||
Item {
|
||||
id: spacer3
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: visualCapsule
|
||||
x: Style.pixelAlignCenter(parent.width, width)
|
||||
y: Style.pixelAlignCenter(parent.height, height)
|
||||
width: root.contentWidth
|
||||
height: root.contentHeight
|
||||
color: Style.capsuleColor
|
||||
radius: Style.radiusM
|
||||
border.color: Style.capsuleBorderColor
|
||||
border.width: Style.capsuleBorderWidth
|
||||
|
||||
GridLayout {
|
||||
id: content
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: root.paddingLeft
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: root.paddingRight
|
||||
|
||||
rows: root.layout === "horizontal" ? 1 : 2
|
||||
columns: root.layout === "horizontal" ? 4 : 2
|
||||
columnSpacing: root.columnSpacing
|
||||
rowSpacing: root.rowSpacing
|
||||
}
|
||||
}
|
||||
|
||||
function rebuildLayout() {
|
||||
rxIconElement.parent = root;
|
||||
rxIconElement.visible = false;
|
||||
rxSpeedElement.parent = root;
|
||||
rxSpeedElement.visible = false;
|
||||
txIconElement.parent = root;
|
||||
txIconElement.visible = false;
|
||||
txSpeedElement.parent = root;
|
||||
txSpeedElement.visible = false;
|
||||
|
||||
for (let s of spacers) {
|
||||
s.parent = root;
|
||||
s.visible = false;
|
||||
}
|
||||
|
||||
readonly property int resolvedFontWeight: {
|
||||
if (root.useCustomFont && root.customFontBold)
|
||||
return Font.Bold;
|
||||
return Style.fontWeightMedium;
|
||||
for (let idx = 0; idx < root.slots.length; idx++) {
|
||||
const elem = root.getElement(root.slots[idx]);
|
||||
if (elem) {
|
||||
elem.parent = content;
|
||||
elem.visible = true;
|
||||
} else {
|
||||
const s = spacers[idx];
|
||||
s.parent = content;
|
||||
s.visible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onSlotsChanged: rebuildLayout()
|
||||
onLayoutChanged: rebuildLayout()
|
||||
Component.onCompleted: rebuildLayout()
|
||||
|
||||
// ── Interaction ──
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||
|
||||
onPressed: mouse => {
|
||||
if (mouse.button == Qt.LeftButton)
|
||||
pluginApi.togglePanel(root.screen, root);
|
||||
|
||||
if (mouse.button == Qt.RightButton)
|
||||
PanelService.showContextMenu(contextMenu, root, screen);
|
||||
}
|
||||
|
||||
readonly property bool resolvedFontItalic: root.useCustomFont && root.customFontItalic
|
||||
NPopupContextMenu {
|
||||
id: contextMenu
|
||||
|
||||
readonly property bool numbersVisible: root.showNumbers && barIsSpacious && !barIsVertical
|
||||
model: [
|
||||
{
|
||||
"label": root.pluginApi?.tr("actions.toggle-panel"),
|
||||
"action": "toggle-panel",
|
||||
"icon": "activity"
|
||||
},
|
||||
{
|
||||
"label": root.pluginApi?.tr("actions.widget-settings"),
|
||||
"action": "widget-settings",
|
||||
"icon": "settings"
|
||||
},
|
||||
]
|
||||
|
||||
property string barPosition: Settings.data.bar.position || "top"
|
||||
property string barDensity: Settings.data.bar.density || "compact"
|
||||
property bool barIsSpacious: barDensity != "mini"
|
||||
property bool barIsVertical: barPosition === "left" || barPosition === "right"
|
||||
onTriggered: action => {
|
||||
contextMenu.close();
|
||||
PanelService.closeContextMenu(screen);
|
||||
|
||||
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
|
||||
|
||||
implicitWidth: contentWidth
|
||||
implicitHeight: contentHeight
|
||||
|
||||
// ── Widget ──
|
||||
|
||||
property string txSpeed: (SystemStatService.formatSpeed(SystemStatService.txSpeed).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s").padStart(8, " ")
|
||||
property string rxSpeed: (SystemStatService.formatSpeed(SystemStatService.rxSpeed).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s").padStart(8, " ")
|
||||
|
||||
Rectangle {
|
||||
id: visualCapsule
|
||||
x: Style.pixelAlignCenter(parent.width, width)
|
||||
y: Style.pixelAlignCenter(parent.height, height)
|
||||
width: root.contentWidth
|
||||
height: root.contentHeight
|
||||
color: Style.capsuleColor
|
||||
radius: Style.radiusM
|
||||
border.color: Style.capsuleBorderColor
|
||||
border.width: Style.capsuleBorderWidth
|
||||
|
||||
RowLayout {
|
||||
id: contentRow
|
||||
anchors.centerIn: parent
|
||||
spacing: Style.marginS
|
||||
|
||||
// Vertical layout: stacked values to the left
|
||||
Column {
|
||||
visible: root.numbersVisible && !root.horizontalNumbers
|
||||
spacing: root.spacingInbetween
|
||||
|
||||
NText {
|
||||
horizontalAlignment: Text.AlignRight
|
||||
text: root.txSpeed
|
||||
color: root.colorText
|
||||
pointSize: Style.barFontSize * root.fontSizeModifier
|
||||
font.family: root.resolvedFontFamily
|
||||
font.weight: root.resolvedFontWeight
|
||||
font.italic: root.resolvedFontItalic
|
||||
}
|
||||
|
||||
NText {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
// 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 {
|
||||
spacing: -10.0 + root.spacingInbetween
|
||||
|
||||
NIcon {
|
||||
icon: arrowType + "-up"
|
||||
color: SystemStatService.txSpeed >= root.byteThresholdActive ? root.colorTx : root.colorSilent
|
||||
pointSize: Style.fontSizeL * root.iconSizeModifier
|
||||
}
|
||||
|
||||
NIcon {
|
||||
icon: arrowType + "-down"
|
||||
color: SystemStatService.rxSpeed >= root.byteThresholdActive ? root.colorRx : root.colorSilent
|
||||
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 ──
|
||||
|
||||
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 {
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.RightButton
|
||||
|
||||
onPressed: mouse => {
|
||||
if (mouse.button == Qt.RightButton)
|
||||
PanelService.showContextMenu(contextMenu, root, screen);
|
||||
}
|
||||
|
||||
NPopupContextMenu {
|
||||
id: contextMenu
|
||||
|
||||
model: [
|
||||
{
|
||||
"label": root.pluginApi?.tr("actions.widget-settings"),
|
||||
"action": "widget-settings",
|
||||
"icon": "settings"
|
||||
},
|
||||
]
|
||||
|
||||
onTriggered: action => {
|
||||
contextMenu.close();
|
||||
PanelService.closeContextMenu(screen);
|
||||
|
||||
if (action === "widget-settings") {
|
||||
BarService.openPluginSettings(screen, pluginApi.manifest);
|
||||
}
|
||||
}
|
||||
if (action === "toggle-panel")
|
||||
pluginApi.togglePanel(root.screen, root);
|
||||
else if (action === "widget-settings") {
|
||||
BarService.openPluginSettings(screen, pluginApi.manifest);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,103 +1,358 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
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
|
||||
id: root
|
||||
|
||||
readonly property var geometryPlaceholder: panelContent
|
||||
readonly property bool allowAttach: true
|
||||
property var pluginApi: null
|
||||
|
||||
property var pluginApi: null
|
||||
property var cfg: pluginApi?.pluginSettings || ({})
|
||||
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
|
||||
property string arrowType: cfg.arrowType ?? defaults.arrowType
|
||||
readonly property var geometryPlaceholder: panelContainer
|
||||
readonly property bool allowAttach: true
|
||||
|
||||
property real contentPreferredWidth: 440 * Style.uiScaleRatio
|
||||
property real contentPreferredHeight: panelContent.implicitHeight + Style.marginL * 2
|
||||
property var cfg: pluginApi?.pluginSettings || ({})
|
||||
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
|
||||
property string iconType: cfg.iconType ?? defaults.iconType ?? "arrow"
|
||||
|
||||
property real contentPreferredWidth: 400 * Style.uiScaleRatio
|
||||
property real contentPreferredHeight: Math.min(contentColumn.implicitHeight + Style.marginL * 2, 600 * Style.uiScaleRatio)
|
||||
|
||||
property bool useCustomColors: cfg.useCustomColors ?? defaults.useCustomColors
|
||||
property color colorTx: root.useCustomColors && cfg.colorTx || Color.mSecondary
|
||||
property color colorRx: root.useCustomColors && cfg.colorRx || Color.mPrimary
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
Component.onCompleted: {
|
||||
if (pluginApi)
|
||||
Logger.i("NetworkIndicator", "Panel initialized");
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: panelContainer
|
||||
anchors.fill: parent
|
||||
|
||||
Component.onCompleted: {
|
||||
if (pluginApi) {
|
||||
Logger.i("NetworkIndicator", "Panel initialized");
|
||||
}
|
||||
}
|
||||
color: "transparent"
|
||||
|
||||
ColumnLayout {
|
||||
id: panelContent
|
||||
id: contentColumn
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Style.marginL
|
||||
anchors.fill: parent
|
||||
anchors.margins: Style.marginL
|
||||
spacing: Style.marginM
|
||||
|
||||
NBox {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 90 * Style.uiScaleRatio
|
||||
// ── Header ──
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: Style.marginS
|
||||
anchors.bottomMargin: Style.radiusM * 0.5
|
||||
spacing: Style.marginXS
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginM
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
NIcon {
|
||||
icon: "activity"
|
||||
pointSize: Style.fontSizeXL
|
||||
color: Color.mPrimary
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
}
|
||||
|
||||
NText {
|
||||
text: root.pluginApi?.tr("panel.title")
|
||||
pointSize: Style.fontSizeL
|
||||
font.weight: Font.Bold
|
||||
color: Color.mOnSurface
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
NText {
|
||||
text: `Interval ${(SystemStatService.networkIntervalMs / 1000)}s`
|
||||
pointSize: Style.fontSizeXXS
|
||||
color: Qt.alpha(Color.mOnSurface, 0.5)
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
}
|
||||
|
||||
NIconButton {
|
||||
icon: "settings"
|
||||
tooltipText: root.pluginApi?.tr("actions.widget-settings")
|
||||
onClicked: {
|
||||
const screen = root.pluginApi?.panelOpenScreen;
|
||||
if (screen) {
|
||||
root.pluginApi.closePanel(screen);
|
||||
Qt.callLater(() => BarService.openPluginSettings(screen, root.pluginApi.manifest));
|
||||
}
|
||||
}
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
}
|
||||
|
||||
NIconButton {
|
||||
icon: "close"
|
||||
tooltipText: root.pluginApi?.tr("panel.close")
|
||||
onClicked: {
|
||||
const s = root.pluginApi?.panelOpenScreen;
|
||||
if (s)
|
||||
root.pluginApi.closePanel(s);
|
||||
}
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
}
|
||||
}
|
||||
|
||||
// ── Download (RX) ──
|
||||
|
||||
NBox {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: rxGraph.implicitHeight + Style.marginS * 2
|
||||
|
||||
NetworkGraph {
|
||||
id: rxGraph
|
||||
anchors.fill: parent
|
||||
anchors.margins: Style.marginS
|
||||
|
||||
label: root.pluginApi?.tr("panel.download")
|
||||
iconName: root.iconType + "-down"
|
||||
accentColor: root.colorRx
|
||||
history: SystemStatService.rxSpeedHistory
|
||||
maxValue: SystemStatService.rxMaxSpeed
|
||||
currentSpeed: SystemStatService.rxSpeed
|
||||
}
|
||||
}
|
||||
|
||||
// ── Upload (TX) ──
|
||||
|
||||
NBox {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: txGraph.implicitHeight + Style.marginS * 2
|
||||
|
||||
NetworkGraph {
|
||||
id: txGraph
|
||||
anchors.fill: parent
|
||||
anchors.margins: Style.marginS
|
||||
|
||||
label: root.pluginApi?.tr("panel.upload")
|
||||
iconName: root.iconType + "-up"
|
||||
accentColor: root.colorTx
|
||||
history: SystemStatService.txSpeedHistory
|
||||
maxValue: SystemStatService.txMaxSpeed
|
||||
currentSpeed: SystemStatService.txSpeed
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
component NetworkGraph: ColumnLayout {
|
||||
id: graphRoot
|
||||
|
||||
required property string label
|
||||
required property string iconName
|
||||
required property color accentColor
|
||||
required property var history
|
||||
required property real maxValue
|
||||
required property real currentSpeed
|
||||
|
||||
function formatSpeed(bytesPerSec) {
|
||||
return (SystemStatService.formatSpeed(bytesPerSec).replace(/([0-9.]+)([A-Za-z]+)/, "$1 $2") + "/s");
|
||||
}
|
||||
|
||||
function timeAgo(idx) {
|
||||
const n = graphRoot.history.length;
|
||||
if (n < 2 || idx < 0)
|
||||
return "";
|
||||
|
||||
const secsAgo = Math.round((n - 1 - idx) * SystemStatService.networkIntervalMs / 1000);
|
||||
if (secsAgo < 60)
|
||||
return secsAgo + "s ago";
|
||||
|
||||
const mins = Math.floor(secsAgo / 60);
|
||||
const secs = secsAgo % 60;
|
||||
return mins + "m " + secs + "s ago";
|
||||
}
|
||||
|
||||
readonly property real yTickHigh: graphRoot.maxValue > 0 ? graphRoot.maxValue * 0.66 : 0
|
||||
readonly property real yTickLow: graphRoot.maxValue > 0 ? graphRoot.maxValue * 0.33 : 0
|
||||
readonly property real yAxisWidth: yAxisSizer.width + Style.marginXL
|
||||
|
||||
spacing: Style.marginXS
|
||||
|
||||
// Hidden text to measure the widest Y-axis label.
|
||||
// TODO: find a better way.
|
||||
NText {
|
||||
id: yAxisSizer
|
||||
visible: false
|
||||
text: graphRoot.formatSpeed(graphRoot.yTickHigh)
|
||||
pointSize: Style.fontSizeXS * 0.8
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginXS
|
||||
|
||||
NIcon {
|
||||
icon: graphRoot.iconName
|
||||
pointSize: Style.fontSizeXS
|
||||
color: graphRoot.accentColor
|
||||
}
|
||||
|
||||
NText {
|
||||
text: graphRoot.label
|
||||
pointSize: Style.fontSizeXS
|
||||
color: graphRoot.accentColor
|
||||
font.weight: Font.Medium
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
NText {
|
||||
text: graphRoot.formatSpeed(graphRoot.currentSpeed)
|
||||
pointSize: Style.fontSizeXS
|
||||
color: graphRoot.accentColor
|
||||
font.family: Settings.data.ui.fontFixed
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
implicitHeight: 120 * Style.uiScaleRatio
|
||||
|
||||
Item {
|
||||
id: graphArea
|
||||
anchors.fill: parent
|
||||
|
||||
NGraph {
|
||||
id: graph
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: graphRoot.yAxisWidth
|
||||
values: graphRoot.history
|
||||
minValue: 0
|
||||
maxValue: graphRoot.maxValue
|
||||
color: graphRoot.accentColor
|
||||
strokeWidth: Math.max(1, Style.uiScaleRatio)
|
||||
fill: true
|
||||
fillOpacity: 0.15
|
||||
updateInterval: SystemStatService.networkIntervalMs
|
||||
animateScale: true
|
||||
}
|
||||
|
||||
// ── Y-axis scale ──
|
||||
|
||||
Repeater {
|
||||
model: [
|
||||
{
|
||||
value: graphRoot.yTickHigh,
|
||||
fraction: 0.66
|
||||
},
|
||||
{
|
||||
value: graphRoot.yTickLow,
|
||||
fraction: 0.33
|
||||
}
|
||||
]
|
||||
|
||||
delegate: Item {
|
||||
required property var modelData
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
y: graphArea.height * (1.0 - modelData.fraction)
|
||||
visible: graphRoot.maxValue > 0
|
||||
|
||||
Rectangle {
|
||||
id: horizontalLineYLabel
|
||||
anchors.left: parent.left
|
||||
anchors.right: yLabel.left
|
||||
anchors.rightMargin: Style.marginXS
|
||||
height: 1
|
||||
color: Qt.alpha(Color.mOnSurface, 0.08)
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: yLabel
|
||||
anchors.right: parent.right
|
||||
y: -height / 2
|
||||
implicitWidth: yLabelText.implicitWidth + Style.marginXS * 2
|
||||
implicitHeight: yLabelText.implicitHeight + 2
|
||||
radius: Style.radiusXS
|
||||
color: Qt.alpha(graphRoot.accentColor, 0.10)
|
||||
|
||||
NText {
|
||||
id: yLabelText
|
||||
anchors.centerIn: parent
|
||||
text: graphRoot.formatSpeed(modelData.value)
|
||||
pointSize: Style.fontSizeXS * 0.8
|
||||
color: Qt.alpha(graphRoot.accentColor, 0.7)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ── Hover ──
|
||||
|
||||
MouseArea {
|
||||
id: hover
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: graphRoot.yAxisWidth
|
||||
hoverEnabled: true
|
||||
|
||||
readonly property int idx: {
|
||||
const n = graphRoot.history.length;
|
||||
if (n < 2 || !containsMouse)
|
||||
return -1;
|
||||
return Math.max(0, Math.min(n - 1, Math.round(mouseX / width * (n - 1))));
|
||||
}
|
||||
|
||||
readonly property real value: idx >= 0 ? (graphRoot.history[idx] ?? -1) : -1
|
||||
|
||||
Rectangle {
|
||||
visible: hover.idx >= 0
|
||||
x: {
|
||||
const n = graphRoot.history.length;
|
||||
if (hover.idx < 0 || n < 2)
|
||||
return 0;
|
||||
return (hover.idx / (n - 1)) * parent.width - width / 2;
|
||||
}
|
||||
width: Style.borderS
|
||||
height: parent.height
|
||||
color: Qt.alpha(Color.mOnSurface, 0.25)
|
||||
|
||||
Rectangle {
|
||||
readonly property real posX: -implicitWidth / 2
|
||||
readonly property string _label: {
|
||||
if (hover.value < 0)
|
||||
return "";
|
||||
const speed = graphRoot.formatSpeed(hover.value);
|
||||
const time = graphRoot.timeAgo(hover.idx);
|
||||
return speed + (time ? " · " + time : "");
|
||||
}
|
||||
|
||||
x: Math.max(-parent.x, Math.min(hover.width - parent.x - implicitWidth, posX))
|
||||
y: Style.marginXS
|
||||
|
||||
implicitWidth: bubbleText.implicitWidth + Style.marginS * 2
|
||||
implicitHeight: bubbleText.implicitHeight + Style.marginXS * 2
|
||||
radius: Style.radiusS
|
||||
color: Color.mSurfaceVariant
|
||||
border.color: Qt.alpha(Color.mOnSurface, 0.15)
|
||||
border.width: Style.borderS
|
||||
|
||||
NText {
|
||||
id: bubbleText
|
||||
anchors.centerIn: parent
|
||||
text: parent._label
|
||||
pointSize: Style.fontSizeXS
|
||||
color: Color.mOnSurface
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
# NetworkIndicator Plugin for Noctalia
|
||||
|
||||
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.
|
||||
A Noctalia bar widget that displays current network upload (TX) and download (RX) activity. Includes optional live throughput values and a hover-activated graph panel.
|
||||
|
||||
## Features
|
||||
|
||||
- **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.
|
||||
- **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.
|
||||
- **TX/RX Activity Indicators**: Icons for TX and RX with active/idle coloring based on a configurable traffic threshold.
|
||||
- **Vertical and Horizontal Layouts**: Configurable cell grid: arrange up to four cells (TX icon, RX icon, TX speed, RX speed) in a horizontal row or a 2×2 grid. Cells can be left empty to show only icons or only values.
|
||||
- **Network Graph Panel**: Click on the widget to open a live graph panel showing recent RX and TX history.
|
||||
- **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.
|
||||
- **Configurable Settings**: Provides a comprehensive set of user-adjustable options.
|
||||
- **Theme Support**: Uses theme colors by default; all colors can be overridden individually.
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -20,25 +16,21 @@ This plugin is part of the `noctalia-plugins` repository.
|
||||
|
||||
## Configuration
|
||||
|
||||
Access the plugin settings in Noctalia to configure the following options:
|
||||
Access settings through the widget's context menu.
|
||||
|
||||
- **Icon Type**: Select the icon style used for TX/RX: `arrow`, `arrow-bar`, `arrow-big`, `arrow-narrow`, `caret`, `chevron`, `chevron-compact`, `fold`.
|
||||
- **Show Values**: Display formatted TX/RX speeds as numbers. 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.
|
||||
- **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.
|
||||
- **Font Size Modifier**: Scale the text size.
|
||||
- **Icon Size Modifier**: Scale the icon size.
|
||||
- **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.
|
||||
**Layout**: Choose between horizontal (single row) and vertical (2×2 grid) cell arrangement.
|
||||
**Cell Assignment**: Assign what each cell displays. Duplicates are not allowed. Use empty cells to reduce the widget to just icons or just speed values.
|
||||
**Icon Type**: Select the icon style for the TX/RX indicators (`arrow`, `arrow-bar`, `arrow-big`, `arrow-narrow`, `caret`, `chevron`, `chevron-compact`, `fold`).
|
||||
**Activity Threshold**: Traffic below this value (B/s) is treated as inactive, and icons switch to the idle color.
|
||||
**Font & Icon Size**: Scale text and icon sizes relative to the defaults.
|
||||
**Custom Font**: Override the default font for speed values, with optional bold and italic.
|
||||
**Custom Colors**: Override theme colors for TX active, RX active, inactive, and text individually.
|
||||
**Spacing & Padding**: Adjust left/right padding, column spacing, and row spacing.
|
||||
|
||||
## Usage
|
||||
|
||||
- Add the widget to your Noctalia bar.
|
||||
- Hover over the widget to open the network graph panel.
|
||||
- Left-click the widget to open the network graph panel.
|
||||
- Right-click the widget to access settings.
|
||||
- Configure the plugin settings as required.
|
||||
|
||||
@@ -50,4 +42,4 @@ Access the plugin settings in Noctalia to configure the following options:
|
||||
|
||||
- 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.
|
||||
- Unfortunately, the update interval `SystemStatService.networkIntervalMs` is currently hardcoded to `3000` by Noctalia.
|
||||
|
||||
@@ -5,347 +5,397 @@ import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
id: root
|
||||
|
||||
readonly property var iconNames: ["arrow", "arrow-bar", "arrow-big", "arrow-narrow", "caret", "chevron", "chevron-compact", "fold"]
|
||||
property var pluginApi: null
|
||||
|
||||
property var pluginApi: null
|
||||
property var cfg: pluginApi?.pluginSettings || ({})
|
||||
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
|
||||
|
||||
property var cfg: pluginApi?.pluginSettings || ({})
|
||||
property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({})
|
||||
// ── Options ──
|
||||
|
||||
property string editArrowType: cfg.arrowType ?? defaults.arrowType
|
||||
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
|
||||
readonly property var slotOptions: [
|
||||
{
|
||||
key: "txIcon",
|
||||
name: pluginApi?.tr("settings.slot.txIcon")
|
||||
},
|
||||
{
|
||||
key: "rxIcon",
|
||||
name: pluginApi?.tr("settings.slot.rxIcon")
|
||||
},
|
||||
{
|
||||
key: "txSpeed",
|
||||
name: pluginApi?.tr("settings.slot.txSpeed")
|
||||
},
|
||||
{
|
||||
key: "rxSpeed",
|
||||
name: pluginApi?.tr("settings.slot.rxSpeed")
|
||||
},
|
||||
{
|
||||
key: "none",
|
||||
name: pluginApi?.tr("settings.slot.none")
|
||||
}
|
||||
]
|
||||
|
||||
property bool editUseCustomFont: cfg.useCustomFont ?? defaults.useCustomFont ?? false
|
||||
property string editCustomFontFamily: cfg.customFontFamily ?? defaults.customFontFamily ?? ""
|
||||
property bool editCustomFontBold: cfg.customFontBold ?? defaults.customFontBold ?? false
|
||||
property bool editCustomFontItalic: cfg.customFontItalic ?? defaults.customFontItalic ?? false
|
||||
readonly property var layoutOptions: [
|
||||
{
|
||||
key: "horizontal",
|
||||
name: pluginApi?.tr("settings.layout.horizontal")
|
||||
},
|
||||
{
|
||||
key: "vertical",
|
||||
name: pluginApi?.tr("settings.layout.vertical")
|
||||
}
|
||||
]
|
||||
|
||||
property bool editUseCustomColors: cfg.useCustomColors ?? defaults.useCustomColors ?? false
|
||||
property color editColorBackground: editUseCustomColors && cfg.colorBackground || Style.capsuleColor
|
||||
property color editColorFont: editUseCustomColors && cfg.colorFont || Color.mOnSurface
|
||||
property color editColorRx: editUseCustomColors && cfg.colorRx || Color.mPrimary
|
||||
property color editColorSilent: editUseCustomColors && cfg.colorSilent || Color.mSurfaceVariant
|
||||
property color editColorText: editUseCustomColors && cfg.colorText || Qt.alpha(Color.mOnSurfaceVariant, 0.3)
|
||||
property color editColorTx: editUseCustomColors && cfg.colorTx || Color.mSecondary
|
||||
readonly property var iconNames: ["arrow", "arrow-bar", "arrow-big", "arrow-narrow", "caret", "chevron", "chevron-compact", "fold"]
|
||||
|
||||
property string barPosition: Settings.data.bar.position || "top"
|
||||
property string barDensity: Settings.data.bar.density || "compact"
|
||||
property bool barIsSpacious: barDensity !== "mini"
|
||||
property bool barIsVertical: barPosition === "left" || barPosition === "right"
|
||||
// ── Edit state ──
|
||||
|
||||
function toIntOr(defaultValue, text) {
|
||||
const v = parseInt(String(text).trim(), 10);
|
||||
return isNaN(v) ? defaultValue : v;
|
||||
property string editLayout: cfg.layout ?? defaults.layout
|
||||
property var editSlots: cfg.slots ?? defaults.slots
|
||||
property string editIconType: cfg.iconType ?? defaults.iconType
|
||||
property int editByteThresholdActive: cfg.byteThresholdActive ?? defaults.byteThresholdActive
|
||||
|
||||
property real editFontSizeModifier: cfg.fontSizeModifier ?? defaults.fontSizeModifier
|
||||
property real editIconSizeModifier: cfg.iconSizeModifier ?? defaults.iconSizeModifier
|
||||
property real editPaddingLeft: cfg.paddingLeft ?? defaults.PaddingLeft
|
||||
property real editPaddingRight: cfg.paddingRight ?? defaults.paddingRight
|
||||
property real editColumnSpacing: cfg.columnSpacing ?? defaults.columnSpacing
|
||||
property real editRowSpacing: cfg.rowSpacing ?? defaults.rowSpacing
|
||||
|
||||
property bool editUseCustomFont: cfg.useCustomFont ?? defaults.useCustomFonts
|
||||
property string editCustomFontFamily: cfg.customFontFamily ?? defaults.customFontFamily
|
||||
property bool editCustomFontBold: cfg.customFontBold ?? defaults.customFontBold
|
||||
property bool editCustomFontItalic: cfg.customFontItalic ?? defaults.customFontItalic
|
||||
|
||||
property bool editUseCustomColors: cfg.useCustomColors ?? defaults.useCustomColors
|
||||
property color editColorTx: editUseCustomColors && cfg.colorTx || Color.mSecondary
|
||||
property color editColorRx: editUseCustomColors && cfg.colorRx || Color.mPrimary
|
||||
property color editColorSilent: editUseCustomColors && cfg.colorSilent || Color.mSurfaceVariant
|
||||
property color editColorText: editUseCustomColors && cfg.colorText || Color.mOnSurfaceVariant
|
||||
|
||||
// ── Helpers ──
|
||||
|
||||
readonly property bool isVerticalLayout: editLayout === "vertical"
|
||||
|
||||
function slotLabel(idx) {
|
||||
if (root.isVerticalLayout) {
|
||||
return ["Top Left", "Top Right", "Bottom Left", "Bottom Right"][idx];
|
||||
}
|
||||
return ["Left", "Center Left", "Center Right", "Right"][idx];
|
||||
}
|
||||
|
||||
function updateSlot(index, value) {
|
||||
let copy = root.editSlots.slice();
|
||||
copy[index] = value;
|
||||
root.editSlots = copy;
|
||||
}
|
||||
|
||||
function toIntOr(defaultValue, text) {
|
||||
const v = parseInt(String(text).trim(), 10);
|
||||
return isNaN(v) ? defaultValue : v;
|
||||
}
|
||||
|
||||
// ── Save ──
|
||||
|
||||
function saveSettings() {
|
||||
if (!pluginApi || !pluginApi.pluginSettings) {
|
||||
Logger.e("NetworkIndicator", "Cannot save: pluginApi or pluginSettings is null");
|
||||
return;
|
||||
}
|
||||
|
||||
function saveSettings() {
|
||||
if (!pluginApi || !pluginApi.pluginSettings) {
|
||||
Logger.e("NetworkIndicator", "Cannot save: pluginApi or pluginSettings is null");
|
||||
return;
|
||||
}
|
||||
const s = pluginApi.pluginSettings;
|
||||
|
||||
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;
|
||||
s.layout = root.editLayout;
|
||||
s.slots = root.editSlots;
|
||||
s.iconType = root.editIconType;
|
||||
s.byteThresholdActive = root.editByteThresholdActive;
|
||||
|
||||
pluginApi.pluginSettings.useCustomFont = root.editUseCustomFont;
|
||||
pluginApi.pluginSettings.customFontFamily = root.editCustomFontFamily;
|
||||
pluginApi.pluginSettings.customFontBold = root.editCustomFontBold;
|
||||
pluginApi.pluginSettings.customFontItalic = root.editCustomFontItalic;
|
||||
s.fontSizeModifier = root.editFontSizeModifier;
|
||||
s.iconSizeModifier = root.editIconSizeModifier;
|
||||
|
||||
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();
|
||||
}
|
||||
s.paddingLeft = root.editPaddingLeft;
|
||||
s.paddingRight = root.editPaddingRight;
|
||||
s.columnSpacing = root.editColumnSpacing;
|
||||
s.rowSpacing = root.editRowSpacing;
|
||||
|
||||
pluginApi.saveSettings();
|
||||
Logger.i("NetworkIndicator", "Settings saved");
|
||||
s.useCustomFont = root.editUseCustomFont;
|
||||
s.customFontFamily = root.editCustomFontFamily;
|
||||
s.customFontBold = root.editCustomFontBold;
|
||||
s.customFontItalic = root.editCustomFontItalic;
|
||||
|
||||
s.useCustomColors = root.editUseCustomColors;
|
||||
if (root.editUseCustomColors) {
|
||||
s.colorTx = root.editColorTx.toString();
|
||||
s.colorRx = root.editColorRx.toString();
|
||||
s.colorSilent = root.editColorSilent.toString();
|
||||
s.colorText = root.editColorText.toString();
|
||||
}
|
||||
|
||||
Layout.rightMargin: Style.marginL
|
||||
spacing: Style.marginL
|
||||
pluginApi.saveSettings();
|
||||
Logger.i("NetworkIndicator", "Settings saved");
|
||||
}
|
||||
|
||||
// ── Icon ──
|
||||
// ── UI ──
|
||||
|
||||
Layout.rightMargin: Style.marginL
|
||||
spacing: Style.marginL
|
||||
|
||||
// ── Layout ──
|
||||
|
||||
NComboBox {
|
||||
Layout.fillWidth: true
|
||||
label: pluginApi?.tr("settings.layout.label")
|
||||
description: pluginApi?.tr("settings.layout.desc")
|
||||
currentKey: root.editLayout
|
||||
model: root.layoutOptions
|
||||
onSelected: key => root.editLayout = key
|
||||
}
|
||||
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
// ── Slot assignment ──
|
||||
|
||||
NLabel {
|
||||
label: pluginApi?.tr("settings.slots.label")
|
||||
description: pluginApi?.tr("settings.slots.desc")
|
||||
}
|
||||
|
||||
Repeater {
|
||||
model: 4
|
||||
|
||||
NComboBox {
|
||||
currentKey: root.editArrowType
|
||||
description: root.pluginApi?.tr("settings.iconType.desc")
|
||||
label: root.pluginApi?.tr("settings.iconType.label")
|
||||
model: root.iconNames.map(n => ({
|
||||
key: n,
|
||||
name: n
|
||||
}))
|
||||
Layout.fillWidth: true
|
||||
label: root.slotLabel(index)
|
||||
currentKey: root.editSlots[index] ?? "none"
|
||||
model: root.slotOptions
|
||||
onSelected: key => root.updateSlot(index, key)
|
||||
}
|
||||
}
|
||||
|
||||
onSelected: key => root.editArrowType = key
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
// ── Icon style ──
|
||||
|
||||
NComboBox {
|
||||
Layout.fillWidth: true
|
||||
label: pluginApi?.tr("settings.iconType.label")
|
||||
description: pluginApi?.tr("settings.iconType.desc")
|
||||
currentKey: root.editIconType
|
||||
model: root.iconNames.map(n => ({
|
||||
key: n,
|
||||
name: n
|
||||
}))
|
||||
onSelected: key => root.editIconType = key
|
||||
}
|
||||
|
||||
// ── Activity threshold ──
|
||||
|
||||
NTextInput {
|
||||
label: pluginApi?.tr("settings.byteThresholdActive.label")
|
||||
description: pluginApi?.tr("settings.byteThresholdActive.desc")
|
||||
placeholderText: root.editByteThresholdActive + " bytes"
|
||||
text: String(root.editByteThresholdActive)
|
||||
onTextChanged: root.editByteThresholdActive = root.toIntOr(0, text)
|
||||
}
|
||||
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
// ── Size modifiers ──
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginXXS
|
||||
|
||||
NLabel {
|
||||
label: pluginApi?.tr("settings.fontSizeModifier.label")
|
||||
description: pluginApi?.tr("settings.fontSizeModifier.desc")
|
||||
}
|
||||
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
NValueSlider {
|
||||
Layout.fillWidth: true
|
||||
from: 0.5
|
||||
to: 1.5
|
||||
stepSize: 0.05
|
||||
text: root.editFontSizeModifier.toFixed(2)
|
||||
value: root.editFontSizeModifier
|
||||
onMoved: value => root.editFontSizeModifier = value
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginXXS
|
||||
|
||||
NLabel {
|
||||
label: pluginApi?.tr("settings.iconSizeModifier.label")
|
||||
description: pluginApi?.tr("settings.iconSizeModifier.desc")
|
||||
}
|
||||
|
||||
// ── General ──
|
||||
NValueSlider {
|
||||
Layout.fillWidth: true
|
||||
from: 0.5
|
||||
to: 1.5
|
||||
stepSize: 0.05
|
||||
text: root.editIconSizeModifier.toFixed(2)
|
||||
value: root.editIconSizeModifier
|
||||
onMoved: value => root.editIconSizeModifier = value
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
onToggled: c => root.editShowNumbers = c
|
||||
// ── Content padding ──
|
||||
|
||||
NTextInput {
|
||||
label: pluginApi?.tr("settings.rowSpacing.label")
|
||||
description: pluginApi?.tr("settings.rowSpacing.desc")
|
||||
placeholderText: root.editRowSpacing + " px"
|
||||
text: String(root.editRowSpacing)
|
||||
onTextChanged: root.editRowSpacing = root.toIntOr(0, text)
|
||||
}
|
||||
|
||||
NTextInput {
|
||||
label: pluginApi?.tr("settings.columnSpacing.label")
|
||||
description: pluginApi?.tr("settings.columnSpacing.desc")
|
||||
placeholderText: root.editColumnSpacing + " px"
|
||||
text: String(root.editColumnSpacing)
|
||||
onTextChanged: root.editColumnSpacing = root.toIntOr(0, text)
|
||||
}
|
||||
|
||||
NTextInput {
|
||||
label: pluginApi?.tr("settings.paddingLeft.label")
|
||||
description: pluginApi?.tr("settings.paddingLeft.desc")
|
||||
placeholderText: root.editPaddingLeft + " px"
|
||||
text: String(root.editPaddingLeft)
|
||||
onTextChanged: root.editPaddingLeft = root.toIntOr(0, text)
|
||||
}
|
||||
|
||||
NTextInput {
|
||||
label: pluginApi?.tr("settings.paddingRight.label")
|
||||
description: pluginApi?.tr("settings.paddingRight.desc")
|
||||
placeholderText: root.editPaddingRight + " px"
|
||||
text: String(root.editPaddingRight)
|
||||
onTextChanged: root.editPaddingRight = root.toIntOr(0, text)
|
||||
}
|
||||
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
// ── Custom Font ──
|
||||
|
||||
NToggle {
|
||||
checked: root.editUseCustomFont
|
||||
defaultValue: defaults.useCustomFont ?? false
|
||||
description: pluginApi?.tr("settings.useCustomFont.desc")
|
||||
label: pluginApi?.tr("settings.useCustomFont.label")
|
||||
onToggled: c => root.editUseCustomFont = c
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
visible: root.editUseCustomFont
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginL
|
||||
|
||||
NSearchableComboBox {
|
||||
label: pluginApi?.tr("settings.customFontFamily.label")
|
||||
description: pluginApi?.tr("settings.customFontFamily.desc")
|
||||
model: FontService.availableFonts
|
||||
currentKey: root.editCustomFontFamily || Qt.application.font.family
|
||||
placeholder: pluginApi?.tr("settings.customFontFamily.placeholder")
|
||||
searchPlaceholder: pluginApi?.tr("settings.customFontFamily.searchPlaceholder")
|
||||
popupHeight: 420
|
||||
onSelected: key => {
|
||||
root.editCustomFontFamily = (key === Qt.application.font.family) ? "" : key;
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
checked: root.editCustomFontBold
|
||||
defaultValue: defaults.customFontBold ?? false
|
||||
description: pluginApi?.tr("settings.customFontBold.desc")
|
||||
label: pluginApi?.tr("settings.customFontBold.label")
|
||||
onToggled: c => root.editCustomFontBold = c
|
||||
}
|
||||
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
// ── Layout ──
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginXXS
|
||||
|
||||
NLabel {
|
||||
description: root.pluginApi?.tr("settings.contentMargin.desc")
|
||||
label: root.pluginApi?.tr("settings.contentMargin.label")
|
||||
}
|
||||
|
||||
NValueSlider {
|
||||
Layout.fillWidth: true
|
||||
from: 0
|
||||
stepSize: 1
|
||||
text: root.editContentMargin + "px"
|
||||
to: 20
|
||||
value: root.editContentMargin
|
||||
|
||||
onMoved: value => root.editContentMargin = value
|
||||
}
|
||||
}
|
||||
|
||||
NTextInput {
|
||||
label: pluginApi?.tr("settings.byteThresholdActive.label")
|
||||
description: pluginApi?.tr("settings.byteThresholdActive.desc")
|
||||
placeholderText: root.editByteThresholdActive + " bytes"
|
||||
text: String(root.editByteThresholdActive)
|
||||
onTextChanged: root.editByteThresholdActive = root.toIntOr(0, text)
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginXXS
|
||||
|
||||
NLabel {
|
||||
description: root.pluginApi?.tr("settings.spacingInbetween.desc")
|
||||
label: root.pluginApi?.tr("settings.spacingInbetween.label")
|
||||
}
|
||||
|
||||
NValueSlider {
|
||||
Layout.fillWidth: true
|
||||
from: -5
|
||||
stepSize: 1
|
||||
text: root.editSpacingInbetween.toFixed(0)
|
||||
to: 5
|
||||
value: root.editSpacingInbetween
|
||||
|
||||
onMoved: value => root.editSpacingInbetween = value
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginXXS
|
||||
|
||||
NLabel {
|
||||
description: root.pluginApi?.tr("settings.fontSizeModifier.desc")
|
||||
label: root.pluginApi?.tr("settings.fontSizeModifier.label")
|
||||
}
|
||||
|
||||
NValueSlider {
|
||||
Layout.fillWidth: true
|
||||
from: 0.5
|
||||
stepSize: 0.05
|
||||
text: root.editFontSizeModifier.toFixed(2)
|
||||
to: 1.5
|
||||
value: root.editFontSizeModifier
|
||||
|
||||
onMoved: value => root.editFontSizeModifier = value
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: Style.marginXXS
|
||||
|
||||
NLabel {
|
||||
description: root.pluginApi?.tr("settings.iconSizeModifier.desc")
|
||||
label: root.pluginApi?.tr("settings.iconSizeModifier.label")
|
||||
}
|
||||
|
||||
NValueSlider {
|
||||
Layout.fillWidth: true
|
||||
from: 0.5
|
||||
stepSize: 0.05
|
||||
text: root.editIconSizeModifier.toFixed(2)
|
||||
to: 1.5
|
||||
value: root.editIconSizeModifier
|
||||
|
||||
onMoved: value => root.editIconSizeModifier = value
|
||||
}
|
||||
}
|
||||
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
// ── Font ──
|
||||
|
||||
NToggle {
|
||||
checked: root.editUseCustomFont
|
||||
defaultValue: defaults.useCustomFont ?? false
|
||||
description: root.pluginApi?.tr("settings.useCustomFont.desc")
|
||||
label: root.pluginApi?.tr("settings.useCustomFont.label")
|
||||
checked: root.editCustomFontItalic
|
||||
defaultValue: defaults.customFontItalic ?? false
|
||||
description: pluginApi?.tr("settings.customFontItalic.desc")
|
||||
label: pluginApi?.tr("settings.customFontItalic.label")
|
||||
onToggled: c => root.editCustomFontItalic = c
|
||||
}
|
||||
}
|
||||
|
||||
onToggled: c => root.editUseCustomFont = c
|
||||
// ── Custom Colors ──
|
||||
|
||||
NToggle {
|
||||
checked: root.editUseCustomColors
|
||||
defaultValue: defaults.useCustomColors ?? false
|
||||
description: pluginApi?.tr("settings.useCustomColors.desc")
|
||||
label: pluginApi?.tr("settings.useCustomColors.label")
|
||||
onToggled: c => root.editUseCustomColors = c
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
visible: root.editUseCustomColors
|
||||
|
||||
RowLayout {
|
||||
NLabel {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
label: pluginApi?.tr("settings.colorTx.label")
|
||||
description: pluginApi?.tr("settings.colorTx.desc")
|
||||
}
|
||||
NColorPicker {
|
||||
selectedColor: root.editColorTx
|
||||
onColorSelected: color => root.editColorTx = color
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
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
|
||||
}
|
||||
RowLayout {
|
||||
NLabel {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
label: pluginApi?.tr("settings.colorRx.label")
|
||||
description: pluginApi?.tr("settings.colorRx.desc")
|
||||
}
|
||||
NColorPicker {
|
||||
selectedColor: root.editColorRx
|
||||
onColorSelected: color => root.editColorRx = color
|
||||
}
|
||||
}
|
||||
|
||||
NDivider {
|
||||
Layout.fillWidth: true
|
||||
RowLayout {
|
||||
NLabel {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
label: pluginApi?.tr("settings.colorSilent.label")
|
||||
description: pluginApi?.tr("settings.colorSilent.desc")
|
||||
}
|
||||
NColorPicker {
|
||||
selectedColor: root.editColorSilent
|
||||
onColorSelected: color => root.editColorSilent = color
|
||||
}
|
||||
}
|
||||
|
||||
// ── 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 {
|
||||
NLabel {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
description: root.pluginApi?.tr("settings.colorTx.desc")
|
||||
label: root.pluginApi?.tr("settings.colorTx.label")
|
||||
}
|
||||
|
||||
NColorPicker {
|
||||
selectedColor: root.editColorTx
|
||||
|
||||
onColorSelected: color => root.editColorTx = color
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
NLabel {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
description: root.pluginApi?.tr("settings.colorRx.desc")
|
||||
label: root.pluginApi?.tr("settings.colorRx.label")
|
||||
}
|
||||
|
||||
NColorPicker {
|
||||
selectedColor: root.editColorRx
|
||||
|
||||
onColorSelected: color => root.editColorRx = color
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
NLabel {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
description: root.pluginApi?.tr("settings.colorSilent.desc")
|
||||
label: root.pluginApi?.tr("settings.colorSilent.label")
|
||||
}
|
||||
|
||||
NColorPicker {
|
||||
selectedColor: root.editColorSilent
|
||||
|
||||
onColorSelected: color => root.editColorSilent = color
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
NLabel {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
description: root.pluginApi?.tr("settings.colorText.desc")
|
||||
label: root.pluginApi?.tr("settings.colorText.label")
|
||||
}
|
||||
|
||||
NColorPicker {
|
||||
selectedColor: root.editColorText
|
||||
|
||||
onColorSelected: color => root.editColorText = color
|
||||
}
|
||||
}
|
||||
RowLayout {
|
||||
NLabel {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
label: pluginApi?.tr("settings.colorText.label")
|
||||
description: pluginApi?.tr("settings.colorText.desc")
|
||||
}
|
||||
NColorPicker {
|
||||
selectedColor: root.editColorText
|
||||
onColorSelected: color => root.editColorText = color
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Widget-Einstellungen"
|
||||
"widget-settings": "Widget-Einstellungen",
|
||||
"toggle-panel": "Monitor umschalten"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Netzwerkaktivität",
|
||||
"close": "Schließen",
|
||||
"download": "Download",
|
||||
"upload": "Upload"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Layout",
|
||||
"desc": "Zellen in einer Reihe (horizontal) oder in einem 2×2-Raster (vertikal) anordnen.",
|
||||
"horizontal": "Horizontal",
|
||||
"vertical": "Vertikal"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Zellenbelegung",
|
||||
"desc": "Wähle, was jede Zelle anzeigt. Keine Duplikate möglich. Z.\u00a0B. leere Zellen verwenden, um nur Symbole anzuzeigen."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "TX-Symbol",
|
||||
"rxIcon": "RX-Symbol",
|
||||
"txSpeed": "TX-Geschwindigkeit",
|
||||
"rxSpeed": "RX-Geschwindigkeit",
|
||||
"none": "Leer"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Symbolstil für die TX/RX-Anzeigen auswählen.",
|
||||
"label": "Symboltyp"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Aktivitätsschwellwert in Byte pro Sekunde (B/s) festlegen.",
|
||||
"label": "Aktivitätsschwellwert anzeigen"
|
||||
"desc": "Datenverkehr unter diesem Wert (B/s) wird als inaktiv angezeigt.",
|
||||
"label": "Aktivitätsschwellwert"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Symbolfarbe für Download (RX), wenn der Schwellwert überschritten ist.",
|
||||
"label": "RX aktiv"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Schriftgröße relativ zum Standard skalieren.",
|
||||
"label": "Schriftgröße"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Symbolfarbe, wenn der Datenverkehr unter dem Schwellwert liegt.",
|
||||
"label": "RX/TX inaktiv"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Symbolgröße relativ zum Standard skalieren.",
|
||||
"label": "Symbolgröße"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Textfarbe für RX- und TX-Werte festlegen.",
|
||||
"label": "Text"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Symbolfarbe für Upload (TX), wenn der Schwellwert überschritten ist.",
|
||||
"label": "TX aktiv"
|
||||
},
|
||||
"contentMargin": {
|
||||
"desc": "Horizontaler Abstand auf beiden Seiten des Widget-Inhalts.",
|
||||
"label": "Inhaltsrand"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Geschwindigkeitswerte fett darstellen.",
|
||||
"label": "Fett"
|
||||
"useCustomFont": {
|
||||
"desc": "Standardschriftart für Geschwindigkeitswerte überschreiben.",
|
||||
"label": "Eigene Schriftart"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Schriftart für die Geschwindigkeitswerte wählen.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Schriftart auswählen",
|
||||
"searchPlaceholder": "Schriften suchen…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Geschwindigkeitswerte fett darstellen.",
|
||||
"label": "Fett"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Geschwindigkeitswerte kursiv darstellen.",
|
||||
"label": "Kursiv"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Schriftgröße relativ zum Standard skalieren.",
|
||||
"label": "Schriftgrößen-Faktor"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "TX- und RX-Werte nebeneinander statt übereinander anzeigen.",
|
||||
"label": "Horizontales Layout"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Symbolgröße relativ zum Standard skalieren.",
|
||||
"label": "Symbolgrößen-Faktor"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Symbolstil für die TX/RX-Anzeigen auswählen.",
|
||||
"label": "Symboltyp"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Aktuelle RX/TX-Geschwindigkeiten als Zahlen anzeigen.",
|
||||
"label": "Werte anzeigen"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Den Abstand zwischen den RX/TX-Elementen anpassen.",
|
||||
"label": "Vertikaler Abstand"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Eigene Farben statt der Standard-Themefarben verwenden.",
|
||||
"label": "Eigene Farben"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Standardschriftart für Geschwindigkeitswerte überschreiben.",
|
||||
"label": "Eigene Schriftart"
|
||||
"colorTx": {
|
||||
"desc": "Symbolfarbe für Upload (TX), wenn der Schwellwert überschritten ist.",
|
||||
"label": "TX aktiv"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Symbolfarbe für Download (RX), wenn der Schwellwert überschritten ist.",
|
||||
"label": "RX aktiv"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Symbolfarbe, wenn der Datenverkehr unter dem Schwellwert liegt.",
|
||||
"label": "Inaktiv"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Textfarbe für Geschwindigkeitswerte.",
|
||||
"label": "Text"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Abstand links",
|
||||
"desc": "Innenabstand des Inhalts auf der linken Seite."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Abstand rechts",
|
||||
"desc": "Innenabstand des Inhalts auf der rechten Seite."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Spaltenabstand",
|
||||
"desc": "Abstand zwischen Spalten im Rasterlayout."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Zeilenabstand",
|
||||
"desc": "Abstand zwischen Zeilen im Rasterlayout (hat keine Wirkung im horizontalen Layout)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,77 +1,101 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Widget settings"
|
||||
"widget-settings": "Widget settings",
|
||||
"toggle-panel": "Toggle Monitor"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Network Activity",
|
||||
"close": "Close",
|
||||
"download": "Download",
|
||||
"upload": "Upload"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Layout",
|
||||
"desc": "Arrange cells in a row (horizontal) or a 2×2 grid (vertical).",
|
||||
"horizontal": "Horizontal",
|
||||
"vertical": "Vertical"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Cell Assignment",
|
||||
"desc": "Choose what each cell displays. No duplicates possible. E.g., use empty slots to only show icons."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "TX Icon",
|
||||
"rxIcon": "RX Icon",
|
||||
"txSpeed": "TX Speed",
|
||||
"rxSpeed": "RX Speed",
|
||||
"none": "Empty"
|
||||
},
|
||||
"iconType": {
|
||||
"label": "Icon Type",
|
||||
"desc": "Choose the icon style used for the TX/RX indicators."
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Set the activity threshold in bytes per second (B/s).",
|
||||
"label": "Show Active Threshold"
|
||||
"label": "Activity Threshold",
|
||||
"desc": "Traffic below this value (B/s) is shown as inactive."
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Set the download (RX) icon color when above the threshold.",
|
||||
"label": "RX Active"
|
||||
"fontSizeModifier": {
|
||||
"label": "Font Size",
|
||||
"desc": "Scale the text size relative to the default."
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Set the icon color when traffic is below the threshold.",
|
||||
"label": "RX/TX Inactive"
|
||||
"iconSizeModifier": {
|
||||
"label": "Icon Size",
|
||||
"desc": "Scale the icon size relative to the default."
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Set the text color used for both RX and TX values.",
|
||||
"label": "Text"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Set the upload (TX) icon color when above the threshold.",
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"label": "Custom Font",
|
||||
"desc": "Override the default font for speed values."
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Choose a font for the speed values.",
|
||||
"label": "Font",
|
||||
"desc": "Choose a font for the speed values.",
|
||||
"placeholder": "Select a font",
|
||||
"searchPlaceholder": "Search fonts…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"label": "Bold",
|
||||
"desc": "Render speed values in bold."
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Render speed values in italic.",
|
||||
"label": "Italic"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Scale the text size relative to the default.",
|
||||
"label": "Font Size Modifier"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Place TX and RX values side by side instead of stacked.",
|
||||
"label": "Horizontal Layout"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Scale the icon size relative to the default.",
|
||||
"label": "Icon Size Modifier"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Choose the icon style used for the TX/RX indicators.",
|
||||
"label": "Icon Type"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Display the current RX/TX speeds as numbers.",
|
||||
"label": "Show Values"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Adjust the spacing between RX/TX elements.",
|
||||
"label": "Vertical Spacing"
|
||||
"label": "Italic",
|
||||
"desc": "Render speed values in italic."
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Enable custom colors instead of theme defaults.",
|
||||
"label": "Custom Colors"
|
||||
"label": "Custom Colors",
|
||||
"desc": "Enable custom colors instead of theme defaults."
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Override the default font for speed values.",
|
||||
"label": "Custom Font"
|
||||
"colorTx": {
|
||||
"label": "TX Active",
|
||||
"desc": "Upload icon color when above the threshold."
|
||||
},
|
||||
"colorRx": {
|
||||
"label": "RX Active",
|
||||
"desc": "Download icon color when above the threshold."
|
||||
},
|
||||
"colorSilent": {
|
||||
"label": "Inactive",
|
||||
"desc": "Icon color when traffic is below the threshold."
|
||||
},
|
||||
"colorText": {
|
||||
"label": "Text",
|
||||
"desc": "Text color for speed values."
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Padding Left",
|
||||
"desc": "Padding of the content on the left."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Padding Right",
|
||||
"desc": "Padding of the content on the right."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Column Spacing",
|
||||
"desc": "Spacing between columns in grid layout."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Row Spacing",
|
||||
"desc": "Spacing between rows in grid layout (has no effect in horizontal layout)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Configuración del widget"
|
||||
"widget-settings": "Configuración del widget",
|
||||
"toggle-panel": "Alternar Monitor"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Actividad de Red",
|
||||
"close": "Cerrar",
|
||||
"download": "Descarga",
|
||||
"upload": "Subida"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Diseño",
|
||||
"desc": "Disponer las celdas en una fila (horizontal) o en una cuadrícula 2×2 (vertical).",
|
||||
"horizontal": "Horizontal",
|
||||
"vertical": "Vertical"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Asignación de celdas",
|
||||
"desc": "Elige qué muestra cada celda. No se permiten duplicados. P. ej., usa celdas vacías para mostrar solo iconos."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "Icono TX",
|
||||
"rxIcon": "Icono RX",
|
||||
"txSpeed": "Velocidad TX",
|
||||
"rxSpeed": "Velocidad RX",
|
||||
"none": "Vacío"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Elige el estilo de icono utilizado para los indicadores TX/RX.",
|
||||
"label": "Tipo de icono"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Establecer el umbral de actividad en bytes por segundo (B/s).",
|
||||
"label": "Mostrar umbral activo"
|
||||
"desc": "El tráfico por debajo de este valor (B/s) se muestra como inactivo.",
|
||||
"label": "Umbral de actividad"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Establecer el color del icono de descarga (RX) cuando esté por encima del umbral.",
|
||||
"label": "RX Activo"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Escalar el tamaño del texto en relación con el predeterminado.",
|
||||
"label": "Tamaño de fuente"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Establecer el color del icono cuando el tráfico esté por debajo del umbral.",
|
||||
"label": "RX/TX Inactivo"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Escalar el tamaño del icono en relación con el tamaño predeterminado.",
|
||||
"label": "Tamaño del icono"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Establecer el color del texto utilizado tanto para los valores RX como TX.",
|
||||
"label": "Texto"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Establecer el color del icono de carga (TX) cuando esté por encima del umbral.",
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"desc": "Reemplazar la fuente predeterminada para los valores de velocidad.",
|
||||
"label": "Fuente personalizada"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Elegir una fuente para los valores de velocidad.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Seleccionar fuente",
|
||||
"searchPlaceholder": "Buscar fuentes…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Mostrar los valores de velocidad en negrita.",
|
||||
"label": "Negrita"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Mostrar los valores de velocidad en cursiva.",
|
||||
"label": "Cursiva"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Escalar el tamaño del texto en relación con el predeterminado.",
|
||||
"label": "Modificador de tamaño de fuente"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Colocar los valores TX y RX uno al lado del otro en lugar de apilados.",
|
||||
"label": "Diseño horizontal"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Escalar el tamaño del icono en relación con el tamaño predeterminado.",
|
||||
"label": "Modificador del tamaño del icono"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Elige el estilo de icono utilizado para los indicadores TX/RX.",
|
||||
"label": "Tipo de icono"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Mostrar las velocidades actuales de RX/TX como números.",
|
||||
"label": "Mostrar valores"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Ajustar el espaciado entre los elementos RX/TX.",
|
||||
"label": "Espaciado vertical"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Activar colores personalizados en lugar de los predeterminados del tema.",
|
||||
"label": "Colores personalizados"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Reemplazar la fuente predeterminada para los valores de velocidad.",
|
||||
"label": "Fuente personalizada"
|
||||
"colorTx": {
|
||||
"desc": "Color del icono de subida (TX) cuando esté por encima del umbral.",
|
||||
"label": "TX Activo"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Color del icono de descarga (RX) cuando esté por encima del umbral.",
|
||||
"label": "RX Activo"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Color del icono cuando el tráfico esté por debajo del umbral.",
|
||||
"label": "Inactivo"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Color del texto para los valores de velocidad.",
|
||||
"label": "Texto"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Relleno izquierdo",
|
||||
"desc": "Relleno del contenido a la izquierda."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Relleno derecho",
|
||||
"desc": "Relleno del contenido a la derecha."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Espaciado de columnas",
|
||||
"desc": "Espaciado entre columnas en el diseño de cuadrícula."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Espaciado de filas",
|
||||
"desc": "Espaciado entre filas en el diseño de cuadrícula (sin efecto en el diseño horizontal)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Paramètres du widget"
|
||||
"widget-settings": "Paramètres du widget",
|
||||
"toggle-panel": "Basculer le moniteur"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Activité réseau",
|
||||
"close": "Fermer",
|
||||
"download": "Téléchargement",
|
||||
"upload": "Téléversement"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Disposition",
|
||||
"desc": "Disposer les cellules en ligne (horizontal) ou en grille 2×2 (vertical).",
|
||||
"horizontal": "Horizontal",
|
||||
"vertical": "Vertical"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Affectation des cellules",
|
||||
"desc": "Choisir ce que chaque cellule affiche. Pas de doublons possibles. Ex. : utiliser des cellules vides pour n'afficher que les icônes."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "Icône TX",
|
||||
"rxIcon": "Icône RX",
|
||||
"txSpeed": "Vitesse TX",
|
||||
"rxSpeed": "Vitesse RX",
|
||||
"none": "Vide"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Choisissez le style d'icône utilisé pour les indicateurs TX/RX.",
|
||||
"label": "Type d'icône"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Définir le seuil d'activité en octets par seconde (o/s).",
|
||||
"label": "Afficher le seuil actif"
|
||||
"desc": "Le trafic en dessous de cette valeur (o/s) est affiché comme inactif.",
|
||||
"label": "Seuil d'activité"
|
||||
},
|
||||
"colorRx": {
|
||||
"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"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Mettre à l'échelle la taille du texte par rapport à la taille par défaut.",
|
||||
"label": "Taille de police"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Définir la couleur de l'icône lorsque le trafic est inférieur au seuil.",
|
||||
"label": "RX/TX Inactif"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Ajuster la taille de l'icône par rapport à la taille par défaut.",
|
||||
"label": "Taille d'icône"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Définir la couleur du texte utilisée pour les valeurs RX et TX.",
|
||||
"label": "Texte"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Définir la couleur de l'icône de téléversement (TX) lorsque le seuil est dépassé.",
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"desc": "Remplacer la police par défaut pour les valeurs de vitesse.",
|
||||
"label": "Police personnalisée"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Choisir une police pour les valeurs de vitesse.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Sélectionner une police",
|
||||
"searchPlaceholder": "Rechercher des polices…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Afficher les valeurs de vitesse en gras.",
|
||||
"label": "Gras"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Afficher les valeurs de vitesse en italique.",
|
||||
"label": "Italique"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Mettre à l'échelle la taille du texte par rapport à la taille par défaut.",
|
||||
"label": "Modificateur de taille de police"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Afficher les valeurs TX et RX côte à côte au lieu de les empiler.",
|
||||
"label": "Disposition horizontale"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Ajuster la taille de l'icône par rapport à la taille par défaut.",
|
||||
"label": "Modificateur de taille d'icône"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Choisissez le style d'icône utilisé pour les indicateurs TX/RX.",
|
||||
"label": "Type d'icône"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Afficher les vitesses RX/TX actuelles sous forme de nombres.",
|
||||
"label": "Afficher les valeurs"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Ajuster l'espacement entre les éléments RX/TX.",
|
||||
"label": "Espacement vertical"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Activer les couleurs personnalisées au lieu des couleurs par défaut du thème.",
|
||||
"label": "Couleurs personnalisées"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Remplacer la police par défaut pour les valeurs de vitesse.",
|
||||
"label": "Police personnalisée"
|
||||
"colorTx": {
|
||||
"desc": "Couleur de l'icône de téléversement (TX) lorsque le seuil est dépassé.",
|
||||
"label": "TX Active"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Couleur de l'icône de téléchargement (RX) lorsque la valeur est supérieure au seuil.",
|
||||
"label": "RX Active"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Couleur de l'icône lorsque le trafic est inférieur au seuil.",
|
||||
"label": "Inactif"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Couleur du texte pour les valeurs de vitesse.",
|
||||
"label": "Texte"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Marge intérieure gauche",
|
||||
"desc": "Marge intérieure du contenu à gauche."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Marge intérieure droite",
|
||||
"desc": "Marge intérieure du contenu à droite."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Espacement des colonnes",
|
||||
"desc": "Espacement entre les colonnes dans la disposition en grille."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Espacement des lignes",
|
||||
"desc": "Espacement entre les lignes dans la disposition en grille (sans effet en disposition horizontale)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Widget beállítások"
|
||||
"widget-settings": "Widget beállítások",
|
||||
"toggle-panel": "Monitor váltása"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Hálózati aktivitás",
|
||||
"close": "Bezárás",
|
||||
"download": "Letöltés",
|
||||
"upload": "Feltöltés"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Elrendezés",
|
||||
"desc": "Cellák elrendezése sorban (vízszintes) vagy 2×2-es rácsban (függőleges).",
|
||||
"horizontal": "Vízszintes",
|
||||
"vertical": "Függőleges"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Cellák hozzárendelése",
|
||||
"desc": "Válaszd ki, mit jelenítsen meg az egyes cellák. Duplikátumok nem lehetségesek. Pl. üres cellákkal csak ikonok jeleníthetők meg."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "TX ikon",
|
||||
"rxIcon": "RX ikon",
|
||||
"txSpeed": "TX sebesség",
|
||||
"rxSpeed": "RX sebesség",
|
||||
"none": "Üres"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Válaszd ki az TX/RX indikátorokhoz használt ikonkészletet.",
|
||||
"label": "Ikon típusa"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"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"
|
||||
"desc": "Az e küszöbérték alatti forgalom (B/s) inaktívként jelenik meg.",
|
||||
"label": "Aktivitási küszöbérték"
|
||||
},
|
||||
"colorRx": {
|
||||
"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"
|
||||
"fontSizeModifier": {
|
||||
"desc": "A szövegméret skálázása az alapértelmezett mérethez képest.",
|
||||
"label": "Betűméret"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Állítsa be az ikon színét, ha a forgalom a küszöbérték alatt van.",
|
||||
"label": "RX/TX inaktív"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Az ikonméret skálázása az alapértelmezett mérethez képest.",
|
||||
"label": "Ikonméret"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Állítsa be az RX és TX értékekhez használt szövegszínt.",
|
||||
"label": "Szöveg"
|
||||
},
|
||||
"colorTx": {
|
||||
"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"
|
||||
},
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"desc": "Az alapértelmezett betűtípus felülírása a sebességértékekhez.",
|
||||
"label": "Egyéni betűtípus"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Válasszon betűtípust a sebességértékekhez.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Betűtípus kiválasztása",
|
||||
"searchPlaceholder": "Betűtípusok keresése…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Sebességértékek vastag betűvel.",
|
||||
"label": "Vastag"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Sebességértékek dőlt betűvel.",
|
||||
"label": "Dőlt"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "A szövegméret skálázása az alapértelmezett mérethez képest.",
|
||||
"label": "Betűméret módosító"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "TX és RX értékek egymás mellett, nem egymás alatt.",
|
||||
"label": "Vízszintes elrendezés"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Az ikonméret skálázása az alapértelmezett mérethez képest.",
|
||||
"label": "Ikonméret módosító"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Válaszd ki az TX/RX indikátorokhoz használt ikonkészletet.",
|
||||
"label": "Ikon típusa"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "A pillanatnyi RX/TX sebességek megjelenítése számként.",
|
||||
"label": "Értékek megjelenítése"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Állítsa be a RX/TX elemek közötti távolságot.",
|
||||
"label": "Függőleges térköz"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Egyéni színek engedélyezése a téma alapértelmezett színei helyett.",
|
||||
"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"
|
||||
"colorTx": {
|
||||
"desc": "Feltöltés (TX) ikon színe, ha a küszöbérték felett van.",
|
||||
"label": "TX Aktív"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Letöltés (RX) ikon színe, ha az meghaladja a küszöbértéket.",
|
||||
"label": "RX Aktív"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Ikon színe, ha a forgalom a küszöbérték alatt van.",
|
||||
"label": "Inaktív"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Szövegszín a sebességértékekhez.",
|
||||
"label": "Szöveg"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Bal oldali kitöltés",
|
||||
"desc": "A tartalom kitöltése a bal oldalon."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Jobb oldali kitöltés",
|
||||
"desc": "A tartalom kitöltése a jobb oldalon."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Oszlopköz",
|
||||
"desc": "Oszlopok közötti távolság a rácsos elrendezésben."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Sorköz",
|
||||
"desc": "Sorok közötti távolság a rácsos elrendezésben (nincs hatása vízszintes elrendezésben)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Impostazioni widget"
|
||||
"widget-settings": "Impostazioni widget",
|
||||
"toggle-panel": "Mostra/nascondi Monitor"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Attività di rete",
|
||||
"close": "Chiudi",
|
||||
"download": "Download",
|
||||
"upload": "Upload"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Layout",
|
||||
"desc": "Disporre le celle in una riga (orizzontale) o in una griglia 2×2 (verticale).",
|
||||
"horizontal": "Orizzontale",
|
||||
"vertical": "Verticale"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Assegnazione celle",
|
||||
"desc": "Scegli cosa mostra ogni cella. Non sono possibili duplicati. Es.: usa celle vuote per mostrare solo le icone."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "Icona TX",
|
||||
"rxIcon": "Icona RX",
|
||||
"txSpeed": "Velocità TX",
|
||||
"rxSpeed": "Velocità RX",
|
||||
"none": "Vuoto"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Scegli lo stile dell'icona usata per gli indicatori TX/RX.",
|
||||
"label": "Tipo icona"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Imposta la soglia di attività in byte al secondo (B/s).",
|
||||
"label": "Mostra soglia attiva"
|
||||
"desc": "Il traffico sotto questo valore (B/s) viene mostrato come inattivo.",
|
||||
"label": "Soglia di attività"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Imposta il colore dell'icona di download (RX) quando sopra la soglia.",
|
||||
"label": "RX Attivo"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Scala la dimensione del testo rispetto al valore predefinito.",
|
||||
"label": "Dimensione font"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Imposta il colore dell'icona quando il traffico è sotto la soglia.",
|
||||
"label": "RX/TX Inattivo"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Scala la dimensione dell'icona rispetto al valore predefinito.",
|
||||
"label": "Dimensione icona"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Imposta il colore del testo utilizzato per i valori RX e TX.",
|
||||
"label": "Testo"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Imposta il colore dell'icona di upload (TX) quando sopra la soglia.",
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"desc": "Sovrascrivi il font predefinito per i valori di velocità.",
|
||||
"label": "Font personalizzato"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Scegli un font per i valori di velocità.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Seleziona un font",
|
||||
"searchPlaceholder": "Cerca font…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Visualizza i valori di velocità in grassetto.",
|
||||
"label": "Grassetto"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Visualizza i valori di velocità in corsivo.",
|
||||
"label": "Corsivo"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Scala la dimensione del testo rispetto al valore predefinito.",
|
||||
"label": "Modificatore dimensione font"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Posiziona i valori TX e RX fianco a fianco invece che impilati.",
|
||||
"label": "Layout orizzontale"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Scala la dimensione dell'icona rispetto al valore predefinito.",
|
||||
"label": "Modificatore dimensione icona"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Scegli lo stile dell'icona usata per gli indicatori TX/RX.",
|
||||
"label": "Tipo icona"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Visualizza le velocità RX/TX attuali come numeri.",
|
||||
"label": "Mostra valori"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Regola lo spazio tra gli elementi RX/TX.",
|
||||
"label": "Spaziatura verticale"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Attiva i colori personalizzati invece dei colori predefiniti del tema.",
|
||||
"label": "Colori personalizzati"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Sovrascrivi il font predefinito per i valori di velocità.",
|
||||
"label": "Font personalizzato"
|
||||
"colorTx": {
|
||||
"desc": "Colore dell'icona di upload (TX) quando sopra la soglia.",
|
||||
"label": "TX Attivo"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Colore dell'icona di download (RX) quando sopra la soglia.",
|
||||
"label": "RX Attivo"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Colore dell'icona quando il traffico è sotto la soglia.",
|
||||
"label": "Inattivo"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Colore del testo per i valori di velocità.",
|
||||
"label": "Testo"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Padding sinistro",
|
||||
"desc": "Padding del contenuto a sinistra."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Padding destro",
|
||||
"desc": "Padding del contenuto a destra."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Spaziatura colonne",
|
||||
"desc": "Spaziatura tra le colonne nel layout a griglia."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Spaziatura righe",
|
||||
"desc": "Spaziatura tra le righe nel layout a griglia (senza effetto nel layout orizzontale)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "ウィジェット設定"
|
||||
"widget-settings": "ウィジェット設定",
|
||||
"toggle-panel": "モニターの切替"
|
||||
},
|
||||
"panel": {
|
||||
"title": "ネットワークアクティビティ",
|
||||
"close": "閉じる",
|
||||
"download": "ダウンロード",
|
||||
"upload": "アップロード"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "レイアウト",
|
||||
"desc": "セルを一列(水平)または2×2グリッド(垂直)に配置します。",
|
||||
"horizontal": "水平",
|
||||
"vertical": "垂直"
|
||||
},
|
||||
"slots": {
|
||||
"label": "セルの割り当て",
|
||||
"desc": "各セルの表示内容を選択します。重複は不可。例:空のセルを使ってアイコンのみ表示。"
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "TXアイコン",
|
||||
"rxIcon": "RXアイコン",
|
||||
"txSpeed": "TX速度",
|
||||
"rxSpeed": "RX速度",
|
||||
"none": "空"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "TX/RXインジケーターに使用するアイコンのスタイルを選択してください。",
|
||||
"label": "アイコンの種類"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "アクティビティの閾値をバイト毎秒 (B/s) で設定します。",
|
||||
"label": "アクティブ閾値を表示"
|
||||
"desc": "この値(B/s)未満のトラフィックは非アクティブとして表示されます。",
|
||||
"label": "アクティビティ閾値"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "閾値を超えた場合のダウンロード (RX) アイコンの色を設定します。",
|
||||
"label": "RX アクティブ"
|
||||
"fontSizeModifier": {
|
||||
"desc": "テキストのサイズをデフォルトを基準に調整します。",
|
||||
"label": "フォントサイズ"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "トラフィックが閾値を下回った場合に、アイコンの色を設定します。",
|
||||
"label": "RX/TX 非アクティブ"
|
||||
"iconSizeModifier": {
|
||||
"desc": "デフォルトに対するアイコンのサイズを調整します。",
|
||||
"label": "アイコンサイズ"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "RX と TX の両方の値に使用するテキストの色を設定します。",
|
||||
"label": "テキスト"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "閾値を超えた場合のアップロード (TX) アイコンの色を設定します。",
|
||||
"label": "TX アクティブ"
|
||||
},
|
||||
"contentMargin": {
|
||||
"desc": "ウィジェットコンテンツの両サイドの水平パディング。",
|
||||
"label": "コンテンツマージン"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "速度値を太字で表示。",
|
||||
"label": "太字"
|
||||
"useCustomFont": {
|
||||
"desc": "速度値のデフォルトフォントを上書き。",
|
||||
"label": "カスタムフォント"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "速度値に使用するフォントを選択してください。",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "フォントを選択",
|
||||
"searchPlaceholder": "フォントを検索…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "速度値を太字で表示。",
|
||||
"label": "太字"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "速度値を斜体で表示。",
|
||||
"label": "斜体"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "テキストのサイズをデフォルトを基準に調整します。",
|
||||
"label": "フォントサイズ変更"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "TXとRXの値を縦並びではなく横並びで表示。",
|
||||
"label": "水平レイアウト"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "デフォルトに対するアイコンのサイズを調整します。",
|
||||
"label": "アイコンサイズ変更"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "TX/RXインジケーターに使用するアイコンのスタイルを選択してください。",
|
||||
"label": "アイコンの種類"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "現在のRX/TX速度を数値で表示。",
|
||||
"label": "値を表示"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "RX/TX要素間の間隔を調整してください。",
|
||||
"label": "垂直間隔"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "テーマのデフォルトの代わりにカスタムカラーを有効にする。",
|
||||
"label": "カスタムカラー"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "速度値のデフォルトフォントを上書き。",
|
||||
"label": "カスタムフォント"
|
||||
"colorTx": {
|
||||
"desc": "閾値を超えた場合のアップロード (TX) アイコンの色。",
|
||||
"label": "TX アクティブ"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "閾値を超えた場合のダウンロード (RX) アイコンの色。",
|
||||
"label": "RX アクティブ"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "トラフィックが閾値を下回った場合のアイコンの色。",
|
||||
"label": "非アクティブ"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "速度値のテキスト色。",
|
||||
"label": "テキスト"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "左パディング",
|
||||
"desc": "コンテンツの左側のパディング。"
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "右パディング",
|
||||
"desc": "コンテンツの右側のパディング。"
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "列間隔",
|
||||
"desc": "グリッドレイアウトでの列間の間隔。"
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "行間隔",
|
||||
"desc": "グリッドレイアウトでの行間の間隔(水平レイアウトでは効果なし)。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Mîhengên widgetê"
|
||||
"widget-settings": "Mîhengên widgetê",
|
||||
"toggle-panel": "Monîtor veke/bigire"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Çalakiya Torê",
|
||||
"close": "Bigire",
|
||||
"download": "Daxistin",
|
||||
"upload": "Barkirin"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Sazmon",
|
||||
"desc": "Hucreyan di rêzê de (asayî) an di torê 2×2 de (stûnî) bicîh bike.",
|
||||
"horizontal": "Asayî",
|
||||
"vertical": "Stûnî"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Danîna Hucreyan",
|
||||
"desc": "Hilbijêre ku her hucre çi nîşan bide. Dubare ne mumkin e. Mînak: ji bo tenê îkonan nîşan bidin hucreyan vala bihêle."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "Îkona TX",
|
||||
"rxIcon": "Îkona RX",
|
||||
"txSpeed": "Leza TX",
|
||||
"rxSpeed": "Leza RX",
|
||||
"none": "Vala"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Şêwaza îkonê ya ku ji bo nîşanderên TX/RX tê bikaranîn hilbijêre.",
|
||||
"label": "Cureyê Îkonê"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Sînorê çalakiyê bi bayt di duyemîn de (B/s) destnîşan bike.",
|
||||
"label": "Derheqê Çalakîyê Nîşan Bide"
|
||||
"desc": "Trafîka li binê vê nirxê (B/s) wekî neçalak tê nîşandan.",
|
||||
"label": "Sînorê Çalakiyê"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Rengê îkona daxistinê (RX) dema ku ji tixûbê derbas dibe, destnîşan bike.",
|
||||
"label": "RX Çalak"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Mezinahiya nivîsê li gorî ya xwerû mezin bike.",
|
||||
"label": "Mezinahiya Tîpan"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Îkon rengê dema trafîk ji binê tixûbê be, saz bike.",
|
||||
"label": "RX/TX Neçalak"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Mezinahiya îkonê li gorî ya xwerû mezin bike.",
|
||||
"label": "Mezinahiya Îkonê"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Rengê nivîsê yê ku ji bo nirxên RX û TX tê bikaranîn, destnîşan bike.",
|
||||
"label": "Nivîs"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Rengê îkona barkirinê (TX) dema ku ji tixûbê derbas dibe, destnîşan bike.",
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"desc": "Fontê xwerû ji bo nirxên lezê binpê bike.",
|
||||
"label": "Fontê Xweser"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Ji bo nirxên lezê fontek hilbijêre.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Fontek hilbijêre",
|
||||
"searchPlaceholder": "Font lêgerîn…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Nirxên lezê bi qalın ve bike.",
|
||||
"label": "Qalın"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Nirxên lezê bi xwar ve bike.",
|
||||
"label": "Xwar"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Mezinahiya nivîsê li gorî ya xwerû mezin bike.",
|
||||
"label": "Guherînera Mezinahiya Tîpan"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Nirxên TX û RX li hev re biparêze, ne bi hev ve.",
|
||||
"label": "Sazmona_ASAYÎ"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Mezinahiya îkonê li gorî ya xwerû mezin bike.",
|
||||
"label": "Guherînerê Mezinahiya Îkonê"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Şêwaza îkonê ya ku ji bo nîşanderên TX/RX tê bikaranîn hilbijêre.",
|
||||
"label": "Cureyê Îkonê"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Leza lezahenên RX/TX yên niha wekî hejmaran.",
|
||||
"label": "Nîşan bide Nirxan"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Cihêtiya navbera elementên RX/TX eyar bike.",
|
||||
"label": "Valahiya_Rastkirin"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Çalak bike rengên xwerû li şûna rengên xwerû yên temayê.",
|
||||
"desc": "Rengên xweser li şûna rengên xwerû yên temayê çalak bike.",
|
||||
"label": "Rengên Xweser"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Fontê DEFAULT ji bo nirxên lezê binpê kirin.",
|
||||
"label": "Fontê Xweser"
|
||||
"colorTx": {
|
||||
"desc": "Rengê îkona barkirinê (TX) dema ku ji tixûbê derbas dibe.",
|
||||
"label": "TX Çalak"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Rengê îkona daxistinê (RX) dema ku ji tixûbê derbas dibe.",
|
||||
"label": "RX Çalak"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Rengê îkonê dema trafîk ji binê tixûbê be.",
|
||||
"label": "Neçalak"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Rengê nivîsê ji bo nirxên lezê.",
|
||||
"label": "Nivîs"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Peddinga çepê",
|
||||
"desc": "Peddinga naverokê li aliyê çepê."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Peddinga rastê",
|
||||
"desc": "Peddinga naverokê li aliyê rastê."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Valahiya stûnan",
|
||||
"desc": "Valahiya navbera stûnan di sazmona torê de."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Valahiya rêzan",
|
||||
"desc": "Valahiya navbera rêzan di sazmona torê de (di sazmona asayî de bêbandor e)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Widget-instellingen"
|
||||
"widget-settings": "Widget-instellingen",
|
||||
"toggle-panel": "Monitor in-/uitschakelen"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Netwerkactiviteit",
|
||||
"close": "Sluiten",
|
||||
"download": "Download",
|
||||
"upload": "Upload"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Lay-out",
|
||||
"desc": "Cellen in een rij (horizontaal) of in een 2×2-raster (verticaal) rangschikken.",
|
||||
"horizontal": "Horizontaal",
|
||||
"vertical": "Verticaal"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Celtoewijzing",
|
||||
"desc": "Kies wat elke cel weergeeft. Geen duplicaten mogelijk. Gebruik bijv. lege cellen om alleen pictogrammen te tonen."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "TX-pictogram",
|
||||
"rxIcon": "RX-pictogram",
|
||||
"txSpeed": "TX-snelheid",
|
||||
"rxSpeed": "RX-snelheid",
|
||||
"none": "Leeg"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Kies de pictogramstijl die gebruikt wordt voor de TX/RX-indicatoren.",
|
||||
"label": "Icoontype"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Stel de activiteitsdrempel in bytes per seconde (B/s) in.",
|
||||
"label": "Actieve drempel weergeven"
|
||||
"desc": "Verkeer onder deze waarde (B/s) wordt als inactief weergegeven.",
|
||||
"label": "Activiteitsdrempel"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Stel de kleur van het download (RX) pictogram in wanneer deze boven de drempelwaarde ligt.",
|
||||
"label": "RX Actief"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Schaal de tekstgrootte ten opzichte van de standaard.",
|
||||
"label": "Lettergrootte"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Stel de pictogramkleur in wanneer het verkeer onder de drempelwaarde is.",
|
||||
"label": "RX/TX Inactief"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Schaal de pictogramgrootte ten opzichte van de standaard.",
|
||||
"label": "Icoongrootte"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Stel de tekstkleur in die gebruikt wordt voor zowel RX- als TX-waarden.",
|
||||
"label": "Tekst"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Stel de kleur van het upload (TX) icoon in wanneer boven de drempelwaarde.",
|
||||
"label": "TX Actief"
|
||||
},
|
||||
"contentMargin": {
|
||||
"desc": "Horizontale padding aan beide zijden van de widget-inhoud.",
|
||||
"label": "Inhoudmarge"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Geef snelheidswaarden vetgedrukt weer.",
|
||||
"label": "Vet"
|
||||
"useCustomFont": {
|
||||
"desc": "Overschrijf het standaard lettertype voor snelheidswaarden.",
|
||||
"label": "Aangepast lettertype"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Kies een lettertype voor de snelheidswaarden.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Selecteer lettertype",
|
||||
"searchPlaceholder": "Lettertypen zoeken…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Geef snelheidswaarden vetgedrukt weer.",
|
||||
"label": "Vet"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Geef snelheidswaarden scheefgedrukt weer.",
|
||||
"label": "Schuin"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Schaal de tekstgrootte ten opzichte van de standaard.",
|
||||
"label": "Lettergrootte aanpassing"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Plaats TX en RX waarden naast elkaar in plaats van gestapeld.",
|
||||
"label": "Horizontale lay-out"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Schaal de pictogramgrootte ten opzichte van de standaard.",
|
||||
"label": "Icoongrootte aanpassing"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Kies de pictogramstijl die gebruikt wordt voor de TX/RX-indicatoren.",
|
||||
"label": "Icoontype"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Toon de huidige RX/TX snelheden als getallen.",
|
||||
"label": "Waarden weergeven"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Pas de afstand tussen de RX/TX-elementen aan.",
|
||||
"label": "Verticale afstand"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Schakel aangepaste kleuren in in plaats van de standaard themakleuren.",
|
||||
"label": "Aangepaste kleuren"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Overschrijf het standaard lettertype voor snelheidswaarden.",
|
||||
"label": "Aangepast lettertype"
|
||||
"colorTx": {
|
||||
"desc": "Kleur van het upload (TX) pictogram wanneer boven de drempelwaarde.",
|
||||
"label": "TX Actief"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Kleur van het download (RX) pictogram wanneer boven de drempelwaarde.",
|
||||
"label": "RX Actief"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Pictogramkleur wanneer het verkeer onder de drempelwaarde is.",
|
||||
"label": "Inactief"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Tekstkleur voor snelheidswaarden.",
|
||||
"label": "Tekst"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Padding links",
|
||||
"desc": "Padding van de inhoud aan de linkerkant."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Padding rechts",
|
||||
"desc": "Padding van de inhoud aan de rechterkant."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Kolomafstand",
|
||||
"desc": "Afstand tussen kolommen in rasterlay-out."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Rijafstand",
|
||||
"desc": "Afstand tussen rijen in rasterlay-out (heeft geen effect in horizontale lay-out)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Ustawienia widgetu"
|
||||
"widget-settings": "Ustawienia widgetu",
|
||||
"toggle-panel": "Przełącz Monitor"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Aktywność sieciowa",
|
||||
"close": "Zamknij",
|
||||
"download": "Pobieranie",
|
||||
"upload": "Wysyłanie"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Układ",
|
||||
"desc": "Rozmieść komórki w rzędzie (poziomo) lub w siatce 2×2 (pionowo).",
|
||||
"horizontal": "Poziomy",
|
||||
"vertical": "Pionowy"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Przypisanie komórek",
|
||||
"desc": "Wybierz, co wyświetla każda komórka. Duplikaty nie są możliwe. Np. użyj pustych komórek, aby wyświetlać tylko ikony."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "Ikona TX",
|
||||
"rxIcon": "Ikona RX",
|
||||
"txSpeed": "Prędkość TX",
|
||||
"rxSpeed": "Prędkość RX",
|
||||
"none": "Pusty"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Wybierz styl ikony używany dla wskaźników TX/RX.",
|
||||
"label": "Typ Ikony"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Ustaw próg aktywności w bajtach na sekundę (B/s).",
|
||||
"label": "Pokaż Aktywny Próg"
|
||||
"desc": "Ruch poniżej tej wartości (B/s) jest wyświetlany jako nieaktywny.",
|
||||
"label": "Próg aktywności"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Ustaw kolor ikony pobierania (RX), gdy wartość przekroczy próg.",
|
||||
"label": "RX Aktywny"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Skaluj rozmiar tekstu względem domyślnego.",
|
||||
"label": "Rozmiar czcionki"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Ustaw kolor ikony, gdy ruch jest poniżej progu.",
|
||||
"label": "RX/TX Nieaktywne"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Skaluj rozmiar ikony względem domyślnego.",
|
||||
"label": "Rozmiar ikony"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Ustaw kolor tekstu używany zarówno dla wartości RX, jak i TX.",
|
||||
"label": "Tekst"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Ustaw kolor ikony wysyłania (TX), gdy przekroczony zostanie próg.",
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"desc": "Zastąp domyślną czcionkę dla wartości prędkości.",
|
||||
"label": "Własna czcionka"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Wybierz czcionkę dla wartości prędkości.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Wybierz czcionkę",
|
||||
"searchPlaceholder": "Szukaj czcionek…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Wyświetlaj wartości prędkości pogrubionym tekstem.",
|
||||
"label": "Pogrubiony"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Wyświetlaj wartości prędkości kursywą.",
|
||||
"label": "Kursywa"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Skaluj rozmiar tekstu względem domyślnego.",
|
||||
"label": "Modyfikator rozmiaru czcionki"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Umieść wartości TX i RX obok siebie zamiast jedna nad drugą.",
|
||||
"label": "Układ poziomy"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Skaluj rozmiar ikony względem domyślnego.",
|
||||
"label": "Modyfikator rozmiaru ikony"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Wybierz styl ikony używany dla wskaźników TX/RX.",
|
||||
"label": "Typ Ikony"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Wyświetlaj aktualne prędkości RX/TX jako liczby.",
|
||||
"label": "Pokaż wartości"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Dostosuj odstępy między elementami RX/TX.",
|
||||
"label": "Odstęp pionowy"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Włącz własne kolory zamiast domyślnych motywu.",
|
||||
"label": "Własne kolory"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Zastąp domyślną czcionkę dla wartości prędkości.",
|
||||
"label": "Własna czcionka"
|
||||
"colorTx": {
|
||||
"desc": "Kolor ikony wysyłania (TX), gdy przekroczony jest próg.",
|
||||
"label": "TX Aktywny"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Kolor ikony pobierania (RX), gdy wartość przekroczy próg.",
|
||||
"label": "RX Aktywny"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Kolor ikony, gdy ruch jest poniżej progu.",
|
||||
"label": "Nieaktywne"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Kolor tekstu dla wartości prędkości.",
|
||||
"label": "Tekst"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Padding lewy",
|
||||
"desc": "Padding treści po lewej stronie."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Padding prawy",
|
||||
"desc": "Padding treści po prawej stronie."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Odstęp kolumn",
|
||||
"desc": "Odstęp między kolumnami w układzie siatki."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Odstęp wierszy",
|
||||
"desc": "Odstęp między wierszami w układzie siatki (bez efektu w układzie poziomym)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Configurações do widget"
|
||||
"widget-settings": "Configurações do widget",
|
||||
"toggle-panel": "Alternar Monitor"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Atividade de Rede",
|
||||
"close": "Fechar",
|
||||
"download": "Download",
|
||||
"upload": "Upload"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Layout",
|
||||
"desc": "Organizar células em linha (horizontal) ou em grelha 2×2 (vertical).",
|
||||
"horizontal": "Horizontal",
|
||||
"vertical": "Vertical"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Atribuição de células",
|
||||
"desc": "Escolha o que cada célula exibe. Não são possíveis duplicados. Ex.: use células vazias para mostrar apenas ícones."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "Ícone TX",
|
||||
"rxIcon": "Ícone RX",
|
||||
"txSpeed": "Velocidade TX",
|
||||
"rxSpeed": "Velocidade RX",
|
||||
"none": "Vazio"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Escolha o estilo do ícone usado para os indicadores TX/RX.",
|
||||
"label": "Tipo de Ícone"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Defina o limite de atividade em bytes por segundo (B/s).",
|
||||
"label": "Mostrar Limiar Ativo"
|
||||
"desc": "Tráfego abaixo deste valor (B/s) é mostrado como inativo.",
|
||||
"label": "Limiar de atividade"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Defina a cor do ícone de download (RX) quando acima do limite.",
|
||||
"label": "RX Ativo"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Ajustar o tamanho do texto em relação ao padrão.",
|
||||
"label": "Tamanho da fonte"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Definir a cor do ícone quando o tráfego estiver abaixo do limite.",
|
||||
"label": "RX/TX Inativo"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Dimensionar o tamanho do ícone em relação ao padrão.",
|
||||
"label": "Tamanho do ícone"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Definir a cor do texto usada para os valores de RX e TX.",
|
||||
"label": "Texto"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Definir a cor do ícone de upload (TX) quando acima do limite.",
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"desc": "Substituir a fonte padrão para valores de velocidade.",
|
||||
"label": "Fonte Personalizada"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Escolha uma fonte para os valores de velocidade.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Selecionar fonte",
|
||||
"searchPlaceholder": "Pesquisar fontes…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Renderizar valores de velocidade em negrito.",
|
||||
"label": "Negrito"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Renderizar valores de velocidade em itálico.",
|
||||
"label": "Itálico"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Ajustar o tamanho do texto em relação ao padrão.",
|
||||
"label": "Modificador de Tamanho da Fonte"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Colocar valores TX e RX lado a lado em vez de empilhados.",
|
||||
"label": "Layout Horizontal"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Dimensionar o tamanho do ícone em relação ao padrão.",
|
||||
"label": "Modificador de Tamanho do Ícone"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Escolha o estilo do ícone usado para os indicadores TX/RX.",
|
||||
"label": "Tipo de Ícone"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Exibir as velocidades atuais de RX/TX como números.",
|
||||
"label": "Mostrar Valores"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Ajustar o espaçamento entre os elementos RX/TX.",
|
||||
"label": "Espaçamento vertical"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Ativar cores personalizadas em vez das cores padrão do tema.",
|
||||
"label": "Cores Personalizadas"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Substituir a fonte padrão para valores de velocidade.",
|
||||
"label": "Fonte Personalizada"
|
||||
"colorTx": {
|
||||
"desc": "Cor do ícone de upload (TX) quando acima do limite.",
|
||||
"label": "TX Ativo"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Cor do ícone de download (RX) quando acima do limite.",
|
||||
"label": "RX Ativo"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Cor do ícone quando o tráfego estiver abaixo do limite.",
|
||||
"label": "Inativo"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Cor do texto para valores de velocidade.",
|
||||
"label": "Texto"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Padding esquerdo",
|
||||
"desc": "Padding do conteúdo à esquerda."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Padding direito",
|
||||
"desc": "Padding do conteúdo à direita."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Espaçamento de colunas",
|
||||
"desc": "Espaçamento entre colunas no layout de grelha."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Espaçamento de linhas",
|
||||
"desc": "Espaçamento entre linhas no layout de grelha (sem efeito no layout horizontal)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Настройки виджета"
|
||||
"widget-settings": "Настройки виджета",
|
||||
"toggle-panel": "Переключить монитор"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Сетевая активность",
|
||||
"close": "Закрыть",
|
||||
"download": "Загрузка",
|
||||
"upload": "Отдача"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Раскладка",
|
||||
"desc": "Расположить ячейки в ряд (горизонтально) или в сетку 2×2 (вертикально).",
|
||||
"horizontal": "Горизонтальная",
|
||||
"vertical": "Вертикальная"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Назначение ячеек",
|
||||
"desc": "Выберите, что отображает каждая ячейка. Дублирование невозможно. Напр., используйте пустые ячейки, чтобы показывать только значки."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "Значок TX",
|
||||
"rxIcon": "Значок RX",
|
||||
"txSpeed": "Скорость TX",
|
||||
"rxSpeed": "Скорость RX",
|
||||
"none": "Пусто"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Выберите стиль значков для индикаторов TX/RX.",
|
||||
"label": "Тип значка"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Установите порог активности в байтах в секунду (Б/с).",
|
||||
"label": "Показать активный порог"
|
||||
"desc": "Трафик ниже этого значения (Б/с) отображается как неактивный.",
|
||||
"label": "Порог активности"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Установите цвет значка загрузки (RX), когда он выше порогового значения.",
|
||||
"label": "RX активен"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Измените размер текста относительно размера по умолчанию.",
|
||||
"label": "Размер шрифта"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Установите цвет значка, когда трафик ниже порогового значения.",
|
||||
"label": "RX/TX неактивны"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Измените размер значка относительно размера по умолчанию.",
|
||||
"label": "Размер значка"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Установите цвет текста для значений RX и TX.",
|
||||
"label": "Текст"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Установите цвет значка загрузки (TX) при превышении порогового значения.",
|
||||
"label": "TX активен"
|
||||
},
|
||||
"contentMargin": {
|
||||
"desc": "Горизонтальный отступ по обеим сторонам содержимого виджета.",
|
||||
"label": "Отступ содержимого"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Отображать значения скорости жирным шрифтом.",
|
||||
"label": "Жирный"
|
||||
"useCustomFont": {
|
||||
"desc": "Переопределите шрифт по умолчанию для значений скорости.",
|
||||
"label": "Пользовательский шрифт"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Выберите шрифт для значений скорости.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Выбрать шрифт",
|
||||
"searchPlaceholder": "Поиск шрифтов…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Отображать значения скорости жирным шрифтом.",
|
||||
"label": "Жирный"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Отображать значения скорости курсивом.",
|
||||
"label": "Курсив"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Измените размер текста относительно размера по умолчанию.",
|
||||
"label": "Модификатор размера шрифта"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Разместите значения TX и RX рядом друг с другом, а не друг под другом.",
|
||||
"label": "Горизонтальная раскладка"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Измените размер значка относительно размера по умолчанию.",
|
||||
"label": "Модификатор размера значка"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Выберите стиль значков для индикаторов TX/RX.",
|
||||
"label": "Тип значка"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Отображать текущие скорости RX/TX в виде чисел.",
|
||||
"label": "Показать значения"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Отрегулируйте интервал между элементами RX/TX.",
|
||||
"label": "Вертикальный интервал"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Включите пользовательские цвета вместо цветов темы по умолчанию.",
|
||||
"label": "Пользовательские цвета"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Переопределите шрифт по умолчанию для значений скорости.",
|
||||
"label": "Пользовательский шрифт"
|
||||
"colorTx": {
|
||||
"desc": "Цвет значка отдачи (TX) при превышении порогового значения.",
|
||||
"label": "TX активен"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Цвет значка загрузки (RX), когда он выше порогового значения.",
|
||||
"label": "RX активен"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Цвет значка, когда трафик ниже порогового значения.",
|
||||
"label": "Неактивен"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Цвет текста для значений скорости.",
|
||||
"label": "Текст"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Отступ слева",
|
||||
"desc": "Отступ содержимого слева."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Отступ справа",
|
||||
"desc": "Отступ содержимого справа."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Расстояние между столбцами",
|
||||
"desc": "Расстояние между столбцами в сеточной раскладке."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Расстояние между строками",
|
||||
"desc": "Расстояние между строками в сеточной раскладке (не действует в горизонтальной раскладке)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Widget Ayarları"
|
||||
"widget-settings": "Widget Ayarları",
|
||||
"toggle-panel": "Monitörü Aç/Kapat"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Ağ Etkinliği",
|
||||
"close": "Kapat",
|
||||
"download": "İndirme",
|
||||
"upload": "Yükleme"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Düzen",
|
||||
"desc": "Hücreleri bir satırda (yatay) veya 2×2 ızgarada (dikey) düzenle.",
|
||||
"horizontal": "Yatay",
|
||||
"vertical": "Dikey"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Hücre Ataması",
|
||||
"desc": "Her hücrenin ne göstereceğini seç. Yinelenenlere izin verilmez. Örn. yalnızca simgeleri göstermek için boş hücreler kullan."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "TX Simgesi",
|
||||
"rxIcon": "RX Simgesi",
|
||||
"txSpeed": "TX Hızı",
|
||||
"rxSpeed": "RX Hızı",
|
||||
"none": "Boş"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "TX/RX göstergeleri için kullanılan simge stilini seçin.",
|
||||
"label": "Simge Türü"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Etkinlik eşiğini saniye başına bayt (B/s) cinsinden ayarlayın.",
|
||||
"label": "Aktif Eşiği Göster"
|
||||
"desc": "Bu değerin altındaki trafik (B/s) etkin değil olarak gösterilir.",
|
||||
"label": "Etkinlik Eşiği"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Eşiğin üzerindeyken indirme (RX) simge rengini ayarla.",
|
||||
"label": "RX Aktif"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Metin boyutunu varsayılana göre ölçekle.",
|
||||
"label": "Yazı Boyutu"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Trafiğin eşiğin altında olduğu durumlarda simge rengini ayarla.",
|
||||
"label": "RX/TX Etkin Değil"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Simge boyutunu varsayılan değere göre ölçekle.",
|
||||
"label": "Simge Boyutu"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "RX ve TX değerleri için kullanılan metin rengini ayarla.",
|
||||
"label": "Metin"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Eşik değerinin üzerindeyken yükleme (TX) simge rengini ayarla.",
|
||||
"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"
|
||||
"useCustomFont": {
|
||||
"desc": "Hız değerleri için varsayılan yazı tipini geçersiz kıl.",
|
||||
"label": "Özel Yazı Tipi"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Hız değerleri için bir yazı tipi seçin.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Yazı tipi seçin",
|
||||
"searchPlaceholder": "Yazı tipleri ara…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Hız değerlerini kalın olarak oluştur.",
|
||||
"label": "Kalın"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Hız değerlerini italik olarak oluştur.",
|
||||
"label": "İtalik"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Metin boyutunu varsayılana göre ölçekle.",
|
||||
"label": "Yazı Boyutu Değiştirici"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "TX ve RX değerlerini üst üste yerine yan yana yerleştir.",
|
||||
"label": "Yatay Düzen"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Simge boyutunu varsayılan değere göre ölçekle.",
|
||||
"label": "Simge Boyutu Değiştirici"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "TX/RX göstergeleri için kullanılan simge stilini seçin.",
|
||||
"label": "Simge Türü"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Mevcut RX/TX hızlarını sayı olarak görüntüle.",
|
||||
"label": "Değerleri Göster"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "RX/TX öğeleri arasındaki boşluğu ayarlayın.",
|
||||
"label": "Dikey Aralık"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Tema varsayılanları yerine özel renkleri etkinleştir.",
|
||||
"label": "Özel Renkler"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Hız değerleri için varsayılan yazı tipini geçersiz kıl.",
|
||||
"label": "Özel Yazı Tipi"
|
||||
"colorTx": {
|
||||
"desc": "Eşiğin üzerindeyken yükleme (TX) simge rengi.",
|
||||
"label": "TX Aktif"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Eşiğin üzerindeyken indirme (RX) simge rengi.",
|
||||
"label": "RX Aktif"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Trafiğin eşiğin altında olduğu durumlarda simge rengi.",
|
||||
"label": "Etkin Değil"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Hız değerleri için metin rengi.",
|
||||
"label": "Metin"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Sol Dolgu",
|
||||
"desc": "İçeriğin sol tarafındaki dolgu."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Sağ Dolgu",
|
||||
"desc": "İçeriğin sağ tarafındaki dolgu."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Sütun Aralığı",
|
||||
"desc": "Izgara düzeninde sütunlar arası boşluk."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Satır Aralığı",
|
||||
"desc": "Izgara düzeninde satırlar arası boşluk (yatay düzende etkisizdir)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "Налаштування віджета"
|
||||
"widget-settings": "Налаштування віджета",
|
||||
"toggle-panel": "Перемкнути монітор"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Мережева активність",
|
||||
"close": "Закрити",
|
||||
"download": "Завантаження",
|
||||
"upload": "Вивантаження"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "Розташування",
|
||||
"desc": "Розмістити комірки в ряд (горизонтально) або у сітку 2×2 (вертикально).",
|
||||
"horizontal": "Горизонтальне",
|
||||
"vertical": "Вертикальне"
|
||||
},
|
||||
"slots": {
|
||||
"label": "Призначення комірок",
|
||||
"desc": "Оберіть, що відображає кожна комірка. Дублікати неможливі. Напр., використовуйте порожні комірки, щоб показувати лише іконки."
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "Іконка TX",
|
||||
"rxIcon": "Іконка RX",
|
||||
"txSpeed": "Швидкість TX",
|
||||
"rxSpeed": "Швидкість RX",
|
||||
"none": "Порожньо"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Виберіть стиль іконок, що використовуються для індикаторів TX/RX.",
|
||||
"label": "Тип іконки"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "Встановіть поріг активності в байтах на секунду (Б/с).",
|
||||
"label": "Показати активний поріг"
|
||||
"desc": "Трафік нижче цього значення (Б/с) відображається як неактивний.",
|
||||
"label": "Поріг активності"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Встановіть колір значка завантаження (RX), коли він перевищує поріг.",
|
||||
"label": "RX активний"
|
||||
"fontSizeModifier": {
|
||||
"desc": "Змінити розмір тексту відносно стандартного.",
|
||||
"label": "Розмір шрифту"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Встановіть колір значка, коли трафік нижче порогового значення.",
|
||||
"label": "RX/TX неактивні"
|
||||
"iconSizeModifier": {
|
||||
"desc": "Змінюйте розмір значка відносно стандартного.",
|
||||
"label": "Розмір значка"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Встановіть колір тексту, який використовується для значень RX та TX.",
|
||||
"label": "Текст"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "Встановіть колір піктограми завантаження (TX), коли значення перевищує поріг.",
|
||||
"label": "TX активний"
|
||||
},
|
||||
"contentMargin": {
|
||||
"desc": "Горизонтальний відступ з обох боків вмісту віджета.",
|
||||
"label": "Відступ вмісту"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Відображати значення швидкості жирним шрифтом.",
|
||||
"label": "Жирний"
|
||||
"useCustomFont": {
|
||||
"desc": "Перевизначити шрифт за замовчуванням для значень швидкості.",
|
||||
"label": "Користувацький шрифт"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "Оберіть шрифт для значень швидкості.",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "Обрати шрифт",
|
||||
"searchPlaceholder": "Пошук шрифтів…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "Відображати значення швидкості жирним шрифтом.",
|
||||
"label": "Жирний"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "Відображати значення швидкості курсивом.",
|
||||
"label": "Курсив"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "Змінити розмір тексту відносно стандартного.",
|
||||
"label": "Модифікатор розміру шрифту"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "Розмістити значення TX та RX поруч, а не один під одним.",
|
||||
"label": "Горизонтальне розташування"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "Змінюйте розмір значка відносно стандартного.",
|
||||
"label": "Модифікатор розміру значка"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "Виберіть стиль іконок, що використовуються для індикаторів TX/RX.",
|
||||
"label": "Тип іконки"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "Показувати поточні швидкості RX/TX у вигляді чисел.",
|
||||
"label": "Показати значення"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "Відрегулюйте інтервал між елементами RX/TX.",
|
||||
"label": "Вертикальний інтервал"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "Увімкнути власні кольори замість кольорів теми за замовчуванням.",
|
||||
"label": "Користувацькі кольори"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "Перевизначити шрифт за замовчуванням для значень швидкості.",
|
||||
"label": "Користувацький шрифт"
|
||||
"colorTx": {
|
||||
"desc": "Колір піктограми вивантаження (TX), коли значення перевищує поріг.",
|
||||
"label": "TX активний"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "Колір значка завантаження (RX), коли він перевищує поріг.",
|
||||
"label": "RX активний"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "Колір значка, коли трафік нижче порогового значення.",
|
||||
"label": "Неактивний"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "Колір тексту для значень швидкості.",
|
||||
"label": "Текст"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "Відступ зліва",
|
||||
"desc": "Відступ вмісту зліва."
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "Відступ справа",
|
||||
"desc": "Відступ вмісту справа."
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "Відстань між стовпцями",
|
||||
"desc": "Відстань між стовпцями у сітковому розташуванні."
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "Відстань між рядками",
|
||||
"desc": "Відстань між рядками у сітковому розташуванні (не діє у горизонтальному розташуванні)."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
{
|
||||
"actions": {
|
||||
"widget-settings": "小组件设置"
|
||||
"widget-settings": "小组件设置",
|
||||
"toggle-panel": "切换监控面板"
|
||||
},
|
||||
"panel": {
|
||||
"title": "网络活动",
|
||||
"close": "关闭",
|
||||
"download": "下载",
|
||||
"upload": "上传"
|
||||
},
|
||||
"settings": {
|
||||
"layout": {
|
||||
"label": "布局",
|
||||
"desc": "将单元格排列为一行(水平)或 2×2 网格(垂直)。",
|
||||
"horizontal": "水平",
|
||||
"vertical": "垂直"
|
||||
},
|
||||
"slots": {
|
||||
"label": "单元格分配",
|
||||
"desc": "选择每个单元格显示的内容。不可重复。例如,使用空单元格仅显示图标。"
|
||||
},
|
||||
"slot": {
|
||||
"txIcon": "TX 图标",
|
||||
"rxIcon": "RX 图标",
|
||||
"txSpeed": "TX 速度",
|
||||
"rxSpeed": "RX 速度",
|
||||
"none": "空"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "选择用于 TX/RX 指示器的图标样式。",
|
||||
"label": "图标类型"
|
||||
},
|
||||
"byteThresholdActive": {
|
||||
"desc": "设置活动阈值,单位为字节/秒 (B/s)。",
|
||||
"label": "显示活动阈值"
|
||||
"desc": "低于此值(B/s)的流量显示为非活跃。",
|
||||
"label": "活动阈值"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "设置高于阈值时的下载(RX)图标颜色。",
|
||||
"label": "RX 活跃"
|
||||
"fontSizeModifier": {
|
||||
"desc": "相对于默认值缩放文本大小。",
|
||||
"label": "字体大小"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "当流量低于阈值时,设置图标颜色。",
|
||||
"label": "RX/TX 非活跃"
|
||||
"iconSizeModifier": {
|
||||
"desc": "相对于默认值缩放图标大小。",
|
||||
"label": "图标大小"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "设置用于RX和TX值的文本颜色。",
|
||||
"label": "文本"
|
||||
},
|
||||
"colorTx": {
|
||||
"desc": "设置上传(TX)图标颜色,当高于阈值时。",
|
||||
"label": "TX 活跃"
|
||||
},
|
||||
"contentMargin": {
|
||||
"desc": "小组件内容两侧的水平内边距。",
|
||||
"label": "内容边距"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "以粗体显示速度值。",
|
||||
"label": "粗体"
|
||||
"useCustomFont": {
|
||||
"desc": "覆盖速度值的默认字体。",
|
||||
"label": "自定义字体"
|
||||
},
|
||||
"customFontFamily": {
|
||||
"desc": "为速度值选择字体。",
|
||||
@@ -37,41 +53,49 @@
|
||||
"placeholder": "选择字体",
|
||||
"searchPlaceholder": "搜索字体…"
|
||||
},
|
||||
"customFontBold": {
|
||||
"desc": "以粗体显示速度值。",
|
||||
"label": "粗体"
|
||||
},
|
||||
"customFontItalic": {
|
||||
"desc": "以斜体显示速度值。",
|
||||
"label": "斜体"
|
||||
},
|
||||
"fontSizeModifier": {
|
||||
"desc": "相对于默认值缩放文本大小。",
|
||||
"label": "字体大小调整"
|
||||
},
|
||||
"horizontalLayout": {
|
||||
"desc": "将TX和RX值并排显示,而不是堆叠。",
|
||||
"label": "水平布局"
|
||||
},
|
||||
"iconSizeModifier": {
|
||||
"desc": "相对于默认值缩放图标大小。",
|
||||
"label": "图标大小调整"
|
||||
},
|
||||
"iconType": {
|
||||
"desc": "选择用于 TX/RX 指示器的图标样式。",
|
||||
"label": "图标类型"
|
||||
},
|
||||
"showNumbers": {
|
||||
"desc": "以数字形式显示当前的 RX/TX 速度。",
|
||||
"label": "显示数值"
|
||||
},
|
||||
"spacingInbetween": {
|
||||
"desc": "调整RX/TX元素之间的间距。",
|
||||
"label": "垂直间距"
|
||||
},
|
||||
"useCustomColors": {
|
||||
"desc": "启用自定义颜色,而非主题默认颜色。",
|
||||
"label": "自定义颜色"
|
||||
},
|
||||
"useCustomFont": {
|
||||
"desc": "覆盖速度值的默认字体。",
|
||||
"label": "自定义字体"
|
||||
"colorTx": {
|
||||
"desc": "超过阈值时的上传(TX)图标颜色。",
|
||||
"label": "TX 活跃"
|
||||
},
|
||||
"colorRx": {
|
||||
"desc": "超过阈值时的下载(RX)图标颜色。",
|
||||
"label": "RX 活跃"
|
||||
},
|
||||
"colorSilent": {
|
||||
"desc": "当流量低于阈值时的图标颜色。",
|
||||
"label": "非活跃"
|
||||
},
|
||||
"colorText": {
|
||||
"desc": "速度值的文本颜色。",
|
||||
"label": "文本"
|
||||
},
|
||||
"paddingLeft": {
|
||||
"label": "左内边距",
|
||||
"desc": "内容左侧的内边距。"
|
||||
},
|
||||
"paddingRight": {
|
||||
"label": "右内边距",
|
||||
"desc": "内容右侧的内边距。"
|
||||
},
|
||||
"columnSpacing": {
|
||||
"label": "列间距",
|
||||
"desc": "网格布局中列之间的间距。"
|
||||
},
|
||||
"rowSpacing": {
|
||||
"label": "行间距",
|
||||
"desc": "网格布局中行之间的间距(在水平布局中无效)。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
{
|
||||
"id": "network-indicator",
|
||||
"name": "Network Indicator",
|
||||
"version": "1.1.0",
|
||||
"version": "2.0.0",
|
||||
"minNoctaliaVersion": "4.7.6",
|
||||
"author": "tonigineer",
|
||||
"license": "MIT",
|
||||
"repository": "https://github.com/noctalia-dev/noctalia-plugins",
|
||||
"description": "A `lively` network traffic indicator.",
|
||||
"tags": [
|
||||
"Bar",
|
||||
"Network",
|
||||
"Indicator"
|
||||
],
|
||||
"tags": ["Bar", "Network", "Indicator"],
|
||||
"entryPoints": {
|
||||
"barWidget": "BarWidget.qml",
|
||||
"panel": "Panel.qml",
|
||||
@@ -22,17 +18,20 @@
|
||||
},
|
||||
"metadata": {
|
||||
"defaultSettings": {
|
||||
"arrowType": "caret",
|
||||
"iconType": "caret",
|
||||
"byteThresholdActive": 5000,
|
||||
"fontSizeModifier": 0.75,
|
||||
"iconSizeModifier": 1.0,
|
||||
"showNumbers": true,
|
||||
"spacingInbetween": 0,
|
||||
"useCustomColors": false,
|
||||
"useCustomFont": false,
|
||||
"customFontBold": false,
|
||||
"customFontItalic": false,
|
||||
"horizontalLayout": false
|
||||
"columnSpacing": 0,
|
||||
"rowSpacing": -8,
|
||||
"paddingLeft": 5,
|
||||
"paddingRight": 0,
|
||||
"layout": "vertical",
|
||||
"slots": ["txSpeed", "txIcon", "rxSpeed", "rxIcon"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 75 KiB |
@@ -30,6 +30,10 @@
|
||||
"micFilterRegex": {
|
||||
"desc": "Regex Muster zum Herausfiltern von Mikrofon-Apps. Entsprechende Apps werden vollständig von der Erkennung ausgeschlossen.",
|
||||
"label": "Regex für Mikrofonfilter"
|
||||
},
|
||||
"camFilterRegex": {
|
||||
"desc": "Regex-Muster zum Herausfiltern von Kamera-Apps. Entsprechende Apps werden vollständig von der Erkennung ausgeschlossen.",
|
||||
"label": "Regex für Kamerafilter"
|
||||
}
|
||||
},
|
||||
"tooltip": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "privacy-indicator",
|
||||
"name": "Privacy Indicator",
|
||||
"version": "1.2.12",
|
||||
"version": "1.2.13",
|
||||
"minNoctaliaVersion": "3.6.0",
|
||||
"author": "Noctalia Team",
|
||||
"official": true,
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
"showIcon": true,
|
||||
"showTextTooltip": true,
|
||||
"textCollapse": "",
|
||||
"textCommand": "zfs list | grep zroot/ROOT/void | cut -d ' ' -f 15",
|
||||
"textCommand": "zfs list | grep zroot/ROOT/void | cut -d ' ' -f 5",
|
||||
"textIntervalMs": 20000,
|
||||
"textStream": false,
|
||||
"wheelDownExec": "",
|
||||
@@ -610,8 +610,9 @@
|
||||
"org.keepassxc.KeePassXC",
|
||||
"Alacritty",
|
||||
"Firefox",
|
||||
"com.discordapp.Discord",
|
||||
"element-desktop"
|
||||
"im.riot.Riot",
|
||||
"in.cinny.Cinny",
|
||||
"com.discordapp.Discord"
|
||||
],
|
||||
"pinnedStatic": true,
|
||||
"position": "top",
|
||||
|
||||
@@ -16,3 +16,7 @@ alias sedit="sudoedit"
|
||||
alias flat='flatpak --user'
|
||||
|
||||
eval $(ssh-agent -s)>/dev/null
|
||||
|
||||
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
|
||||
export PATH="$PATH:$HOME/.rvm/bin"
|
||||
source $HOME/.rvm/scripts/rvm
|
||||
|
||||
Reference in New Issue
Block a user