macos: encode tab color enumerator codes as 4-bit RGBA hex

pull/12468/head
Tijl Houtbeckers 2026-05-01 11:33:18 +02:00
parent 222fe01593
commit da58eb0a7f
2 changed files with 28 additions and 22 deletions

View File

@ -127,16 +127,23 @@
</record-type>
<enumeration name="tab color" code="GTbC" description="The color of a Ghostty tab.">
<enumerator name="none" code="GTcN" description="No color."/>
<enumerator name="blue" code="GTcB" description="Blue."/>
<enumerator name="purple" code="GTcP" description="Purple."/>
<enumerator name="pink" code="GTcK" description="Pink."/>
<enumerator name="red" code="GTcR" description="Red."/>
<enumerator name="orange" code="GTcO" description="Orange."/>
<enumerator name="yellow" code="GTcY" description="Yellow."/>
<enumerator name="green" code="GTcG" description="Green."/>
<enumerator name="teal" code="GTcT" description="Teal."/>
<enumerator name="graphite" code="GTcX" description="Graphite."/>
<!-- Color enumerators use a 4-bit-per-channel ASCII hex RGBA as their code
(one hex digit per channel: R, G, B, A). Values are the nearest 4-bit
rounding of Apple's published Human Interface Guidelines light-mode
system color hex (https://developer.apple.com/design/human-interface-guidelines/color).
They serve as stable identifiers; the actual rendered color comes from
the corresponding system color and may shift between OS releases.
The "none" enumerator uses a literal code. -->
<enumerator name="none" code="none" description="No color."/>
<enumerator name="blue" code="08FF" description="Blue."/>
<enumerator name="purple" code="C3DF" description="Purple."/>
<enumerator name="pink" code="F35F" description="Pink."/>
<enumerator name="red" code="F34F" description="Red."/>
<enumerator name="orange" code="F82F" description="Orange."/>
<enumerator name="yellow" code="FC0F" description="Yellow."/>
<enumerator name="green" code="3C5F" description="Green."/>
<enumerator name="teal" code="0CBF" description="Teal."/>
<enumerator name="graphite" code="889F" description="Graphite."/>
</enumeration>
<enumeration name="split direction" code="GSpD" description="Direction for a new split.">

View File

@ -203,21 +203,20 @@ extension ScriptTab {
}
/// Maps `TerminalTabColor` to and from the `tab color` enumeration in `Ghostty.sdef`.
///
/// Cocoa scripting passes enumerator FourCharCodes as integers via KVC.
/// See `Ghostty.sdef` for how the codes are derived.
private extension TerminalTabColor {
var appleScriptCode: UInt32 {
switch self {
case .none: "GTcN".fourCharCode
case .blue: "GTcB".fourCharCode
case .purple: "GTcP".fourCharCode
case .pink: "GTcK".fourCharCode
case .red: "GTcR".fourCharCode
case .orange: "GTcO".fourCharCode
case .yellow: "GTcY".fourCharCode
case .green: "GTcG".fourCharCode
case .teal: "GTcT".fourCharCode
case .graphite: "GTcX".fourCharCode
case .none: "none".fourCharCode
case .blue: "08FF".fourCharCode
case .purple: "C3DF".fourCharCode
case .pink: "F35F".fourCharCode
case .red: "F34F".fourCharCode
case .orange: "F82F".fourCharCode
case .yellow: "FC0F".fourCharCode
case .green: "3C5F".fourCharCode
case .teal: "0CBF".fourCharCode
case .graphite: "889F".fourCharCode
}
}