Skip to content

Instantly share code, notes, and snippets.

@jcarpenter

jcarpenter/swift Secret

Last active April 1, 2022 20:36
Show Gist options
  • Save jcarpenter/5f9dab8736155849bcb0703fd7cb478f to your computer and use it in GitHub Desktop.
Save jcarpenter/5f9dab8736155849bcb0703fd7cb478f to your computer and use it in GitHub Desktop.
Output system colors from macOS
import Cocoa
class ViewController: NSViewController {
// ---------- On load... ----------
override func viewDidLoad() {
super.viewDidLoad()
print("\n/* -------------- System Colors -------------- */\n")
// See: https://developer.apple.com/design/human-interface-guidelines/macos/visual-design/color/#system-colors
print("systemBlue:", NSColor.systemBlue.rgbaCssString)
print("systemBrown:", NSColor.systemBrown.rgbaCssString)
print("systemGray:", NSColor.systemGray.rgbaCssString)
print("systemGreen:", NSColor.systemGreen.rgbaCssString)
print("systemIndigo:", NSColor.systemIndigo.rgbaCssString)
print("systemOrange:", NSColor.systemOrange.rgbaCssString)
print("systemPink:", NSColor.systemPink.rgbaCssString)
print("systemPurple:", NSColor.systemPurple.rgbaCssString)
print("systemRed:", NSColor.systemRed.rgbaCssString)
print("systemTeal:", NSColor.systemTeal.rgbaCssString)
print("systemYellow:", NSColor.systemYellow.rgbaCssString)
print("\n/* -------------- Dynamic System Colors -------------- */\n")
// See: https://developer.apple.com/design/human-interface-guidelines/macos/visual-design/color/#dynamic-system-colors
print("\n/* Labels */\n")
print("labelColor:", NSColor.labelColor.rgbaCssString)
print("secondaryLabelColor:", NSColor.secondaryLabelColor.rgbaCssString)
print("tertiaryLabelColor:", NSColor.tertiaryLabelColor.rgbaCssString)
print("quaternaryLabelColor:", NSColor.quaternaryLabelColor.rgbaCssString)
print("\n/* Text */\n")
print("textColor:", NSColor.textColor.rgbaCssString)
print("placeholderTextColor:", NSColor.placeholderTextColor.rgbaCssString)
print("selectedTextColor:", NSColor.selectedTextColor.rgbaCssString)
print("textBackgroundColor:", NSColor.textBackgroundColor.rgbaCssString)
print("selectedTextBackgroundColor:", NSColor.selectedTextBackgroundColor.rgbaCssString)
print("keyboardFocusIndicatorColor:", NSColor.keyboardFocusIndicatorColor.rgbaCssString)
print("unemphasizedSelectedTextColor:", NSColor.unemphasizedSelectedTextColor.rgbaCssString)
print("unemphasizedSelectedTextBackgroundColor:", NSColor.unemphasizedSelectedTextBackgroundColor.rgbaCssString)
print("\n/* Content */\n")
print("linkColor:", NSColor.linkColor.rgbaCssString)
print("separatorColor:", NSColor.separatorColor.rgbaCssString)
print("selectedContentBackgroundColor:", NSColor.selectedContentBackgroundColor.rgbaCssString)
print("unemphasizedSelectedContentBackgroundColor:", NSColor.unemphasizedSelectedContentBackgroundColor.rgbaCssString)
print("\n/* Menus */\n")
print("selectedMenuItemTextColor:", NSColor.selectedMenuItemTextColor.rgbaCssString)
print("\n/* Tables */\n")
print("gridColor:", NSColor.gridColor.rgbaCssString)
print("headerTextColor:", NSColor.headerTextColor.rgbaCssString)
print("\n/* Controls */\n")
print("controlAccentColor:", NSColor.controlAccentColor.rgbaCssString)
print("controlColor:", NSColor.controlColor.rgbaCssString)
print("controlBackgroundColor:", NSColor.controlBackgroundColor.rgbaCssString)
print("controlTextColor:", NSColor.controlTextColor.rgbaCssString)
print("disabledControlTextColor:", NSColor.disabledControlTextColor.rgbaCssString)
// print("currentControlTint:", NSControlTint.currentControlTint.)
print("selectedControlColor:", NSColor.selectedControlColor.rgbaCssString)
print("selectedControlTextColor:", NSColor.selectedControlTextColor.rgbaCssString)
print("alternateSelectedControlTextColor:", NSColor.alternateSelectedControlTextColor.rgbaCssString)
print("\n/* Windows */\n")
print("windowBackgroundColor:", NSColor.windowBackgroundColor.rgbaCssString)
print("windowFrameTextColor:", NSColor.windowFrameTextColor.rgbaCssString)
print("\n/* Highlights & Shadows */\n")
print("findHighlightColor:", NSColor.findHighlightColor.rgbaCssString)
print("highlightColor:", NSColor.highlightColor.rgbaCssString)
print("shadowColor:", NSColor.shadowColor.rgbaCssString)
}
}
// ---------- NSColor extensions ----------
public extension NSColor {
// Return as RGBA array, e.g.: `255, 76, 100, 0.5`"
// Alpha-rounding code from: https://stackoverflow.com/a/27341001
// String format specifiers per: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1
var rgbaCssString: String {
guard let rgbColor = usingColorSpace(NSColorSpace.deviceRGB) else {
return "FFFFFF"
}
let red = Int(rgbColor.redComponent * 255)
let green = Int(rgbColor.greenComponent * 255)
let blue = Int(rgbColor.blueComponent * 255)
let alpha = String(Double(round(1000 * rgbColor.alphaComponent)/1000))
let rgbaCssString = NSString(format: "%u, %u, %u, %@", red, green, blue, alpha)
return rgbaCssString as String
}
// Return as 6-digit RGB hex, e.g. `CC0000`
var hexString: String {
guard let rgbColor = usingColorSpace(NSColorSpace.deviceRGB) else {
return "FFFFFF"
}
let red = Int(round(rgbColor.redComponent * 0xFF))
let green = Int(round(rgbColor.greenComponent * 0xFF))
let blue = Int(round(rgbColor.blueComponent * 0xFF))
let hexString = NSString(format: "%02X%02X%02X", red, green, blue)
return hexString as String
}
}
@jcarpenter
Copy link
Author

To use, create new project in XCode:

  • File > New > Project
  • macOS > App
  • Interface: Storyboard, Language: Swift

Paste the above into ViewController, save, then run. Values will output to debug console.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment