diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 77785e0..9d91b77 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 7182
+ 7184
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/Support/CustomHUD.swift b/MonitorControl/Support/CustomHUD.swift
index 8720ab8..47c47dd 100644
--- a/MonitorControl/Support/CustomHUD.swift
+++ b/MonitorControl/Support/CustomHUD.swift
@@ -40,8 +40,8 @@ class CustomHUDManager {
private func createHUDWindow(displayID: CGDirectDisplayID) -> NSWindow {
let window = NSPanel(
- contentRect: NSRect(x: 0, y: 0, width: 260, height: 56),
- styleMask: [.nonactivatingPanel],
+ contentRect: NSRect(x: 0, y: 0, width: 280, height: 64),
+ styleMask: [.nonactivatingPanel, .fullSizeContentView],
backing: .buffered,
defer: false
)
@@ -56,6 +56,8 @@ class CustomHUDManager {
window.isMovable = false
window.isMovableByWindowBackground = false
window.ignoresMouseEvents = true
+ window.titleVisibility = .hidden
+ window.titlebarAppearsTransparent = true
positionWindow(window, onDisplay: displayID)
@@ -70,7 +72,7 @@ class CustomHUDManager {
// Position at center-bottom of screen, above the dock
let x = screenFrame.origin.x + (screenFrame.width - windowSize.width) / 2
- let y = screenFrame.origin.y + 100 // 100 points from bottom
+ let y = screenFrame.origin.y + 80 // 80 points from bottom for better visibility
window.setFrameOrigin(NSPoint(x: x, y: y))
}
@@ -94,17 +96,16 @@ class CustomHUDManager {
}
private func createHUDContentView(type: HUDType, value: Float, maxValue: Float) -> NSView {
- let w: CGFloat = 260
- let h: CGFloat = 56
+ let w: CGFloat = 280
+ let h: CGFloat = 64
// Wrap the visual effect view in a transparent root view.
- // This ensures the NSWindow doesn't force a square opaque background on the corners.
let rootView = NSView(frame: NSRect(x: 0, y: 0, width: w, height: h))
rootView.wantsLayer = true
rootView.layer?.backgroundColor = NSColor.clear.cgColor
let containerView = NSVisualEffectView(frame: NSRect(x: 0, y: 0, width: w, height: h))
- containerView.material = .popover
+ containerView.material = .hudWindow
containerView.blendingMode = .behindWindow
containerView.state = .active
containerView.appearance = NSAppearance(named: .vibrantDark)
@@ -112,29 +113,24 @@ class CustomHUDManager {
containerView.layer?.cornerRadius = h / 2
containerView.layer?.masksToBounds = true
- // Add liquid glass edge highlight
- containerView.layer?.borderWidth = 1.0
- containerView.layer?.borderColor = NSColor.white.withAlphaComponent(0.15).cgColor
+ // Add premium liquid glass edge highlight
+ containerView.layer?.borderWidth = 0.5
+ containerView.layer?.borderColor = NSColor.white.withAlphaComponent(0.25).cgColor
rootView.addSubview(containerView)
- let iconSize: CGFloat = 26
- let iconView = NSImageView(frame: NSRect(x: 18, y: (h - iconSize) / 2, width: iconSize, height: iconSize))
+ let iconSize: CGFloat = 24
+ let iconView = NSImageView(frame: NSRect(x: 20, y: (h - iconSize) / 2, width: iconSize, height: iconSize))
iconView.imageScaling = .scaleProportionallyDown
iconView.wantsLayer = true
iconView.layer?.isOpaque = false
iconView.layer?.backgroundColor = NSColor.clear.cgColor
+
if #available(macOS 11.0, *) {
if let icon = NSImage(systemSymbolName: type.iconSystemName, accessibilityDescription: nil) {
- if #available(macOS 12.0, *) {
- let base = NSImage.SymbolConfiguration(pointSize: iconSize * 0.85, weight: .semibold)
- let palette = NSImage.SymbolConfiguration(paletteColors: [type.iconNSColor])
- iconView.image = icon.withSymbolConfiguration(base.applying(palette))
- iconView.contentTintColor = nil
- } else {
- iconView.image = icon
- iconView.contentTintColor = type.iconNSColor
- }
+ let config = NSImage.SymbolConfiguration(pointSize: iconSize * 0.9, weight: .bold)
+ iconView.image = icon.withSymbolConfiguration(config)
+ iconView.contentTintColor = .white
}
} else {
let fallbackIcon: String
@@ -145,38 +141,32 @@ class CustomHUDManager {
case .contrast: fallbackIcon = NSImage.touchBarColorPickerFillName
}
iconView.image = NSImage(named: fallbackIcon)
- iconView.contentTintColor = type.iconNSColor
+ iconView.contentTintColor = .white
}
containerView.addSubview(iconView)
- let barX: CGFloat = 18 + iconSize + 12
- let barW: CGFloat = w - barX - 74
- let barH: CGFloat = 10
+ // Thick Liquid Slider
+ let barX: CGFloat = 20 + iconSize + 16
+ let barW: CGFloat = w - barX - 24 // More compact, no trailing percentage label by default
+ let barH: CGFloat = 32 // Thicker, liquid-style bar
let barY = (h - barH) / 2
let progressBg = NSBox(frame: NSRect(x: barX, y: barY, width: barW, height: barH))
progressBg.boxType = .custom
progressBg.borderType = .noBorder
- progressBg.fillColor = NSColor.white.withAlphaComponent(0.22)
+ progressBg.fillColor = NSColor.white.withAlphaComponent(0.15)
progressBg.cornerRadius = barH / 2
containerView.addSubview(progressBg)
let normalizedValue = CGFloat(min(max(value / maxValue, 0), 1))
- let progressFill = NSBox(frame: NSRect(x: barX, y: barY, width: max(barH, barW * normalizedValue), height: barH))
+ let fillWidth = max(barH, barW * normalizedValue)
+ let progressFill = NSBox(frame: NSRect(x: barX, y: barY, width: fillWidth, height: barH))
progressFill.boxType = .custom
progressFill.borderType = .noBorder
- progressFill.fillColor = NSColor.white.withAlphaComponent(0.85)
+ progressFill.fillColor = NSColor.white.withAlphaComponent(0.9)
progressFill.cornerRadius = barH / 2
containerView.addSubview(progressFill)
- let percentage = Int(normalizedValue * 100)
- let label = NSTextField(labelWithString: "\(percentage)%")
- label.frame = NSRect(x: barX + barW + 12, y: (h - 22) / 2, width: 44, height: 22)
- label.font = NSFont.monospacedDigitSystemFont(ofSize: 15, weight: .semibold)
- label.textColor = .white
- label.alignment = .right
- containerView.addSubview(label)
-
return rootView
}
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index 5af0012..a17ee8c 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 7182
+ 7184
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly