UserInterfaceTab: remove dimDesktop toggle, only use dimming slider

Settings: add migration for dimDesktop -> dimmerOpacity
Autoformat
This commit is contained in:
Ly-sec
2025-11-15 15:46:29 +01:00
parent e1e6f36cea
commit 6b92d2d4c2
5 changed files with 39 additions and 23 deletions
+1 -2
View File
@@ -1,5 +1,5 @@
{
"settingsVersion": 22,
"settingsVersion": 23,
"setupCompleted": false,
"bar": {
"position": "top",
@@ -59,7 +59,6 @@
},
"general": {
"avatarImage": "",
"dimDesktop": true,
"dimmerOpacity": 0.8,
"showScreenCorners": false,
"forceBlackScreenCorners": false,
+24 -2
View File
@@ -14,7 +14,7 @@ Singleton {
readonly property alias data: adapter
property bool isLoaded: false
property bool directoriesCreated: false
property int settingsVersion: 22
property int settingsVersion: 23
property bool isDebug: Quickshell.env("NOCTALIA_DEBUG") === "1"
// Define our app directories
@@ -189,7 +189,6 @@ Singleton {
// general
property JsonObject general: JsonObject {
property string avatarImage: ""
property bool dimDesktop: true
property real dimmerOpacity: 0.8
property bool showScreenCorners: false
property bool forceBlackScreenCorners: false
@@ -715,6 +714,29 @@ Singleton {
Logger.w("Settings", "Failed to read raw JSON for migration:", error)
}
}
// -----------------
// 7th. Migrate dim desktop settings (version 22 → 23)
// If dimDesktop is enabled, set dimmerOpacity to 0.8 if it's not already set or is 0
// Then remove dimDesktop property as it's no longer needed
if (adapter.settingsVersion < 23) {
// Read raw JSON file to access dimDesktop property
try {
var rawJson = settingsFileView.text()
if (rawJson) {
var parsed = JSON.parse(rawJson)
if (parsed.general && parsed.general.dimDesktop === true) {
if (adapter.general.dimmerOpacity === undefined || adapter.general.dimmerOpacity === 0) {
adapter.general.dimmerOpacity = 0.8
Logger.i("Settings", "Migrated dimDesktop: set dimmerOpacity to 0.8")
}
}
}
} catch (error) {
Logger.w("Settings", "Failed to read raw JSON for dimDesktop migration:", error)
}
}
}
// -----------------------------------------------------
+1 -2
View File
@@ -79,13 +79,12 @@ PanelWindow {
}
// Desktop dimming when panels are open
property bool dimDesktop: Settings.data.general.dimDesktop
property real dimmerOpacity: Settings.data.general.dimmerOpacity ?? 0.8
property bool isPanelOpen: (PanelService.openedPanel !== null) && (PanelService.openedPanel.screen === screen)
property bool isPanelClosing: (PanelService.openedPanel !== null) && PanelService.openedPanel.isClosing
color: {
if (dimDesktop && isPanelOpen) {
if (dimmerOpacity > 0 && isPanelOpen) {
return Qt.alpha(Color.mShadow, dimmerOpacity)
}
return Color.transparent
@@ -25,16 +25,8 @@ ColumnLayout {
onToggled: checked => Settings.data.ui.tooltipsEnabled = checked
}
NToggle {
label: I18n.tr("settings.user-interface.dim-desktop.label")
description: I18n.tr("settings.user-interface.dim-desktop.description")
checked: Settings.data.general.dimDesktop
onToggled: checked => Settings.data.general.dimDesktop = checked
}
// when dimDesktop is enabled: dimmer opacity
// Dim desktop opacity
ColumnLayout {
visible: Settings.data.general.dimDesktop
spacing: Style.marginXXS
Layout.fillWidth: true
@@ -451,7 +451,7 @@ ColumnLayout {
Layout.bottomMargin: Style.marginS
}
// Dim Desktop toggle
// Dim Desktop opacity
RowLayout {
Layout.fillWidth: true
spacing: Style.marginM
@@ -471,23 +471,27 @@ ColumnLayout {
Layout.fillWidth: true
spacing: 2
NText {
text: I18n.tr("settings.user-interface.dim-desktop.label")
text: I18n.tr("settings.user-interface.dimmer-opacity.label")
pointSize: Style.fontSizeL
font.weight: Style.fontWeightBold
color: Color.mOnSurface
}
NText {
text: I18n.tr("settings.user-interface.dim-desktop.description")
text: I18n.tr("settings.user-interface.dimmer-opacity.description")
pointSize: Style.fontSizeS
color: Color.mOnSurfaceVariant
wrapMode: Text.WordWrap
Layout.fillWidth: true
}
}
NToggle {
checked: Settings.data.general.dimDesktop
onToggled: function (checked) {
Settings.data.general.dimDesktop = checked
NValueSlider {
Layout.fillWidth: true
Layout.topMargin: Style.marginXS
from: 0
to: 1
stepSize: 0.01
value: Settings.data.general.dimmerOpacity
onMoved: value => Settings.data.general.dimmerOpacity = value
text: Math.floor(Settings.data.general.dimmerOpacity * 100) + "%"
}
}
}