diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index 7de79d5df..a6a4ac0a7 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -469,6 +469,7 @@ "paired": "Paired", "pairing": "Pairing...", "panels": "Panels", + "performance": "Performance", "password": "Password", "pause": "Pause", "pin": "Pin", @@ -1601,6 +1602,14 @@ "show-keybinds-description": "Display keybind hints on session options.", "show-keybinds-label": "Show keybinds" }, + "system": { + "noctalia-performance-desc": "Configure what stays enabled while Noctalia Performance Mode is active.", + "noctalia-performance-disable-desktop-widgets-description": "Keep desktop widgets visible while Noctalia Performance Mode is enabled.", + "noctalia-performance-disable-desktop-widgets-label": "Enable desktop widgets in performance mode", + "noctalia-performance-disable-wallpaper-description": "Keep desktop, overview, and lock screen wallpapers visible while Noctalia Performance Mode is enabled.", + "noctalia-performance-disable-wallpaper-label": "Enable wallpaper rendering in performance mode", + "title": "System" + }, "system-monitor": { "critical-color-label": "Critical color", "custom-highlight-colors-title-label": "Custom highlight colors", diff --git a/Assets/settings-default.json b/Assets/settings-default.json index 151bd606c..2ef36828b 100644 --- a/Assets/settings-default.json +++ b/Assets/settings-default.json @@ -332,6 +332,10 @@ "criticalColor": "", "externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor" }, + "noctaliaPerformance": { + "disableWallpaper": true, + "disableDesktopWidgets": true + }, "dock": { "enabled": true, "position": "bottom", diff --git a/Assets/settings-search-index.json b/Assets/settings-search-index.json index 62874383b..c431aed9c 100644 --- a/Assets/settings-search-index.json +++ b/Assets/settings-search-index.json @@ -1895,27 +1895,45 @@ "descriptionKey": "panels.system-monitor.enable-dgpu-monitoring-description", "widget": "NToggle", "tab": 18, - "tabLabel": "system-monitor.title", + "tabLabel": "panels.system.title", "subTab": 0, - "subTabLabel": "common.general" + "subTabLabel": "system-monitor.title" }, { "labelKey": "panels.system-monitor.use-custom-highlight-colors-label", "descriptionKey": "panels.system-monitor.use-custom-highlight-colors-description", "widget": "NToggle", "tab": 18, - "tabLabel": "system-monitor.title", + "tabLabel": "panels.system.title", "subTab": 0, - "subTabLabel": "common.general" + "subTabLabel": "system-monitor.title" }, { "labelKey": "panels.system-monitor.external-monitor-label", "descriptionKey": "panels.system-monitor.external-monitor-description", "widget": "NTextInput", "tab": 18, - "tabLabel": "system-monitor.title", + "tabLabel": "panels.system.title", "subTab": 0, - "subTabLabel": "common.general" + "subTabLabel": "system-monitor.title" + }, + { + "labelKey": "panels.system.noctalia-performance-disable-wallpaper-label", + "descriptionKey": "panels.system.noctalia-performance-disable-wallpaper-description", + "widget": "NToggle", + "tab": 18, + "tabLabel": "panels.system.title", + "subTab": 2, + "subTabLabel": "common.performance" + }, + { + "labelKey": "panels.system.noctalia-performance-disable-desktop-widgets-label", + "descriptionKey": "panels.system.noctalia-performance-disable-desktop-widgets-description", + "widget": "NToggle", + "tab": 18, + "tabLabel": "panels.system.title", + "subTab": 2, + "subTabLabel": "common.performance" }, { "labelKey": "panels.user-interface.tooltips-label", diff --git a/Commons/Settings.qml b/Commons/Settings.qml index 557161ffb..71b4a87e6 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -530,6 +530,12 @@ Singleton { property string externalMonitor: "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor" } + // performance + property JsonObject noctaliaPerformance: JsonObject { + property bool disableWallpaper: true + property bool disableDesktopWidgets: true + } + // dock property JsonObject dock: JsonObject { property bool enabled: true diff --git a/Modules/Background/Background.qml b/Modules/Background/Background.qml index 3bfb39d5c..ea74e5b70 100644 --- a/Modules/Background/Background.qml +++ b/Modules/Background/Background.qml @@ -14,7 +14,7 @@ Variants { required property ShellScreen modelData - active: modelData && Settings.data.wallpaper.enabled && !PowerProfileService.noctaliaPerformanceMode + active: modelData && Settings.data.wallpaper.enabled && (!PowerProfileService.noctaliaPerformanceMode || !Settings.data.noctaliaPerformance.disableWallpaper) sourceComponent: PanelWindow { id: root diff --git a/Modules/Background/Overview.qml b/Modules/Background/Overview.qml index dee7bd413..4ed59208f 100644 --- a/Modules/Background/Overview.qml +++ b/Modules/Background/Overview.qml @@ -8,7 +8,7 @@ import qs.Services.Power import qs.Services.UI Loader { - active: CompositorService.isNiri && Settings.data.wallpaper.enabled && Settings.data.wallpaper.overviewEnabled && !PowerProfileService.noctaliaPerformanceMode + active: CompositorService.isNiri && Settings.data.wallpaper.enabled && Settings.data.wallpaper.overviewEnabled && (!PowerProfileService.noctaliaPerformanceMode || !Settings.data.noctaliaPerformance.disableWallpaper) sourceComponent: Variants { model: Quickshell.screens diff --git a/Modules/Bar/Widgets/SystemMonitor.qml b/Modules/Bar/Widgets/SystemMonitor.qml index 78e84f0eb..fcf137015 100644 --- a/Modules/Bar/Widgets/SystemMonitor.qml +++ b/Modules/Bar/Widgets/SystemMonitor.qml @@ -175,7 +175,7 @@ Item { PanelService.closeContextMenu(screen); if (action === "sysmon-settings") { - SettingsPanelService.openToTab(SettingsPanel.Tab.SystemMonitor, 0, screen); + SettingsPanelService.openToTab(SettingsPanel.Tab.System, 0, screen); } else if (action === "widget-settings") { BarService.openWidgetSettings(screen, section, sectionWidgetIndex, widgetId, widgetSettings); } diff --git a/Modules/DesktopWidgets/DesktopWidgets.qml b/Modules/DesktopWidgets/DesktopWidgets.qml index 462aba209..6e7b29d78 100644 --- a/Modules/DesktopWidgets/DesktopWidgets.qml +++ b/Modules/DesktopWidgets/DesktopWidgets.qml @@ -51,7 +51,7 @@ Variants { // Only create PanelWindow if enabled AND (screen has widgets OR in edit mode) // During compositor overview, show widgets only when overviewEnabled is true. - active: modelData && Settings.data.desktopWidgets.enabled && (screenWidgets.length > 0 || DesktopWidgetRegistry.editMode) && (!CompositorService.overviewActive || Settings.data.desktopWidgets.overviewEnabled) && !PowerProfileService.noctaliaPerformanceMode && !PanelService.lockScreen?.active + active: modelData && Settings.data.desktopWidgets.enabled && (screenWidgets.length > 0 || DesktopWidgetRegistry.editMode) && (!CompositorService.overviewActive || Settings.data.desktopWidgets.overviewEnabled) && (!PowerProfileService.noctaliaPerformanceMode || !Settings.data.noctaliaPerformance.disableDesktopWidgets) && !PanelService.lockScreen?.active sourceComponent: PanelWindow { id: window diff --git a/Modules/LockScreen/LockScreenBackground.qml b/Modules/LockScreen/LockScreenBackground.qml index ea1671e40..378b2b3a4 100644 --- a/Modules/LockScreen/LockScreenBackground.qml +++ b/Modules/LockScreen/LockScreenBackground.qml @@ -111,7 +111,7 @@ Item { Image { id: lockBgImage - visible: source !== "" && Settings.data.wallpaper.enabled && !Settings.data.wallpaper.useSolidColor && !PowerProfileService.noctaliaPerformanceMode + visible: source !== "" && Settings.data.wallpaper.enabled && !Settings.data.wallpaper.useSolidColor && (!PowerProfileService.noctaliaPerformanceMode || !Settings.data.noctaliaPerformance.disableWallpaper) anchors.fill: parent fillMode: Image.PreserveAspectCrop source: resolvedWallpaperPath diff --git a/Modules/Panels/Settings/SettingsContent.qml b/Modules/Panels/Settings/SettingsContent.qml index a4eb81890..355c01210 100644 --- a/Modules/Panels/Settings/SettingsContent.qml +++ b/Modules/Panels/Settings/SettingsContent.qml @@ -624,8 +624,8 @@ Item { "source": regionTab }, { - "id": SettingsPanel.Tab.SystemMonitor, - "label": "system-monitor.title", + "id": SettingsPanel.Tab.System, + "label": "panels.system.title", "icon": "settings-system-monitor", "source": systemMonitorTab }, diff --git a/Modules/Panels/Settings/SettingsPanel.qml b/Modules/Panels/Settings/SettingsPanel.qml index 98092d27c..71220b1c4 100644 --- a/Modules/Panels/Settings/SettingsPanel.qml +++ b/Modules/Panels/Settings/SettingsPanel.qml @@ -89,7 +89,7 @@ SmartPanel { Notifications, Plugins, SessionMenu, - SystemMonitor, + System, UserInterface, Wallpaper } diff --git a/Modules/Panels/Settings/Tabs/SystemMonitor/PerformanceSubTab.qml b/Modules/Panels/Settings/Tabs/SystemMonitor/PerformanceSubTab.qml new file mode 100644 index 000000000..54f90fd46 --- /dev/null +++ b/Modules/Panels/Settings/Tabs/SystemMonitor/PerformanceSubTab.qml @@ -0,0 +1,34 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import qs.Commons +import qs.Widgets + +ColumnLayout { + id: root + spacing: Style.marginL + Layout.fillWidth: true + + NLabel { + Layout.fillWidth: true + description: I18n.tr("panels.system.noctalia-performance-desc") + } + + NToggle { + Layout.fillWidth: true + label: I18n.tr("panels.system.noctalia-performance-disable-wallpaper-label") + description: I18n.tr("panels.system.noctalia-performance-disable-wallpaper-description") + checked: !Settings.data.noctaliaPerformance.disableWallpaper + defaultValue: !Settings.getDefaultValue("noctaliaPerformance.disableWallpaper") + onToggled: checked => Settings.data.noctaliaPerformance.disableWallpaper = !checked + } + + NToggle { + Layout.fillWidth: true + label: I18n.tr("panels.system.noctalia-performance-disable-desktop-widgets-label") + description: I18n.tr("panels.system.noctalia-performance-disable-desktop-widgets-description") + checked: !Settings.data.noctaliaPerformance.disableDesktopWidgets + defaultValue: !Settings.getDefaultValue("noctaliaPerformance.disableDesktopWidgets") + onToggled: checked => Settings.data.noctaliaPerformance.disableDesktopWidgets = !checked + } +} diff --git a/Modules/Panels/Settings/Tabs/SystemMonitor/SystemMonitorTab.qml b/Modules/Panels/Settings/Tabs/SystemMonitor/SystemMonitorTab.qml index a3f9d17b7..e5418ca08 100644 --- a/Modules/Panels/Settings/Tabs/SystemMonitor/SystemMonitorTab.qml +++ b/Modules/Panels/Settings/Tabs/SystemMonitor/SystemMonitorTab.qml @@ -18,7 +18,7 @@ ColumnLayout { currentIndex: tabView.currentIndex NTabButton { - text: I18n.tr("common.general") + text: I18n.tr("system-monitor.title") tabIndex: 0 checked: subTabBar.currentIndex === 0 } @@ -27,6 +27,11 @@ ColumnLayout { tabIndex: 1 checked: subTabBar.currentIndex === 1 } + NTabButton { + text: I18n.tr("common.performance") + tabIndex: 2 + checked: subTabBar.currentIndex === 2 + } } Item { @@ -42,5 +47,6 @@ ColumnLayout { screen: root.screen } ThresholdsSubTab {} + PerformanceSubTab {} } } diff --git a/Services/Control/IPCService.qml b/Services/Control/IPCService.qml index d84a2ff03..9d3a09dc0 100644 --- a/Services/Control/IPCService.qml +++ b/Services/Control/IPCService.qml @@ -98,7 +98,8 @@ Singleton { "notifications": SettingsPanel.Tab.Notifications, "plugins": SettingsPanel.Tab.Plugins, "sessionmenu": SettingsPanel.Tab.SessionMenu, - "systemmonitor": SettingsPanel.Tab.SystemMonitor, + "system": SettingsPanel.Tab.System, + "systemmonitor": SettingsPanel.Tab.System, "userinterface": SettingsPanel.Tab.UserInterface, "wallpaper": SettingsPanel.Tab.Wallpaper })