Как загрузить загруженный цветовой профиль монитора с помощью Applescript (или командной строки)? - PullRequest
1 голос
/ 22 февраля 2020

Есть ли способ восстановить загруженный цветовой профиль мониторов с помощью Applescript или, по крайней мере, с помощью командной строки, поскольку я могу использовать командную строку в Applescript? Я говорю о загруженном цветовом профиле всех подключенных мониторов, определенных в «Системных настройках -> дисплеи -> цвет»

РЕДАКТИРОВАТЬ : я хотел бы получить имя профиль I CC, т.е. то, что выбрано в «Системных настройках» -> дисплеи -> цвет »для каждого подключенного экрана.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2020

Попробуйте выполнить одно из следующих действий:

tell application "Image Events" to display profile of displays as list
tell application "Image Events" to display profile of display 1

Вы можете получить больше (но не много) подробностей в словаре событий изображения в Image Suite.

Отображение 0 и Дисплея 1, кажется, оба производить тот же результат (встроенный дисплей). Дисплей 2 будет относиться к внешнему дисплею. У меня очень простая настройка, поэтому, в зависимости от вашей, вам, возможно, придется поэкспериментировать.

0 голосов
/ 24 февраля 2020

Получение отображаемого имени является основной проблемой в системах, предшествующих Catalina, если вы хотите сопоставить отображаемые имена с их цветовыми профилями, но результаты из утилиты system_profiler могут быть обработаны для получения имен в более ранних системах. Небольшой AppleScriptObj C получит остальное:

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

on run -- example
    set screenProfiles to ""
    set theScreens to current application's NSScreen's screens
    set displayNames to getDisplayNames(theScreens) -- handle older systems
    repeat with i from 1 to (count theScreens)
        set profile to localizedName of colorSpace of item i of theScreens
        set displayName to item i of displayNames
        set screenProfiles to screenProfiles & "Name:   " & displayName & return & "Profile:    " & profile & return & return
    end repeat
    display dialog screenProfiles with title "Screen Color Profiles"
end run

to getDisplayNames(screenList)
    set theNames to {}
    if (get system attribute "sys2") > 14 then -- 10.15 Catalina and later
        repeat with screen in screenList
            set end of theNames to localizedName of screen
        end repeat
    else -- munge system profiler data
        set displayKey to "<key>_IODisplayEDID</key>"
        set nameKey to "<key>_name</key>" & return & tab & tab & tab & tab & tab & tab & "<string>"
        set displayInfo to do shell script "system_profiler -xml SPDisplaysDataType"
        set {tempTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, displayKey}
        set {displayItems, AppleScript's text item delimiters} to {text items of displayInfo, tempTID}
        repeat with anItem in rest of displayItems
            set here to (offset of nameKey in anItem) + (length of nameKey)
            set there to (offset of "</string>" in (text here thru -1 of anItem)) - 1
            set end of theNames to text here thru (here + there - 1) of anItem
        end repeat
    end if
    return theNames
end getDisplayNames

В документации NSScreen есть обсуждение основного экрана в списке.

...