1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-02 03:28:28 -04:00

feat(Battery): add horizontal battery pill style option in widget settings

This commit is contained in:
purian23
2026-07-04 18:41:52 -04:00
parent ea0c235d6e
commit c0e7c1b2b4
6 changed files with 287 additions and 111 deletions
+2
View File
@@ -760,6 +760,8 @@ Singleton {
property bool showBatteryPercentOnlyOnBattery: false
property bool showBatteryTime: false
property bool showBatteryTimeOnlyOnBattery: false
property bool batteryPillStyle: false
property bool batteryPillPercentSign: false
property bool lockBeforeSuspend: false
property bool loginctlLockIntegration: true
property bool fadeToLockEnabled: true
+6
View File
@@ -32,6 +32,8 @@ Singleton {
showBatteryPercentOnlyOnBattery: false,
showBatteryTime: false,
showBatteryTimeOnlyOnBattery: false,
batteryPillStyle: false,
batteryPillPercentSign: false,
showPrinterIcon: false,
showScreenSharingIcon: true
};
@@ -95,6 +97,10 @@ Singleton {
item.showBatteryTime = order[i].showBatteryTime;
if (isObj && order[i].showBatteryTimeOnlyOnBattery !== undefined)
item.showBatteryTimeOnlyOnBattery = order[i].showBatteryTimeOnlyOnBattery;
if (isObj && order[i].batteryPillStyle !== undefined)
item.batteryPillStyle = order[i].batteryPillStyle;
if (isObj && order[i].batteryPillPercentSign !== undefined)
item.batteryPillPercentSign = order[i].batteryPillPercentSign;
if (isObj && order[i].showPrinterIcon !== undefined)
item.showPrinterIcon = order[i].showPrinterIcon;
if (isObj && order[i].showScreenSharingIcon !== undefined)
@@ -102,6 +102,8 @@ var SPEC = {
showBatteryPercentOnlyOnBattery: { def: false },
showBatteryTime: { def: false },
showBatteryTimeOnlyOnBattery: { def: false },
batteryPillStyle: { def: false },
batteryPillPercentSign: { def: false },
showControlCenterButton: { def: true },
showCapsLockIndicator: { def: true },
+269 -3
View File
@@ -1,4 +1,5 @@
import QtQuick
import QtQuick.Shapes
import Quickshell.Services.UPower
import qs.Common
import qs.Modules.Plugins
@@ -19,6 +20,8 @@ BasePill {
}
readonly property bool showTime: widgetData?.showBatteryTime !== undefined ? widgetData.showBatteryTime : SettingsData.showBatteryTime
readonly property bool showTimeOnlyOnBattery: widgetData?.showBatteryTimeOnlyOnBattery !== undefined ? widgetData.showBatteryTimeOnlyOnBattery : SettingsData.showBatteryTimeOnlyOnBattery
readonly property bool pillStyle: widgetData?.batteryPillStyle !== undefined ? widgetData.batteryPillStyle : SettingsData.batteryPillStyle
readonly property bool pillPercentSign: widgetData?.batteryPillPercentSign !== undefined ? widgetData.batteryPillPercentSign : SettingsData.batteryPillPercentSign
readonly property string batteryTimeText: {
if (showTimeOnlyOnBattery && BatteryService.isPluggedIn) {
@@ -29,7 +32,8 @@ BasePill {
}
readonly property string verticalBatteryTimeText: {
if (!batteryTimeText) return "";
if (!batteryTimeText)
return "";
// Parse batteryTimeText, e.g., "2h 41m" or "41m"
let hours = 0;
@@ -64,6 +68,14 @@ BasePill {
return "";
}
// Percent always stays inside the pill; only the time shows beside it.
readonly property string horizontalSideText: {
if (!pillStyle) {
return horizontalDisplayText;
}
return (showTime && batteryTimeText) ? batteryTimeText : "";
}
readonly property string verticalDisplayText: {
if (showPercent && showTime && batteryTimeText) {
return `${BatteryService.batteryLevel}\n${verticalBatteryTimeText}`;
@@ -98,6 +110,234 @@ BasePill {
visible: true
// AOSP's battery bolt glyph (config_batterymeterBoltPath), solid-filled and
// cropped tight to its own ink so it reads bold at normal icon size instead
// of needing to be inflated past the bar's calibrated icon height.
component OfficialBolt: Shape {
id: officialBolt
property color fillColor: Theme.surfaceText
property real size: 16
implicitWidth: Math.round(officialBolt.size * (6 / 13))
implicitHeight: Math.round(officialBolt.size)
preferredRendererType: Shape.CurveRenderer
ShapePath {
fillColor: officialBolt.fillColor
strokeColor: "transparent"
startX: officialBolt.width * (1 / 3)
startY: officialBolt.height
PathLine {
x: officialBolt.width * (1 / 3)
y: officialBolt.height * (7.5 / 13)
}
PathLine {
x: 0
y: officialBolt.height * (7.5 / 13)
}
PathLine {
x: officialBolt.width * (2 / 3)
y: 0
}
PathLine {
x: officialBolt.width * (2 / 3)
y: officialBolt.height * (5.5 / 13)
}
PathLine {
x: officialBolt.width
y: officialBolt.height * (5.5 / 13)
}
PathLine {
x: officialBolt.width * (1 / 3)
y: officialBolt.height
}
}
}
// Material 3 style horizontal/vertical battery pill with the level inside
component BatteryPill: Item {
id: pill
property real thickness: 18
property bool vertical: false
property bool showNumber: true
property bool showPercentSign: false
readonly property int signSize: Math.max(1, Math.round(pill.glyphSize * 0.72))
readonly property real bodyLength: Math.round(pill.thickness * 1.95)
readonly property real level: Math.max(0, Math.min(100, BatteryService.batteryLevel))
readonly property bool charging: BatteryService.isCharging
readonly property bool lowState: BatteryService.isLowBattery && !BatteryService.isCharging
readonly property color fillColor: {
if (!BatteryService.batteryAvailable)
return Theme.surfaceVariant;
if (pill.lowState)
return Theme.error;
return Theme.primary;
}
readonly property color onFillColor: {
const c = pill.fillColor;
const lum = 0.299 * c.r + 0.587 * c.g + 0.114 * c.b;
return lum > 0.5 ? Qt.rgba(0, 0, 0, 0.9) : Qt.rgba(1, 1, 1, 0.95);
}
readonly property string numberText: Math.round(pill.level).toString()
readonly property int glyphSize: Math.round(pill.thickness * 0.58)
readonly property int boltSize: Math.round(pill.thickness * 0.72)
readonly property real nubBreadth: Math.round(pill.thickness * 0.16)
readonly property real nubSpan: Math.round(pill.thickness * 0.46)
implicitWidth: pill.vertical ? pill.thickness : Math.max(pill.bodyLength, (!pill.vertical && pill.showNumber) ? numRowTrack.width + pill.thickness * 0.7 : 0) + pill.nubBreadth
implicitHeight: pill.vertical ? pill.bodyLength + pill.nubBreadth : pill.thickness
Rectangle {
id: body
x: 0
y: pill.vertical ? pill.nubBreadth : 0
width: pill.vertical ? parent.width : parent.width - pill.nubBreadth
height: pill.vertical ? parent.height - pill.nubBreadth : parent.height
radius: Math.round(Math.min(width, height) * 0.34)
color: Theme.withAlpha(Theme.surfaceVariant, 0.9)
Rectangle {
id: fill
radius: body.radius
color: pill.fillColor
anchors.left: parent.left
anchors.bottom: parent.bottom
width: pill.vertical ? parent.width : Math.round(parent.width * pill.level / 100)
height: pill.vertical ? Math.round(parent.height * pill.level / 100) : parent.height
Behavior on width {
enabled: !pill.vertical
NumberAnimation {
duration: Theme.mediumDuration
easing.type: Theme.standardEasing
}
}
Behavior on height {
enabled: pill.vertical
NumberAnimation {
duration: Theme.mediumDuration
easing.type: Theme.standardEasing
}
}
}
// Tinted for the empty track. Horizontal always shows the number;
// vertical swaps in a centered bolt while charging.
Item {
id: glyphTrack
anchors.fill: parent
visible: BatteryService.batteryAvailable && ((pill.charging && pill.vertical) || (!pill.vertical && pill.showNumber))
Row {
id: numRowTrack
visible: !pill.vertical && pill.showNumber
anchors.centerIn: parent
spacing: 1
StyledText {
id: numTrack
text: pill.numberText
color: Theme.surfaceText
font.pixelSize: pill.glyphSize
font.weight: Font.Bold
anchors.verticalCenter: parent.verticalCenter
}
StyledText {
text: "%"
visible: pill.showPercentSign
color: Theme.surfaceText
font.pixelSize: pill.signSize
font.weight: Font.Bold
anchors.baseline: numTrack.baseline
}
}
DankIcon {
name: "bolt"
size: pill.boltSize
color: Theme.surfaceText
visible: pill.charging && pill.vertical
anchors.centerIn: parent
}
}
// Same glyphs tinted for the fill, clipped so they stay legible over it.
Item {
visible: glyphTrack.visible
x: fill.x
y: fill.y
width: fill.width
height: fill.height
clip: true
Item {
x: -fill.x
y: -fill.y
width: body.width
height: body.height
Row {
visible: !pill.vertical && pill.showNumber
anchors.centerIn: parent
spacing: 1
StyledText {
id: numFill
text: pill.numberText
color: pill.onFillColor
font.pixelSize: pill.glyphSize
font.weight: Font.Bold
anchors.verticalCenter: parent.verticalCenter
}
StyledText {
text: "%"
visible: pill.showPercentSign
color: pill.onFillColor
font.pixelSize: pill.signSize
font.weight: Font.Bold
anchors.baseline: numFill.baseline
}
}
DankIcon {
name: "bolt"
size: pill.boltSize
color: pill.onFillColor
visible: pill.charging && pill.vertical
anchors.centerIn: parent
}
}
}
}
// Battery terminal nub, colored to match the outline/track so it
// reads as part of the same frame rather than a fill segment.
Rectangle {
visible: !pill.vertical
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
width: pill.nubBreadth
height: pill.nubSpan
radius: Math.round(pill.nubBreadth * 0.35)
color: Theme.withAlpha(Theme.surfaceVariant, 0.9)
}
Rectangle {
visible: pill.vertical
anchors.top: parent.top
anchors.horizontalCenter: parent.horizontalCenter
width: pill.nubSpan
height: pill.nubBreadth
radius: Math.round(pill.nubBreadth * 0.35)
color: Theme.withAlpha(Theme.surfaceVariant, 0.9)
}
}
content: Component {
Item {
implicitWidth: battery.isVerticalOrientation ? (battery.widgetThickness - battery.horizontalPadding * 2) : batteryContent.implicitWidth
@@ -111,6 +351,7 @@ BasePill {
DankIcon {
name: BatteryService.getBatteryIcon()
visible: !battery.pillStyle
size: Theme.barIconSize(battery.barThickness, undefined, battery.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale)
color: {
if (!BatteryService.batteryAvailable) {
@@ -130,6 +371,14 @@ BasePill {
anchors.horizontalCenter: parent.horizontalCenter
}
BatteryPill {
visible: battery.pillStyle
vertical: true
showNumber: false
thickness: Theme.barIconSize(battery.barThickness, undefined, battery.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale)
anchors.horizontalCenter: parent.horizontalCenter
}
StyledText {
text: battery.verticalDisplayText
font.pixelSize: Theme.barTextSize(battery.barThickness, battery.barConfig?.fontScale, battery.barConfig?.maximizeWidgetText)
@@ -148,6 +397,7 @@ BasePill {
DankIcon {
name: BatteryService.getBatteryIcon()
visible: !battery.pillStyle
size: Theme.barIconSize(battery.barThickness, -4, battery.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale)
color: {
if (!BatteryService.batteryAvailable) {
@@ -167,12 +417,28 @@ BasePill {
anchors.verticalCenter: parent.verticalCenter
}
BatteryPill {
visible: battery.pillStyle
vertical: false
showNumber: battery.showPercent
showPercentSign: battery.pillPercentSign
thickness: Theme.barIconSize(battery.barThickness, -4, battery.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale)
anchors.verticalCenter: parent.verticalCenter
}
OfficialBolt {
visible: battery.pillStyle && BatteryService.batteryAvailable && BatteryService.isCharging
fillColor: Theme.primary
size: Math.round(Theme.barIconSize(battery.barThickness, -4, battery.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale) * 0.85)
anchors.verticalCenter: parent.verticalCenter
}
StyledText {
text: battery.horizontalDisplayText
text: battery.horizontalSideText
font.pixelSize: Theme.barTextSize(battery.barThickness, battery.barConfig?.fontScale, battery.barConfig?.maximizeWidgetText)
color: Theme.widgetTextColor
anchors.verticalCenter: parent.verticalCenter
visible: BatteryService.batteryAvailable && battery.horizontalDisplayText !== ""
visible: BatteryService.batteryAvailable && battery.horizontalSideText !== ""
}
}
}
+7 -1
View File
@@ -485,6 +485,8 @@ Item {
widgetObj.showBatteryPercentOnlyOnBattery = SettingsData.showBatteryPercentOnlyOnBattery;
widgetObj.showBatteryTime = SettingsData.showBatteryTime;
widgetObj.showBatteryTimeOnlyOnBattery = SettingsData.showBatteryTimeOnlyOnBattery;
widgetObj.batteryPillStyle = SettingsData.batteryPillStyle;
widgetObj.batteryPillPercentSign = SettingsData.batteryPillPercentSign;
}
if (widgetId === "runningApps") {
widgetObj.runningAppsCompactMode = SettingsData.runningAppsCompactMode;
@@ -524,7 +526,7 @@ Item {
"id": widget.id,
"enabled": widget.enabled
};
var keys = ["size", "selectedGpuIndex", "pciId", "mountPath", "diskUsageMode", "minimumWidth", "showSwap", "showInGb", "mediaSize", "clockCompactMode", "focusedWindowSize", "focusedWindowCompactMode", "runningAppsCompactMode", "keyboardLayoutNameCompactMode", "keyboardLayoutNameShowIcon", "runningAppsGroupByApp", "runningAppsCurrentWorkspace", "runningAppsCurrentMonitor", "showNetworkIcon", "showBluetoothIcon", "showAudioIcon", "showAudioPercent", "showVpnIcon", "showBrightnessIcon", "showBrightnessPercent", "showMicIcon", "showMicPercent", "showBatteryIcon", "showBatteryPercent", "showBatteryPercentOnlyOnBattery", "showBatteryTime", "showBatteryTimeOnlyOnBattery", "showPrinterIcon", "showScreenSharingIcon", "showIdleInhibitorIcon", "showDoNotDisturbIcon", "controlCenterGroupOrder", "barMaxVisibleApps", "barMaxVisibleRunningApps", "barShowOverflowBadge", "trayUseInlineExpansion", "trayPopupSingleLine", "trayAutoOverflow", "trayMaxVisibleItems", "hideWhenIdle"];
var keys = ["size", "selectedGpuIndex", "pciId", "mountPath", "diskUsageMode", "minimumWidth", "showSwap", "showInGb", "mediaSize", "clockCompactMode", "focusedWindowSize", "focusedWindowCompactMode", "runningAppsCompactMode", "keyboardLayoutNameCompactMode", "keyboardLayoutNameShowIcon", "runningAppsGroupByApp", "runningAppsCurrentWorkspace", "runningAppsCurrentMonitor", "showNetworkIcon", "showBluetoothIcon", "showAudioIcon", "showAudioPercent", "showVpnIcon", "showBrightnessIcon", "showBrightnessPercent", "showMicIcon", "showMicPercent", "showBatteryIcon", "showBatteryPercent", "showBatteryPercentOnlyOnBattery", "showBatteryTime", "showBatteryTimeOnlyOnBattery", "batteryPillStyle", "batteryPillPercentSign", "showPrinterIcon", "showScreenSharingIcon", "showIdleInhibitorIcon", "showDoNotDisturbIcon", "controlCenterGroupOrder", "barMaxVisibleApps", "barMaxVisibleRunningApps", "barShowOverflowBadge", "trayUseInlineExpansion", "trayPopupSingleLine", "trayAutoOverflow", "trayMaxVisibleItems", "hideWhenIdle"];
for (var i = 0; i < keys.length; i++) {
if (widget[keys[i]] !== undefined)
result[keys[i]] = widget[keys[i]];
@@ -1023,6 +1025,10 @@ Item {
item.showBatteryTime = widget.showBatteryTime;
if (widget.showBatteryTimeOnlyOnBattery !== undefined)
item.showBatteryTimeOnlyOnBattery = widget.showBatteryTimeOnlyOnBattery;
if (widget.batteryPillStyle !== undefined)
item.batteryPillStyle = widget.batteryPillStyle;
if (widget.batteryPillPercentSign !== undefined)
item.batteryPillPercentSign = widget.batteryPillPercentSign;
if (widget.showPrinterIcon !== undefined)
item.showPrinterIcon = widget.showPrinterIcon;
if (widget.showScreenSharingIcon !== undefined)
+1 -107
View File
@@ -112,8 +112,6 @@
"AUR helpers are interactive — see the terminal window for prompts. This popout will return to idle when the upgrade exits.",
"Aborted",
"About",
"Accent Color",
"Accept",
"Accept Jobs",
"Accepting",
"Access clipboard history",
@@ -127,7 +125,6 @@
"Activate",
"Activate Greeter",
"Activate the DMS greeter? A terminal will open for sudo authentication. Run Sync after activation to apply your settings.",
"Activation",
"Active",
"Active Color",
"Active VPN",
@@ -182,7 +179,6 @@
"Also group repeated application icons on the active workspace",
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close",
"Alternative (OR)",
"Always Active",
"Always Show Percentage",
"Always blur against the wallpaper, even with Xray off",
"Always hide the dock and reveal it when hovering near the dock area",
@@ -321,7 +317,6 @@
"Available Plugins",
"Available Screens (%1)",
"Available Updates (%1)",
"Available in Detailed and Forecast view modes",
"Available.",
"BSSID",
"Back",
@@ -411,7 +406,6 @@
"Brightness Value",
"Brightness control not available",
"Browse",
"Browse Files",
"Browse Plugins",
"Browse Themes",
"Browse and set wallpapers",
@@ -477,7 +471,6 @@
"Choose a color",
"Choose a power profile",
"Choose colors from palette",
"Choose how the weather widget is displayed",
"Choose how this bar resolves shadow direction",
"Choose how to be notified about critical battery alerts.",
"Choose how to be notified about low battery alerts.",
@@ -495,7 +488,6 @@
"Choose which action buttons appear on clipboard entries",
"Choose which displays show this widget",
"Choose which monitors show the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.",
"Chroma Style",
"Cipher",
"Circle",
"Class regex",
@@ -523,7 +515,6 @@
"Clipboard History",
"Clipboard Manager",
"Clipboard Saved",
"Clipboard sent",
"Clipboard works but nothing saved to disk",
"Clock",
"Clock Style",
@@ -545,8 +536,6 @@
"Color shown for areas not covered by wallpaper",
"Color temperature for day time",
"Color temperature for night mode",
"Color theme for syntax highlighting.",
"Color theme for syntax highlighting. %1 themes available.",
"Color theme from DMS registry",
"Colorful",
"Colorful mix of bright contrasting accents.",
@@ -603,7 +592,6 @@
"Connection failed",
"Contains",
"Content",
"Content copied",
"Contrast",
"Contributor",
"Control Center",
@@ -629,13 +617,9 @@
"Convenience options for the login screen. Sync to apply.",
"Convert to DMS",
"Cooldown",
"Copied GIF",
"Copied MP4",
"Copied WebP",
"Copied to clipboard",
"Copied!",
"Copy",
"Copy Content",
"Copy Full Command",
"Copy HTML",
"Copy Name",
@@ -789,7 +773,6 @@
"Desktop Widget",
"Desktop Widgets",
"Desktop background images",
"Detailed",
"Details for \"%1\"",
"Detected backends: %1",
"Development",
@@ -798,7 +781,6 @@
"Device list scroll volume",
"Device names updated",
"Device paired",
"Device unpaired",
"Diff",
"Digital",
"Direction Source",
@@ -838,7 +820,6 @@
"Display brightness control",
"Display configuration is not available. WLR output management protocol not supported.",
"Display currently focused application title",
"Display hourly weather predictions",
"Display line numbers in editor",
"Display name for this entry",
"Display only workspaces that contain windows",
@@ -946,7 +927,6 @@
"Enter 6-digit passkey",
"Enter PIN",
"Enter PIN for ",
"Enter URI or text to share",
"Enter a new name for session \"%1\"",
"Enter a new name for this workspace",
"Enter command or script path",
@@ -995,7 +975,6 @@
"Fade",
"Fade to lock screen",
"Fade to monitor off",
"Failed to accept pairing",
"Failed to activate configuration",
"Failed to add binds include",
"Failed to add printer to class",
@@ -1003,7 +982,6 @@
"Failed to apply Qt colors",
"Failed to apply charge limit to system",
"Failed to apply profile",
"Failed to browse device",
"Failed to cancel all jobs",
"Failed to cancel selected job",
"Failed to check pin limit",
@@ -1029,7 +1007,6 @@
"Failed to generate systemd override",
"Failed to hold job",
"Failed to import VPN",
"Failed to launch SMS app",
"Failed to load VPN config",
"Failed to load clipboard configuration.",
"Failed to move job",
@@ -1041,7 +1018,6 @@
"Failed to pin entry",
"Failed to print test page",
"Failed to read theme file: %1",
"Failed to reject pairing",
"Failed to reload plugin: %1",
"Failed to remove QR code at %1: %2",
"Failed to remove device",
@@ -1050,17 +1026,12 @@
"Failed to restart audio system",
"Failed to restart job",
"Failed to resume printer",
"Failed to ring device",
"Failed to run 'dms greeter status'. Ensure DMS is installed and dms is in PATH.",
"Failed to save VPN credentials",
"Failed to save audio config",
"Failed to save clipboard setting",
"Failed to save keybind",
"Failed to save profile",
"Failed to send SMS",
"Failed to send clipboard",
"Failed to send file",
"Failed to send ping",
"Failed to set brightness",
"Failed to set night mode location",
"Failed to set night mode schedule",
@@ -1068,7 +1039,6 @@
"Failed to set power profile",
"Failed to set profile image",
"Failed to set profile image: %1",
"Failed to share",
"Failed to start connection to %1",
"Failed to unpin entry",
"Failed to update %1: %2",
@@ -1083,7 +1053,6 @@
"Failed to write temp file for validation",
"Failed: %1",
"Features",
"Feels",
"Feels Like",
"Feels Like %1°",
"Fidelity",
@@ -1094,7 +1063,6 @@
"File Manager",
"File changed on disk",
"File manager used to open the trash. Pick \"custom\" to enter your own command.",
"File received from",
"File search requires dsearch\nInstall from github.com/AvengeMedia/danksearch",
"File search unavailable",
"Files",
@@ -1165,8 +1133,6 @@
"Force RGBX",
"Force Wide Color",
"Force terminal applications to always use dark color schemes",
"Forecast",
"Forecast Days",
"Forecast Not Available",
"Forecast and conditions",
"Foreground Layers",
@@ -1177,7 +1143,6 @@
"Forget Network",
"Forgot network %1",
"Format Legend",
"Forward 10s",
"Frame",
"Frame Blur",
"Frame Blur follows Background Blur in Theme & Colors",
@@ -1315,7 +1280,6 @@
"Hotkey overlay title (optional)",
"Hour",
"Hourly",
"Hourly Forecast Count",
"Hover Popouts",
"How often the server polls for new updates.",
"How often to change wallpaper",
@@ -1428,10 +1392,7 @@
"Keeping Awake",
"Kernel",
"Key",
"Keybind Sources",
"Keybinds",
"Keybinds Search Settings",
"Keybinds shown alongside regular search results",
"Keyboard Layout Name",
"Keyboard Shortcuts",
"Keys",
@@ -1487,7 +1448,6 @@
"Load Average",
"Loading codecs...",
"Loading keybinds...",
"Loading trending...",
"Loading...",
"Local",
"Local Weather",
@@ -1525,7 +1485,6 @@
"MTU",
"Mail",
"Make admin",
"Make sure KDE Connect or Valent is running on your other devices",
"Make the bar background fully transparent",
"Manage and configure plugins for extending DMS functionality",
"Manage up to 4 independent bar configurations. Each bar has its own position, widgets, styling, and display assignment.",
@@ -1554,6 +1513,7 @@
"Match Conditions",
"Match Criteria",
"Material",
"Material Battery Style",
"Material Colors",
"Material Design inspired color themes",
"Material colors generated from wallpaper",
@@ -1606,7 +1566,6 @@
"Memory usage indicator",
"Merge indexed file results into the All tab (requires dsearch).",
"Merge indexed folder results into the All tab (requires dsearch).",
"Message",
"Message Content",
"Microphone",
"Microphone Mute",
@@ -1676,7 +1635,6 @@
"Network Name (SSID)",
"Network Speed Monitor",
"Network Status",
"Network Type",
"Network download and upload speed display",
"Network not found",
"Neutral",
@@ -1721,7 +1679,6 @@
"No Shadow",
"No VPN profiles",
"No Weather",
"No Weather Data",
"No Weather Data Available",
"No action",
"No active %1 sessions",
@@ -1754,7 +1711,6 @@
"No folders found",
"No hidden apps.",
"No human user accounts found.",
"No images found",
"No info items",
"No information available",
"No input device",
@@ -1820,7 +1776,6 @@
"Not connected",
"Not detected",
"Not listed?",
"Not paired",
"Not set",
"Notepad",
"Notepad Settings",
@@ -1850,7 +1805,6 @@
"Occupied Color",
"Off",
"Office",
"Offline",
"Offline Report",
"Older",
"On",
@@ -1867,7 +1821,6 @@
"Opacity",
"Opaque",
"Open",
"Open App",
"Open Delay",
"Open Dir",
"Open Frame",
@@ -1879,14 +1832,11 @@
"Open a terminal and run a custom command instead of the in-shell upgrade flow.",
"Open as window",
"Open folder",
"Open in Browser",
"Open in terminal",
"Open search bar to find text",
"Open the launcher by hovering the emerge edge (when free of bar and dock)",
"Open widget popouts by hovering over the bar. Moving to another widget switches the popout.",
"Open with...",
"Opening SMS app",
"Opening file browser",
"Opening terminal: ",
"Opens a picker of other active sessions on this seat",
"Opens image files",
@@ -1936,11 +1886,7 @@
"Pair",
"Pair Bluetooth Device",
"Paired",
"Pairing",
"Pairing failed",
"Pairing request from",
"Pairing request sent",
"Pairing requested",
"Pairing...",
"Partly Cloudy",
"Passkey:",
@@ -1969,8 +1915,6 @@
"Permanently delete %1 item(s)? This cannot be undone.",
"Permission denied to set profile image.",
"Personalization",
"Phone Connect Not Available",
"Phone number",
"Pick a different file manager in Settings → Dock → Trash.",
"Pick a different random video each time from the same folder",
"Pick a terminal in Settings → Launcher (or set $TERMINAL).",
@@ -1978,8 +1922,6 @@
"Pictures",
"Pin",
"Pin to Dock",
"Ping",
"Ping sent to",
"Pinned",
"Pinned and running apps with drag-and-drop",
"Pixelate",
@@ -1988,7 +1930,6 @@
"Place plugins in %1",
"Place the bar on the Wayland overlay layer",
"Place the dock on the Wayland overlay layer",
"Play",
"Play a video when the screen locks.",
"Play sound after logging in",
"Play sound when new notification arrives",
@@ -2048,7 +1989,6 @@
"Power source",
"Pre-fill the last successful username on the greeter",
"Pre-select the last used session on the greeter",
"Precip",
"Precipitation",
"Precipitation Chance",
"Preference",
@@ -2062,7 +2002,6 @@
"Prevent specific applications from displaying in the media controllers (e.g., browser audio streams, background tools). Matches player identity or desktop file name case-insensitively.",
"Preview",
"Preview: %1",
"Previous",
"Previous page",
"Primary",
"Primary Container",
@@ -2125,7 +2064,6 @@
"Reboot",
"Recent",
"Recent Colors",
"Recent Images",
"Recently Used Apps",
"Recommended available",
"Refresh",
@@ -2133,7 +2071,6 @@
"Refreshing...",
"Regex",
"Regular",
"Reject",
"Reject Jobs",
"Related: %1",
"Release",
@@ -2170,7 +2107,6 @@
"Repeat",
"Replacement",
"Report",
"Request Pairing",
"Require holding button/key to confirm power off, restart, suspend, hibernate and logout",
"Required plugin: ",
"Requires %1",
@@ -2203,7 +2139,6 @@
"Reverse Scrolling Direction",
"Reverse workspace switch direction when scrolling over the bar",
"Revert",
"Rewind 10s",
"Right",
"Right Center",
"Right Section",
@@ -2211,8 +2146,6 @@
"Right-click and drag anywhere on the widget",
"Right-click and drag the bottom-right corner",
"Right-click bar widget to cycle",
"Ring",
"Ringing",
"Ripple Effects",
"Root Filesystem",
"Rounded corners for windows",
@@ -2232,8 +2165,6 @@
"Running in terminal",
"SDR Brightness",
"SDR Saturation",
"SMS",
"SMS sent successfully",
"Saturation",
"Save",
"Save Notepad File",
@@ -2276,12 +2207,10 @@
"Search App Actions",
"Search Options",
"Search applications...",
"Search by key combo, description, or action name.\n\nDefault action copies the keybind to clipboard.\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.",
"Search devices...",
"Search for a location...",
"Search installed plugins...",
"Search keybinds...",
"Search keyboard shortcuts from your compositor and applications",
"Search plugins...",
"Search processes...",
"Search sessions...",
@@ -2289,7 +2218,6 @@
"Search widgets...",
"Search...",
"Searching",
"Searching...",
"Second Factor (AND)",
"Secondary",
"Secondary Container",
@@ -2304,7 +2232,6 @@
"Select Bar",
"Select Custom Theme",
"Select Dock Launcher Logo",
"Select File to Send",
"Select Launcher Logo",
"Select Profile Image",
"Select Video or Folder",
@@ -2317,7 +2244,6 @@
"Select a window...",
"Select an active session to switch to. The current session stays running in the background.",
"Select an image file...",
"Select at least one provider",
"Select background image",
"Select device",
"Select device...",
@@ -2332,14 +2258,9 @@
"Select the font family for UI text",
"Select the palette algorithm used for wallpaper-based colors",
"Select user...",
"Select which keybind providers to include",
"Select which transitions to include in randomization",
"Select...",
"Selected image file not found.",
"Send",
"Send Clipboard",
"Send SMS",
"Sending",
"Separate",
"Separate Appearance for Unfocused Display(s)",
"Separate Light & Dark Themes",
@@ -2374,9 +2295,7 @@
"Shadow elevation on modals and dialogs",
"Shadow elevation on popouts, OSDs, and dropdowns",
"Shadows",
"Share",
"Share Gamma Control Settings",
"Shared",
"Shell",
"Shift+Enter to copy",
"Shift+Enter to paste",
@@ -2396,20 +2315,15 @@
"Show Date",
"Show Disk",
"Show Dock",
"Show Feels Like Temperature",
"Show Flatpak, Snap, AppImage, or Nix badge icons on launcher items.",
"Show Footer",
"Show Forecast",
"Show GPU Temperature",
"Show Header",
"Show Hibernate",
"Show Hour Numbers",
"Show Hourly Forecast",
"Show Humidity",
"Show Icon",
"Show Launcher Button",
"Show Line Numbers",
"Show Location",
"Show Lock",
"Show Log Out",
"Show Material Design ripple animations on interactive elements",
@@ -2427,15 +2341,12 @@
"Show Percentage",
"Show Power Actions",
"Show Power Off",
"Show Precipitation Probability",
"Show Pressure",
"Show Profile Image",
"Show Reboot",
"Show Remaining Time",
"Show Restart DMS",
"Show Saved Items",
"Show Seconds",
"Show Sunrise/Sunset",
"Show Suspend",
"Show Swap",
"Show Switch User",
@@ -2444,10 +2355,8 @@
"Show System Time",
"Show Top Processes",
"Show Trash in Dock",
"Show Weather Condition",
"Show Week Number",
"Show Welcome",
"Show Wind Speed",
"Show Workspace Apps",
"Show a bar that drains as the popup's auto-dismiss timer runs",
"Show a notification when battery reaches the charge limit.",
@@ -2497,7 +2406,6 @@
"Shrink the media widget to fit shorter song titles while still respecting the configured maximum size",
"Shutdown",
"Signal",
"Signal Strength",
"Signal:",
"Silence for a while",
"Silence notifications",
@@ -2541,7 +2449,6 @@
"Standard",
"Standard: Classic Material Design 3 — panels rise from below with a subtle scale. The DMS default.",
"Start",
"Start KDE Connect or Valent to use this plugin",
"Start typing your notes here...",
"State",
"Status",
@@ -2732,10 +2639,7 @@
"Trash",
"Trash command failed (exit %1)",
"Tray Icon Fix",
"Trending GIFs",
"Trending Stickers",
"Trigger",
"Trigger Prefix",
"Trigger: %1",
"Trust",
"Try a different search",
@@ -2749,11 +2653,9 @@
"Type",
"Type at least 2 characters",
"Type at least 2 characters to search files.",
"Type this prefix to search keybinds",
"Type to search files",
"Typography",
"Typography & Motion",
"URI",
"Unavailable",
"Uncategorized",
"Unfocused Color",
@@ -2782,8 +2684,6 @@
"Unmute",
"Unmute popups for %1",
"Unnamed Rule",
"Unpair",
"Unpair failed",
"Unpin",
"Unpin from Dock",
"Unsaved Changes",
@@ -2807,7 +2707,6 @@
"Uptime:",
"Urgent",
"Urgent Color",
"Usage Tips",
"Use 24-hour time format instead of 12-hour AM/PM",
"Use Custom Command",
"Use Grid Layout",
@@ -2842,9 +2741,7 @@
"Use the extended surface for launcher content",
"Use the overlay layer when opening the launcher",
"Use the same position and size on all displays",
"Use trigger prefix to activate",
"Used for xdg-terminal-exec",
"Used when accent color is set to Custom",
"User",
"User Window Rules (%1)",
"User already exists",
@@ -2878,7 +2775,6 @@
"VRR Fullscreen Only",
"VRR On-Demand",
"Variable Refresh Rate",
"Verification",
"Version",
"Vertical Deck",
"Vertical Grid",
@@ -2891,7 +2787,6 @@
"Video Player",
"Video Screensaver",
"Videos",
"View Mode",
"Visibility",
"Visible Entry Actions",
"Visual Effects",
@@ -3003,7 +2898,6 @@
"days",
"deprecated",
"detached",
"device",
"dgop not available",
"direct",
"discuss",