Update caps lock settings

This commit is contained in:
Hariharan Mudaliar 2026-01-08 23:22:49 +05:30
commit 776144064f
No known key found for this signature in database
GPG key ID: 025583EB0BE5640E
5 changed files with 56 additions and 5 deletions

View file

@ -345,6 +345,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
Defaults.Keys.migrateProgressBarStyle()
Defaults.Keys.migrateMusicAuxControls()
Defaults.Keys.migrateMusicControlSlots()
Defaults.Keys.migrateCapsLockTintMode()
// Initialize idle animations (load bundled + built-in face)
idleAnimationManager.initializeDefaultAnimations()

View file

@ -4628,6 +4628,9 @@
},
"Caps Lock" : {
},
"Caps Lock color" : {
},
"Caps Lock Indicator" : {

View file

@ -26,6 +26,7 @@ struct InlineHUD: View {
@Default(.showBluetoothDeviceNameMarquee) var showBluetoothDeviceNameMarquee
@Default(.enableMinimalisticUI) var enableMinimalisticUI
@Default(.showCapsLockLabel) var showCapsLockLabel
@Default(.capsLockIndicatorTintMode) var capsLockTintMode
@ObservedObject var bluetoothManager = BluetoothAudioManager.shared
@State private var displayName: String = ""
@ -33,7 +34,7 @@ struct InlineHUD: View {
var body: some View {
let useCircularIndicator = useCircularBluetoothBatteryIndicator
let hasBatteryLevel = value > 0
let capsLockAccentColor: Color = Defaults[.capsLockIndicatorUseGreenColor] ? .green : .white
let capsLockAccentColor = capsLockTintMode.color
let baseInfoWidth: CGFloat = {
if type == .bluetoothAudio {

View file

@ -2538,6 +2538,7 @@ struct LiveActivitiesSettings: View {
@Default(.enableScreenRecordingDetection) var enableScreenRecordingDetection
@Default(.enableDoNotDisturbDetection) var enableDoNotDisturbDetection
@Default(.focusIndicatorNonPersistent) var focusIndicatorNonPersistent
@Default(.capsLockIndicatorTintMode) var capsLockTintMode
private func highlightID(_ title: String) -> String {
SettingsTab.liveActivities.highlightID(for: title)
@ -2647,9 +2648,14 @@ struct LiveActivitiesSettings: View {
.disabled(!Defaults[.enableCapsLockIndicator])
.settingsHighlight(id: highlightID("Show Caps Lock label"))
Defaults.Toggle("Use green color for Caps Lock text", key: .capsLockIndicatorUseGreenColor)
.disabled(!Defaults[.enableCapsLockIndicator])
.settingsHighlight(id: highlightID("Use green color for Caps Lock text"))
Picker("Caps Lock color", selection: $capsLockTintMode) {
ForEach(CapsLockIndicatorTintMode.allCases) { mode in
Text(mode.displayName).tag(mode)
}
}
.pickerStyle(.segmented)
.disabled(!Defaults[.enableCapsLockIndicator])
.settingsHighlight(id: highlightID("Caps Lock color"))
} header: {
Text("Caps Lock Indicator")
} footer: {

View file

@ -191,6 +191,36 @@ enum SneakPeekStyle: String, CaseIterable, Identifiable, Defaults.Serializable {
var id: String { self.rawValue }
}
enum CapsLockIndicatorTintMode: String, CaseIterable, Identifiable, Defaults.Serializable {
case green
case accent
case white
var id: String { rawValue }
var displayName: String {
switch self {
case .green:
return "Green"
case .accent:
return "Accent"
case .white:
return "White"
}
}
var color: Color {
switch self {
case .green:
return .green
case .accent:
return .accentColor
case .white:
return .white
}
}
}
enum ProgressBarStyle: String, CaseIterable, Identifiable, Defaults.Serializable {
case hierarchical = "Hierarchical"
case gradient = "Gradient"
@ -740,7 +770,9 @@ extension Defaults.Keys {
// MARK: Caps Lock Indicator
static let enableCapsLockIndicator = Key<Bool>("enableCapsLockIndicator", default: true)
static let capsLockIndicatorUseGreenColor = Key<Bool>("capsLockIndicatorUseGreenColor", default: false)
static let capsLockIndicatorUseGreenColor = Key<Bool>("capsLockIndicatorUseGreenColor", default: false) // Legacy toggle
static let capsLockIndicatorTintMode = Key<CapsLockIndicatorTintMode>("capsLockIndicatorTintMode", default: .white)
static let didMigrateCapsLockTintMode = Key<Bool>("didMigrateCapsLockTintMode", default: false)
static let showCapsLockLabel = Key<Bool>("showCapsLockLabel", default: true)
// MARK: ImageService
@ -793,6 +825,14 @@ extension Defaults.Keys {
normalizeMusicAuxControls()
}
static func migrateCapsLockTintMode() {
guard Defaults[.didMigrateCapsLockTintMode] == false else { return }
let legacyGreen = Defaults[.capsLockIndicatorUseGreenColor]
Defaults[.capsLockIndicatorTintMode] = legacyGreen ? .green : .white
Defaults[.didMigrateCapsLockTintMode] = true
}
static func migrateMusicControlSlots() {
guard Defaults[.didMigrateMusicControlSlots] == false else { return }