mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-28 15:44:32 +00:00
Add liquid glass to osd
This commit is contained in:
parent
8bd1d51a1a
commit
e553ccf667
5 changed files with 208 additions and 13 deletions
|
|
@ -7617,6 +7617,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"Custom Liquid is available on macOS 26 or later." : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"Custom Liquid settings require the Liquid Glass material." : {
|
"Custom Liquid settings require the Liquid Glass material." : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
|
|
@ -7627,6 +7630,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"Custom liquid variant" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"Custom music live activity animation" : {
|
"Custom music live activity animation" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@ struct CustomOSDView: View {
|
||||||
@Binding var icon: String
|
@Binding var icon: String
|
||||||
|
|
||||||
@Default(.osdMaterial) var osdMaterial
|
@Default(.osdMaterial) var osdMaterial
|
||||||
|
@Default(.osdLiquidGlassCustomizationMode) var osdLiquidGlassCustomizationMode
|
||||||
|
@Default(.osdLiquidGlassVariant) var osdLiquidGlassVariant
|
||||||
@Default(.osdIconColorStyle) var osdIconColorStyle
|
@Default(.osdIconColorStyle) var osdIconColorStyle
|
||||||
@Environment(\.colorScheme) var colorScheme
|
@Environment(\.colorScheme) var colorScheme
|
||||||
|
|
||||||
|
|
@ -160,11 +162,23 @@ struct CustomOSDView: View {
|
||||||
.fill(.ultraThinMaterial)
|
.fill(.ultraThinMaterial)
|
||||||
case .liquid:
|
case .liquid:
|
||||||
if #available(macOS 26.0, *) {
|
if #available(macOS 26.0, *) {
|
||||||
RoundedRectangle(cornerRadius: 18, style: .continuous)
|
if osdLiquidGlassCustomizationMode == .customLiquid {
|
||||||
.glassEffect(
|
TimelineView(.periodic(from: .now, by: 1.0 / 30.0)) { context in
|
||||||
.clear.interactive(),
|
LiquidGlassBackground(
|
||||||
in: .rect(cornerRadius: 18)
|
variant: osdLiquidGlassVariant,
|
||||||
)
|
cornerRadius: 18,
|
||||||
|
trigger: context.date.timeIntervalSinceReferenceDate
|
||||||
|
) {
|
||||||
|
Color.white.opacity(0.04)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
RoundedRectangle(cornerRadius: 18, style: .continuous)
|
||||||
|
.glassEffect(
|
||||||
|
.clear.interactive(),
|
||||||
|
in: .rect(cornerRadius: 18)
|
||||||
|
)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
RoundedRectangle(cornerRadius: 18, style: .continuous)
|
RoundedRectangle(cornerRadius: 18, style: .continuous)
|
||||||
.fill(.ultraThinMaterial)
|
.fill(.ultraThinMaterial)
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,9 @@ struct VerticalHUDView: View {
|
||||||
@Default(.verticalHUDHeight) var hudHeight
|
@Default(.verticalHUDHeight) var hudHeight
|
||||||
@Default(.verticalHUDWidth) var hudWidth
|
@Default(.verticalHUDWidth) var hudWidth
|
||||||
@Default(.verticalHUDUseAccentColor) var useAccentColor
|
@Default(.verticalHUDUseAccentColor) var useAccentColor
|
||||||
|
@Default(.verticalHUDMaterial) var verticalHUDMaterial
|
||||||
|
@Default(.verticalHUDLiquidGlassCustomizationMode) var verticalHUDLiquidGlassCustomizationMode
|
||||||
|
@Default(.verticalHUDLiquidGlassVariant) var verticalHUDLiquidGlassVariant
|
||||||
@Default(.verticalHUDInteractive) var isInteractive
|
@Default(.verticalHUDInteractive) var isInteractive
|
||||||
|
|
||||||
@Environment(\.colorScheme) var colorScheme
|
@Environment(\.colorScheme) var colorScheme
|
||||||
|
|
@ -68,8 +71,8 @@ struct VerticalHUDView: View {
|
||||||
// The Actual HUD Pill
|
// The Actual HUD Pill
|
||||||
ZStack {
|
ZStack {
|
||||||
// Background
|
// Background
|
||||||
Capsule()
|
verticalBackground
|
||||||
.fill(.ultraThinMaterial)
|
.clipShape(Capsule())
|
||||||
.overlay {
|
.overlay {
|
||||||
Capsule()
|
Capsule()
|
||||||
.stroke(.white.opacity(0.1), lineWidth: 1)
|
.stroke(.white.opacity(0.1), lineWidth: 1)
|
||||||
|
|
@ -253,5 +256,42 @@ struct VerticalHUDView: View {
|
||||||
}
|
}
|
||||||
return .secondary
|
return .secondary
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ViewBuilder
|
||||||
|
private var verticalBackground: some View {
|
||||||
|
switch verticalHUDMaterial {
|
||||||
|
case .frosted:
|
||||||
|
Capsule().fill(.ultraThinMaterial)
|
||||||
|
case .liquid:
|
||||||
|
if #available(macOS 26.0, *) {
|
||||||
|
if verticalHUDLiquidGlassCustomizationMode == .customLiquid {
|
||||||
|
TimelineView(.periodic(from: .now, by: 1.0 / 30.0)) { context in
|
||||||
|
LiquidGlassBackground(
|
||||||
|
variant: verticalHUDLiquidGlassVariant,
|
||||||
|
cornerRadius: max(currentWidth, hudWidth),
|
||||||
|
trigger: context.date.timeIntervalSinceReferenceDate
|
||||||
|
) {
|
||||||
|
Color.white.opacity(0.04)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Capsule()
|
||||||
|
.fill(.clear)
|
||||||
|
.glassEffect(
|
||||||
|
.clear.interactive(),
|
||||||
|
in: .capsule
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Capsule().fill(.ultraThinMaterial)
|
||||||
|
}
|
||||||
|
case .solidDark:
|
||||||
|
Capsule().fill(Color.black.opacity(0.85))
|
||||||
|
case .solidLight:
|
||||||
|
Capsule().fill(Color.white.opacity(0.85))
|
||||||
|
case .solidAuto:
|
||||||
|
Capsule().fill((colorScheme == .dark ? Color.black : Color.white).opacity(0.85))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1369,6 +1369,9 @@ private struct HUDAndOSDSettingsView: View {
|
||||||
@Default(.verticalHUDWidth) var verticalHUDWidth
|
@Default(.verticalHUDWidth) var verticalHUDWidth
|
||||||
@Default(.verticalHUDPadding) var verticalHUDPadding
|
@Default(.verticalHUDPadding) var verticalHUDPadding
|
||||||
@Default(.verticalHUDUseAccentColor) var verticalHUDUseAccentColor
|
@Default(.verticalHUDUseAccentColor) var verticalHUDUseAccentColor
|
||||||
|
@Default(.verticalHUDMaterial) var verticalHUDMaterial
|
||||||
|
@Default(.verticalHUDLiquidGlassCustomizationMode) var verticalHUDLiquidGlassCustomizationMode
|
||||||
|
@Default(.verticalHUDLiquidGlassVariant) var verticalHUDLiquidGlassVariant
|
||||||
|
|
||||||
// Circular HUD Props
|
// Circular HUD Props
|
||||||
@Default(.circularHUDShowValue) var circularHUDShowValue
|
@Default(.circularHUDShowValue) var circularHUDShowValue
|
||||||
|
|
@ -1391,6 +1394,27 @@ private struct HUDAndOSDSettingsView: View {
|
||||||
Color(nsColor: .controlBackgroundColor)
|
Color(nsColor: .controlBackgroundColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var liquidVariantRange: ClosedRange<Double> {
|
||||||
|
Double(LiquidGlassVariant.supportedRange.lowerBound)...Double(LiquidGlassVariant.supportedRange.upperBound)
|
||||||
|
}
|
||||||
|
|
||||||
|
private var availableVerticalMaterials: [OSDMaterial] {
|
||||||
|
if #available(macOS 26.0, *) {
|
||||||
|
return OSDMaterial.allCases
|
||||||
|
}
|
||||||
|
return OSDMaterial.allCases.filter { $0 != .liquid }
|
||||||
|
}
|
||||||
|
|
||||||
|
private var verticalLiquidVariantBinding: Binding<Double> {
|
||||||
|
Binding(
|
||||||
|
get: { Double(verticalHUDLiquidGlassVariant.rawValue) },
|
||||||
|
set: { newValue in
|
||||||
|
let raw = Int(newValue.rounded())
|
||||||
|
verticalHUDLiquidGlassVariant = LiquidGlassVariant.clamped(raw)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(spacing: 20) {
|
VStack(spacing: 20) {
|
||||||
HStack(spacing: 16) {
|
HStack(spacing: 16) {
|
||||||
|
|
@ -1608,6 +1632,39 @@ private struct HUDAndOSDSettingsView: View {
|
||||||
Toggle("Show Percentage", isOn: $verticalHUDShowValue)
|
Toggle("Show Percentage", isOn: $verticalHUDShowValue)
|
||||||
Toggle("Use Accent Color", isOn: $verticalHUDUseAccentColor)
|
Toggle("Use Accent Color", isOn: $verticalHUDUseAccentColor)
|
||||||
Toggle("Interactive (Drag to Change)", isOn: $verticalHUDInteractive)
|
Toggle("Interactive (Drag to Change)", isOn: $verticalHUDInteractive)
|
||||||
|
Picker("Material", selection: $verticalHUDMaterial) {
|
||||||
|
ForEach(availableVerticalMaterials, id: \.self) { material in
|
||||||
|
Text(material.rawValue).tag(material)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if verticalHUDMaterial == .liquid {
|
||||||
|
if #available(macOS 26.0, *) {
|
||||||
|
Picker("Glass mode", selection: $verticalHUDLiquidGlassCustomizationMode) {
|
||||||
|
ForEach(LockScreenGlassCustomizationMode.allCases) { mode in
|
||||||
|
Text(mode.rawValue).tag(mode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pickerStyle(.segmented)
|
||||||
|
|
||||||
|
if verticalHUDLiquidGlassCustomizationMode == .customLiquid {
|
||||||
|
VStack(alignment: .leading, spacing: 6) {
|
||||||
|
HStack {
|
||||||
|
Text("Custom liquid variant")
|
||||||
|
Spacer()
|
||||||
|
Text("v\(verticalHUDLiquidGlassVariant.rawValue)")
|
||||||
|
.font(.caption)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
Slider(value: verticalLiquidVariantBinding, in: liquidVariantRange, step: 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Text("Custom Liquid is available on macOS 26 or later.")
|
||||||
|
.font(.caption)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
}
|
||||||
Defaults.Toggle("Color-coded Volume", key: .useColorCodedVolumeDisplay)
|
Defaults.Toggle("Color-coded Volume", key: .useColorCodedVolumeDisplay)
|
||||||
if Defaults[.useColorCodedVolumeDisplay] {
|
if Defaults[.useColorCodedVolumeDisplay] {
|
||||||
Defaults.Toggle("Smooth color transitions", key: .useSmoothColorGradient)
|
Defaults.Toggle("Smooth color transitions", key: .useSmoothColorGradient)
|
||||||
|
|
@ -1719,6 +1776,12 @@ private struct HUDAndOSDSettingsView: View {
|
||||||
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
|
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
|
||||||
.background(paneBackgroundColor)
|
.background(paneBackgroundColor)
|
||||||
.navigationTitle("Controls")
|
.navigationTitle("Controls")
|
||||||
|
.onAppear {
|
||||||
|
if #unavailable(macOS 26.0), verticalHUDMaterial == .liquid {
|
||||||
|
verticalHUDMaterial = .frosted
|
||||||
|
verticalHUDLiquidGlassCustomizationMode = .standard
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5608,34 +5671,34 @@ struct TimerSettings: View {
|
||||||
let nextIndex = timerPresets.count + 1
|
let nextIndex = timerPresets.count + 1
|
||||||
let defaultColor = Defaults[.accentColor]
|
let defaultColor = Defaults[.accentColor]
|
||||||
let newPreset = TimerPreset(name: "Preset \(nextIndex)", duration: 5 * 60, color: defaultColor)
|
let newPreset = TimerPreset(name: "Preset \(nextIndex)", duration: 5 * 60, color: defaultColor)
|
||||||
withAnimation(.smooth) {
|
_ = withAnimation(.smooth) {
|
||||||
timerPresets.append(newPreset)
|
timerPresets.append(newPreset)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func movePresetUp(_ index: Int) {
|
private func movePresetUp(_ index: Int) {
|
||||||
guard index > timerPresets.startIndex else { return }
|
guard index > timerPresets.startIndex else { return }
|
||||||
withAnimation(.smooth) {
|
_ = withAnimation(.smooth) {
|
||||||
timerPresets.swapAt(index, index - 1)
|
timerPresets.swapAt(index, index - 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func movePresetDown(_ index: Int) {
|
private func movePresetDown(_ index: Int) {
|
||||||
guard index < timerPresets.index(before: timerPresets.endIndex) else { return }
|
guard index < timerPresets.index(before: timerPresets.endIndex) else { return }
|
||||||
withAnimation(.smooth) {
|
_ = withAnimation(.smooth) {
|
||||||
timerPresets.swapAt(index, index + 1)
|
timerPresets.swapAt(index, index + 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func removePreset(_ index: Int) {
|
private func removePreset(_ index: Int) {
|
||||||
guard timerPresets.indices.contains(index) else { return }
|
guard timerPresets.indices.contains(index) else { return }
|
||||||
withAnimation(.smooth) {
|
_ = withAnimation(.smooth) {
|
||||||
timerPresets.remove(at: index)
|
timerPresets.remove(at: index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func resetPresets() {
|
private func resetPresets() {
|
||||||
withAnimation(.smooth) {
|
_ = withAnimation(.smooth) {
|
||||||
timerPresets = TimerPreset.defaultPresets
|
timerPresets = TimerPreset.defaultPresets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6550,6 +6613,8 @@ struct CustomOSDSettings: View {
|
||||||
@Default(.enableOSDBrightness) var enableOSDBrightness
|
@Default(.enableOSDBrightness) var enableOSDBrightness
|
||||||
@Default(.enableOSDKeyboardBacklight) var enableOSDKeyboardBacklight
|
@Default(.enableOSDKeyboardBacklight) var enableOSDKeyboardBacklight
|
||||||
@Default(.osdMaterial) var osdMaterial
|
@Default(.osdMaterial) var osdMaterial
|
||||||
|
@Default(.osdLiquidGlassCustomizationMode) var osdLiquidGlassCustomizationMode
|
||||||
|
@Default(.osdLiquidGlassVariant) var osdLiquidGlassVariant
|
||||||
@Default(.osdIconColorStyle) var osdIconColorStyle
|
@Default(.osdIconColorStyle) var osdIconColorStyle
|
||||||
@Default(.enableSystemHUD) var enableSystemHUD
|
@Default(.enableSystemHUD) var enableSystemHUD
|
||||||
@ObservedObject private var accessibilityPermission = AccessibilityPermissionStore.shared
|
@ObservedObject private var accessibilityPermission = AccessibilityPermissionStore.shared
|
||||||
|
|
@ -6566,6 +6631,27 @@ struct CustomOSDSettings: View {
|
||||||
accessibilityPermission.isAuthorized
|
accessibilityPermission.isAuthorized
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var availableOSDMaterials: [OSDMaterial] {
|
||||||
|
if #available(macOS 26.0, *) {
|
||||||
|
return OSDMaterial.allCases
|
||||||
|
}
|
||||||
|
return OSDMaterial.allCases.filter { $0 != .liquid }
|
||||||
|
}
|
||||||
|
|
||||||
|
private var liquidVariantRange: ClosedRange<Double> {
|
||||||
|
Double(LiquidGlassVariant.supportedRange.lowerBound)...Double(LiquidGlassVariant.supportedRange.upperBound)
|
||||||
|
}
|
||||||
|
|
||||||
|
private var osdLiquidVariantBinding: Binding<Double> {
|
||||||
|
Binding(
|
||||||
|
get: { Double(osdLiquidGlassVariant.rawValue) },
|
||||||
|
set: { newValue in
|
||||||
|
let raw = Int(newValue.rounded())
|
||||||
|
osdLiquidGlassVariant = LiquidGlassVariant.clamped(raw)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Form {
|
Form {
|
||||||
if !hasAccessibilityPermission {
|
if !hasAccessibilityPermission {
|
||||||
|
|
@ -6598,7 +6684,7 @@ struct CustomOSDSettings: View {
|
||||||
|
|
||||||
Section {
|
Section {
|
||||||
Picker("Material", selection: $osdMaterial) {
|
Picker("Material", selection: $osdMaterial) {
|
||||||
ForEach(OSDMaterial.allCases, id: \.self) { material in
|
ForEach(availableOSDMaterials, id: \.self) { material in
|
||||||
Text(material.rawValue).tag(material)
|
Text(material.rawValue).tag(material)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6607,6 +6693,34 @@ struct CustomOSDSettings: View {
|
||||||
previewValue = previewValue == 0.65 ? 0.651 : 0.65
|
previewValue = previewValue == 0.65 ? 0.651 : 0.65
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if osdMaterial == .liquid {
|
||||||
|
if #available(macOS 26.0, *) {
|
||||||
|
Picker("Glass mode", selection: $osdLiquidGlassCustomizationMode) {
|
||||||
|
ForEach(LockScreenGlassCustomizationMode.allCases) { mode in
|
||||||
|
Text(mode.rawValue).tag(mode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pickerStyle(.segmented)
|
||||||
|
|
||||||
|
if osdLiquidGlassCustomizationMode == .customLiquid {
|
||||||
|
VStack(alignment: .leading, spacing: 6) {
|
||||||
|
HStack {
|
||||||
|
Text("Custom liquid variant")
|
||||||
|
Spacer()
|
||||||
|
Text("v\(osdLiquidGlassVariant.rawValue)")
|
||||||
|
.font(.caption)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
Slider(value: osdLiquidVariantBinding, in: liquidVariantRange, step: 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Text("Custom Liquid is available on macOS 26 or later.")
|
||||||
|
.font(.caption)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Picker("Icon & Progress Color", selection: $osdIconColorStyle) {
|
Picker("Icon & Progress Color", selection: $osdIconColorStyle) {
|
||||||
ForEach(OSDIconColorStyle.allCases, id: \.self) { style in
|
ForEach(OSDIconColorStyle.allCases, id: \.self) { style in
|
||||||
Text(style.rawValue).tag(style)
|
Text(style.rawValue).tag(style)
|
||||||
|
|
@ -6682,6 +6796,10 @@ struct CustomOSDSettings: View {
|
||||||
.navigationTitle("Custom OSD")
|
.navigationTitle("Custom OSD")
|
||||||
.onAppear {
|
.onAppear {
|
||||||
accessibilityPermission.refreshStatus()
|
accessibilityPermission.refreshStatus()
|
||||||
|
if #unavailable(macOS 26.0), osdMaterial == .liquid {
|
||||||
|
osdMaterial = .frosted
|
||||||
|
osdLiquidGlassCustomizationMode = .standard
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.onChange(of: accessibilityPermission.isAuthorized) { _, granted in
|
.onChange(of: accessibilityPermission.isAuthorized) { _, granted in
|
||||||
if !granted {
|
if !granted {
|
||||||
|
|
|
||||||
|
|
@ -973,6 +973,15 @@ extension Defaults.Keys {
|
||||||
static let verticalHUDWidth = Key<CGFloat>("verticalHUDWidth", default: 36)
|
static let verticalHUDWidth = Key<CGFloat>("verticalHUDWidth", default: 36)
|
||||||
static let verticalHUDPadding = Key<CGFloat>("verticalHUDPadding", default: 24)
|
static let verticalHUDPadding = Key<CGFloat>("verticalHUDPadding", default: 24)
|
||||||
static let verticalHUDUseAccentColor = Key<Bool>("verticalHUDUseAccentColor", default: false)
|
static let verticalHUDUseAccentColor = Key<Bool>("verticalHUDUseAccentColor", default: false)
|
||||||
|
static let verticalHUDMaterial = Key<OSDMaterial>("verticalHUDMaterial", default: .frosted)
|
||||||
|
static let verticalHUDLiquidGlassCustomizationMode = Key<LockScreenGlassCustomizationMode>(
|
||||||
|
"verticalHUDLiquidGlassCustomizationMode",
|
||||||
|
default: .standard
|
||||||
|
)
|
||||||
|
static let verticalHUDLiquidGlassVariant = Key<LiquidGlassVariant>(
|
||||||
|
"verticalHUDLiquidGlassVariant",
|
||||||
|
default: .defaultVariant
|
||||||
|
)
|
||||||
|
|
||||||
// Circular HUD Customization
|
// Circular HUD Customization
|
||||||
static let circularHUDShowValue = Key<Bool>("circularHUDShowValue", default: true)
|
static let circularHUDShowValue = Key<Bool>("circularHUDShowValue", default: true)
|
||||||
|
|
@ -985,6 +994,14 @@ extension Defaults.Keys {
|
||||||
static let enableOSDBrightness = Key<Bool>("enableOSDBrightness", default: true)
|
static let enableOSDBrightness = Key<Bool>("enableOSDBrightness", default: true)
|
||||||
static let enableOSDKeyboardBacklight = Key<Bool>("enableOSDKeyboardBacklight", default: true)
|
static let enableOSDKeyboardBacklight = Key<Bool>("enableOSDKeyboardBacklight", default: true)
|
||||||
static let osdMaterial = Key<OSDMaterial>("osdMaterial", default: .frosted)
|
static let osdMaterial = Key<OSDMaterial>("osdMaterial", default: .frosted)
|
||||||
|
static let osdLiquidGlassCustomizationMode = Key<LockScreenGlassCustomizationMode>(
|
||||||
|
"osdLiquidGlassCustomizationMode",
|
||||||
|
default: .standard
|
||||||
|
)
|
||||||
|
static let osdLiquidGlassVariant = Key<LiquidGlassVariant>(
|
||||||
|
"osdLiquidGlassVariant",
|
||||||
|
default: .defaultVariant
|
||||||
|
)
|
||||||
static let osdIconColorStyle = Key<OSDIconColorStyle>("osdIconColorStyle", default: .white)
|
static let osdIconColorStyle = Key<OSDIconColorStyle>("osdIconColorStyle", default: .white)
|
||||||
|
|
||||||
// MARK: Screen Recording Detection Feature
|
// MARK: Screen Recording Detection Feature
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue