diff --git a/quickshell/Common/SettingsData.qml b/quickshell/Common/SettingsData.qml index 9cc7f4c31..b2892ad74 100644 --- a/quickshell/Common/SettingsData.qml +++ b/quickshell/Common/SettingsData.qml @@ -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 diff --git a/quickshell/Common/settings/Lists.qml b/quickshell/Common/settings/Lists.qml index c3c403174..709dbfbd0 100644 --- a/quickshell/Common/settings/Lists.qml +++ b/quickshell/Common/settings/Lists.qml @@ -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) diff --git a/quickshell/Common/settings/SettingsSpec.js b/quickshell/Common/settings/SettingsSpec.js index eee161b54..b55752a2a 100644 --- a/quickshell/Common/settings/SettingsSpec.js +++ b/quickshell/Common/settings/SettingsSpec.js @@ -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 }, diff --git a/quickshell/Modules/DankBar/Widgets/Battery.qml b/quickshell/Modules/DankBar/Widgets/Battery.qml index 2cb786553..da5532965 100644 --- a/quickshell/Modules/DankBar/Widgets/Battery.qml +++ b/quickshell/Modules/DankBar/Widgets/Battery.qml @@ -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 !== "" } } } diff --git a/quickshell/Modules/Settings/WidgetsTab.qml b/quickshell/Modules/Settings/WidgetsTab.qml index 9c037453b..d7b3ad579 100644 --- a/quickshell/Modules/Settings/WidgetsTab.qml +++ b/quickshell/Modules/Settings/WidgetsTab.qml @@ -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) diff --git a/quickshell/translations/term_freeze.json b/quickshell/translations/term_freeze.json index 72e40e3ff..3b5459c6d 100644 --- a/quickshell/translations/term_freeze.json +++ b/quickshell/translations/term_freeze.json @@ -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",