7 votos

¿Cómo se colorschemes representado en OS X Terminal.la Configuración de la aplicación los Archivos?

Estoy interesado en el movimiento de los valores de color que he creado para OS X de la Terminal para aplicaciones en otras plataformas, como Linux. Estoy familiarizado con los métodos habituales de representación de los valores de color como RGB, HSB, L*a*B, HEX, etc. Sin embargo, el <data> cadenas que se usan en la Terminal de los archivos de configuración son a diferencia de otros métodos que se utilizan para definir los colores. Me gustaría ayudar a la comprensión de este XML <data> tipo en relación con otros valores de color.

Como un ejemplo, he utilizado la de OS X, la incorporada en el Selector de Color para cambiar manualmente defecto del Terminal ANSI esquema con los valores HSB de Ethan Schoonover excelente Solarizar. Entonces me guarda los ajustes en un archivo XML .plist llamado Solarized Dark xterm-256color.terminal (El contenido de ese archivo se puede encontrar aquí.)

Me eligió arbitrariamente brblack de ese archivo como un único valor de color para la comparación:

    <key>ANSIBrightBlackColor</key>
    <data>
    YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
    AAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NOMCAw
    LjE2NDUgMC4yMQAQAoAC0hAREhNaJGNsYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIU
    WE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2Jx
    c3V6hY6WmaK0t7wAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAvg==
    </data>

Esto se ve mucho diferente (y más complejo) que la simple HSB valor 193 100 21 tomado de Schoonover de la tabla:

    SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      RGB         HSB
    --------- ------- ---- -------  ----------- ---------- ----------- -----------
    base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
    ...

¿Por qué el simple valor 193 100 21 se convierte en una cadena de datos 5 líneas de tiempo? ¿Qué otra información está contenida en esa cadena? Finalmente, y más importante, ¿cómo puedo convertir una cadena en simple estándar de los valores de color que puedo usar en otras plataformas?

6voto

Fuzzy Purple Monkey Puntos 702

bplist significa binario lista de propiedades, que se pueden convertir a XML con plutil -convert xml1. Dentro de cada plist para un color es otro de los datos clave para las fracciones de los valores RGB.

/usr/libexec/PlistBuddy -x -c 'Print "Window Settings":"My Theme"' ~/Library/Preferences/com.apple.Terminal.plist|tr -d '\n\t'|grep -o '[^>]*</key><data>[^<]*'|while read l;do echo ${l%%<*} $(base64 -D<<<${l##*>}|plutil -convert xml1 - -o -|awk '/<data>/{getline;print}'|tr -d '\t'|base64 -D);done

La salida se parece a esto:

ANSIBlueColor 0.4769933663 0.4769933663 0.9314516129
ANSICyanColor 0.2666655827 0.8165705831 0.8588709677
ANSIGreenColor 0.428833897 0.8508064516 0.490967087
ANSIMagentaColor 0.9072580645 0.4499707336 0.9072580645
ANSIRedColor 0.9072580645 0.508503512 0.508503512
ANSIYellowColor 0.9072580645 0.9072580645 0.3914379553
CursorColor 0.9998760223 0.999984026 0.999786377
SelectionColor 0.3899414837 0.4639441073 0.5917825699
TextBoldColor 0.9441435337 0.4102420509 0.427282244
TextColor 1 0.99997437 0.9999912977

3voto

Aaron Klap Puntos 76

Usted está buscando en base64 codificado de datos serializados.

Base64 + serializado original:

 YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
AAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NOMCAw
LjE2NDUgMC4yMQAQAoAC0hAREhNaJGNsYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIU
WE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2Jx
c3V6hY6WmaK0t7wAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAvg==

El uso de algo como http://www.base64decode.org/, se puede ver el decodificado de la versión:

bplist00X$versionX$objectsY$archiverT$topU$null    
UNSRGB\NSColorSpaceV$classN0 0.1645 0.21Z$classnameX$classesWNSColorXNSObject_NSKeyedArchiverTroot#-27;AHN[bqsuz

En este punto, la parte interesante es: NSKeyedArchiver que es el construido-en la serialización de motor en Objective-C, que por supuesto, OSX aplicaciones se escriben en.

En cuanto a la pregunta detrás de la pregunta, de cómo convertir entre este y otro estándar de representación de color: La respuesta es, por desgracia, no fácilmente o de forma fiable.

Es claro que usted sabe cómo tomar una HSB valor y generar los datos codificados. Si quería tomar el tiempo para hacer ingeniería inversa de cómo el archivo sucede, usted sería capaz de hacerlo. No estoy seguro de lo que su familiaridad con el objetivo de lenguaje c es, pero que probablemente podría hacer un simple programa que convierte entre los dos. Esencialmente, probablemente no vale la pena su tiempo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X