mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-15 15:54:00 -04:00
* fix(settings): show what frame mode controls With frame mode on, many settings did nothing or were hidden while still applying, and nothing said so. The frame takes its color and opacity from the first non-island bar, but that bar's Surface card is hidden while the frame styles it, so neither had a visible control. Add Background and Override/Opacity rows to the Appearance Frame card, bound to the same frame bar the renderer reads. Settings the frame provides in connected mode get a "Managed by Frame in Connected Mode" note (Interface style border, corner style, background blur and dock opacity, shadow targets, launcher border); settings with no effect get "Disabled by Frame Mode" (maximize detection, bar shadow, the bar's overlay layer in separate mode). Bar size, the bar's overlay layer in connected mode, dock Over fullscreen and the controls of overlay-layer docks and launchers are shown again, since they still apply. Notification Over fullscreen shows as forced on when the frame covers every display, and launcher rows the Spotlight style ignores are disabled. Also relabel the frame Width row as Thickness, raise the inset padding maximum to its automatic range, and drop a FrameWindow handler for the removed frameOpacity signal. No new strings. * settings: show what frame mode controls, fix review findings --------- Co-authored-by: purian23 <[email protected]>
97 lines
4.1 KiB
QML
97 lines
4.1 KiB
QML
import QtQuick
|
|
import Quickshell
|
|
import qs.Common
|
|
import qs.Services
|
|
import qs.Modules.Settings.Widgets
|
|
|
|
Item {
|
|
id: root
|
|
|
|
property var parentModal: null
|
|
|
|
DockSelectionState {
|
|
id: dock
|
|
}
|
|
|
|
SettingsPage {
|
|
SettingsCard {
|
|
width: parent.width
|
|
visible: dock.hasConfig
|
|
iconName: "layers"
|
|
title: I18n.tr("Layers", "noun plural, dock settings card for overlay layer and fullscreen options")
|
|
settingKey: "dockAdvanced"
|
|
tags: ["dock", "advanced", "overlay", "fullscreen", "overview", "exclusive"]
|
|
|
|
SettingsToggleRow {
|
|
settingKey: "dockUseOverlayLayer"
|
|
tags: ["dock", "fullscreen", "overlay", "layer"]
|
|
text: I18n.tr("Use overlay layer")
|
|
checked: dock.config?.useOverlayLayer ?? false
|
|
onToggled: checked => dock.setOption("useOverlayLayer", checked)
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
settingKey: "dockShowOnFullscreen"
|
|
tags: ["dock", "fullscreen", "overlay", "show", "visibility"]
|
|
text: I18n.tr("Over fullscreen")
|
|
description: I18n.tr("Keeps the dock showing over fullscreen windows", "dock over fullscreen toggle description")
|
|
enabled: (dock.config?.useOverlayLayer ?? false) || Quickshell.screens.some(screen => CompositorService.framePeerSurfacesUseOverlayForScreen(screen) && SettingsData.dockConfigsForScreen(screen).some(config => config.id === dock.config?.id))
|
|
checked: dock.config?.showOnFullscreen ?? false
|
|
onToggled: checked => dock.setOption("showOnFullscreen", checked)
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
settingKey: "dockOpenOnOverview"
|
|
tags: ["dock", "overview", "niri"]
|
|
text: I18n.tr("Show on overview")
|
|
visible: CompositorService.isNiri
|
|
checked: dock.config?.openOnOverview ?? false
|
|
onToggled: checked => dock.setOption("openOnOverview", checked)
|
|
}
|
|
|
|
SettingsSliderRow {
|
|
settingKey: "dockExclusiveZone"
|
|
tags: ["exclusive", "zone", "reserved", "offset"]
|
|
resetStore: dock
|
|
resetKeys: ["bottomGap"]
|
|
text: I18n.tr("Exclusive zone offset")
|
|
description: I18n.tr("Grows or shrinks the space windows keep clear", "bar and dock exclusive zone offset slider description")
|
|
visible: dock.reservesSpace
|
|
value: dock.config?.bottomGap ?? 0
|
|
minimum: -100
|
|
maximum: 100
|
|
unit: "px"
|
|
onSliderValueChanged: value => dock.setOption("bottomGap", value)
|
|
}
|
|
}
|
|
|
|
SettingsCard {
|
|
width: parent.width
|
|
visible: dock.hasConfig
|
|
iconName: "monitor"
|
|
title: I18n.tr("Displays")
|
|
settingKey: "dockAdvancedDisplays"
|
|
tags: ["dock", "isolate", "monitor", "multi-monitor"]
|
|
|
|
SettingsToggleRow {
|
|
settingKey: "dockIsolateDisplays"
|
|
tags: ["dock", "isolate", "monitor", "multi-monitor"]
|
|
text: I18n.tr("Isolate displays")
|
|
description: I18n.tr("Shows only windows from the dock's own display", "dock isolate displays toggle description")
|
|
checked: dock.config?.isolateDisplays ?? false
|
|
onToggled: checked => dock.setOption("isolateDisplays", checked)
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
settingKey: "dockRestoreSpecialWorkspaceOnClick"
|
|
tags: ["dock", "hyprland", "special", "workspace", "restore"]
|
|
text: I18n.tr("Restore special workspace")
|
|
description: I18n.tr("Clicking a window in a special workspace opens that workspace", "dock restore special workspace toggle description")
|
|
visible: CompositorService.isHyprland
|
|
checked: dock.config?.restoreSpecialWorkspaceOnClick ?? false
|
|
onToggled: checked => dock.setOption("restoreSpecialWorkspaceOnClick", checked)
|
|
}
|
|
}
|
|
}
|
|
}
|