如何使用Applescript(或命令行)获取加载的监视器颜色配置文件



有没有办法用Applescript检索加载的监视器颜色配置文件,或者至少用命令行检索,因为我可以在Applescript中使用命令行?我说的是所有插入显示器的加载颜色配置文件,即"系统首选项->显示->颜色"中定义的显示器

编辑:我想获得ICC配置文件的名称,即在"系统首选项"->显示->颜色"中为每个连接的屏幕选择的名称。

尝试以下任一项:

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

您可以在Image Suite下的Image Events字典中获得更多(但不是很多(详细信息。

显示器0和显示器1似乎都产生了相同的结果(内置显示器(。显示器2是指外部显示器。我有一个非常简单的设置,所以根据你的设置,你可能需要进行实验。

如果您想将显示名称与其颜色配置文件相匹配,那么在Catalina之前的系统中,获取显示名称是主要问题,但可以对system_profiler实用程序的结果进行处理,以获取早期系统中的名称。一个小的AppleScriptObjC将获得其余部分:

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文档对列表中的主屏幕进行了讨论。

我没有在这里提出任何技术建议,因为我没有资格这样做,你们所做的工作给我留下了深刻的印象。

我理解windows CM(颜色管理(的方式是,虽然许多设备(包括纸张(的许多配置文件都保存在适当的文件夹中,但只有一个可以用作系统配置文件。对于监视器配置文件,只需要"设置"为系统配置文件的内容。如果创建了新的监控器配置文件(通过校准(,则该系统配置文件将被替换。

相关内容

  • 没有找到相关文章

最新更新