/usr/share/doc/displaycal/README.html is in dispcalgui 3.1.0.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 | <!DOCTYPE html>
<!--[if lte IE 8 ]>
<html xmlns="http://www.w3.org/1999/xhtml" class="ie_lte_8">
<![endif]-->
<!--[if (gt IE 8)|!(IE) ]><!-->
<html xmlns="http://www.w3.org/1999/xhtml">
<!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<title>DisplayCAL (formerly known as dispcalGUI)—Open Source Display Calibration and Characterization powered by Argyll CMS</title>
<meta name="description" content="A graphical front-end for display calibration and profiling using Argyll CMS" />
<link rel="shortcut icon" href="theme/icons/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="http://displaycal.net/shariff/shariff.complete.css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato%3A400%2C700%2C900%2C400italic%2C700italic&subset=latin%2Clatin-ext" type="text/css" media="all" />
<link rel="stylesheet" href="theme/readme.css?ts=2015-12-23T03:39" />
<link rel="stylesheet" href="theme/slimbox2/slimbox2.css?ts=2015-09-01T12:44" />
<link rel="stylesheet" href="theme/prism.css" />
<script type="text/javascript" src="theme/jquery.js"></script>
<script type="text/javascript" src="theme/jquery.scrollTo.js"></script>
<script type="text/javascript" src="theme/jquery.localscroll.js"></script>
<script type="text/javascript" src="theme/slimbox2/slimbox2.js?ts=2015-09-01T14:54"></script>
<script type="text/javascript" src="theme/readme.js?ts=2015-10-01T02:21"></script>
</head>
<body>
<div id="header">
<div id="title-wrapper">
<div id="title">
<h1><img src="theme/icon-reflection.png" alt="" /> <a href="http://displaycal.net/"><span class="appname">Display<span>CAL</span></span></a><span><span class="dash">—</span>Formerly known as dispcalGUI<br />Open Source Display Calibration and Characterization powered by <a href="http://argyllcms.com">Argyll CMS</a></span></h1>
<p class="shariff" data-lang="en" data-services="["facebook","googleplus","linkedin","twitter","info"]" data-theme="white" data-backend-url="http://displaycal.net/shariff/index.php" data-url="http://displaycal.net/" data-info-url="https://github.com/heiseonline/shariff"></p>
</div>
<div id="site-navigation">
<ul>
<li><a href="http://displaycal.net/news/">News</a></li>
<li><a href="http://displaycal.net/forums/">Forums</a></li>
<li><a href="http://displaycal.net/issues/">Issue Tracker</a></li>
<li><a href="http://displaycal.net/wiki/">Wiki</a></li>
</ul>
</div>
</div>
<div id="header-inner-overlay"></div>
</div>
<div id="intro">
<div id="friendlybox">
<div id="get">
<h2 id="version">3.1 </h2>
<p>2016-02-01 00:32 UTC</p>
<ul>
<li class="download"><a href="#download">Get DisplayCAL</a></li>
<li class="requirements"><a href="#requirements">System requirements</a></li>
<li class="changelog"><a href="#changelog">What's new in this version</a></li>
</ul>
</div>
<ul class="complementary">
<li class="about"><a href="#about">About</a></li>
<li class="quickstart"><a href="#quickstart">Quickstart guide</a></li>
<li class="toc"><a href="#toc">Documentation</a></li>
<li class="help"><a href="#help">Get help</a></li>
<li class="reportbug"><a href="#reportbug">Report a bug</a></li>
<li class="donate"><a href="#donate">Contribute</a></li>
</ul>
</div>
<p id="teaser">
<a href="#screenshots" title="View screenshots"><img src="theme/DisplayCAL-adjust-reflection.png" alt="" /></a>
</p>
</div>
<div id="donation-box">
<div id="donate">
<h2 style="margin-top: 0">Your support is appreciated!</h2>
<p>If you would like to support the development of, technical assistance with, and continued availability of DisplayCAL and Argyll CMS, please consider a financial contribution.
As DisplayCAL wouldn't be useful without Argyll CMS, all contributions received for DisplayCAL will be split between both projects.<br />
For light personal non-commercial use, a one-time contribution may be appropriate.
If you're using DisplayCAL professionally, an annual or monthly contribution would make a great deal of difference in ensuring that both projects continue to be available.</p>
<p>If you have decided to contribute (many thanks!), but you'd like to give to <a href="http://argyllcms.com">Argyll CMS</a> directly on your own behalf (visit <a href="http://argyllcms.com">argyllcms.com</a> and scroll down a bit to get to its contribution links), please leave a note on your DisplayCAL contribution if contributing to both projects. Please note that if your contribution should be put towards adding a certain feature in Argyll CMS, like support for a specific instrument, it will be more appropriate and efficient to <a href="http://argyllcms.com">contribute to Argyll CMS only</a>, and directly.</p>
<form id="donationform" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<p>
Contribute using PayPal:
<input type="hidden" name="cmd" value="_donations" />
<input id="donationform_business" type="hidden" name="business" value="" />
<input type="hidden" name="item_name" value="Contribution to Florian Hoech/DisplayCAL" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="lc" value="US" />
<INPUT TYPE="hidden" NAME="return" value="http://displaycal.net/contribution_thank_you.html">
<select name="amount">
<option disabled="disabled">Home / Enthusiast Use</option>
<option value="10">10</option>
<option value="20" selected="selected">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
<option value="75">75</option>
<option disabled="disabled">Professional / Business Use</option>
<option value="100">100</option>
<option value="150">150</option>
<option value="200">200</option>
<option value="250">250</option>
<option value="300">300</option>
<option value="350">350</option>
</select>
<select name="currency_code">
<option value="EUR" selected="selected">€ Euro</option>
<option value="GBP">£ Pound</option>
<option value="AUD">$ Australian Dollar</option>
<option value="CAD">$ Canadian Dollar</option>
<option value="USD">$ US Dollar</option>
</select>
<button type="submit" class="paypal">Contribute</button>
<button type="button" class="paypal" onclick="location.href = document.forms['donationform'].action + '?cmd=_donations&lc=' + document.forms['donationform'].elements['lc'].value + '&business=' + encodeURIComponent(document.forms['donationform'].elements['business'].value) + '&item_name=' + encodeURIComponent(document.forms['donationform'].elements['item_name'].value) + '&no_shipping=1&currency_code=' + document.forms['donationform'].elements['currency_code'].value">Own amount</button>
</p>
</form>
<script type="text/javascript">
//<![CDATA[
(function () {
var btns = document.getElementsByTagName('button'), i;
for (i = 0; i < btns.length; i ++) {
btns[i].style.visibility = 'hidden';
}
setTimeout(function () {
document.getElementById('donationform_business').value = ['displaycal.net', 'contribute'].reverse().join('\x40');
for (i = 0; i < btns.length; i ++) {
btns[i].style.visibility = 'visible';
}
}, 3000);
})();
//]]>
</script>
<span>(For other means of contributing, please contact me under <a>florian ‹at› displaycal . net</a>)</span>
<p><a href="#thanks">Thanks to all contributors!</a></p>
<p>Special thanks to the following people and organizations:</p>
<p><a href="https://uptimepal.net"><img src="http://dispcalgui.hoech.net/img/uptimepal-logo-icon-only-22.png" alt="" style="vertical-align: bottom" /></a> <a href="https://uptimepal.net">Uptime Pal - Website Monitoring</a></p>
<p>Riley Brandt Photography—<a href="http://www.rileybrandt.com/lessons/">The Open Source Photography Course</a></p>
</div>
</div>
<div class="infobox" style="margin-top: 78px">
<p><a href="http://argyllcms.com/pro/" title="ArgyllPRO ColorMeter"><img src="http://displaycal.net/img/argyllpro-small.png" alt="" style="float: left; margin-left: -38px; margin-right: 8px; margin-top: -64px" /></a> <strong>If you'd like to measure color on the go</strong>, you may also be interested in <a href="http://argyllcms.com/pro/"><strong>ArgyllPRO ColorMeter</strong></a> by Graeme Gill, author of Argyll CMS. <strong>Available for Android</strong> from the Google Play store. <a href="http://youtu.be/ODfCoUH0euQ" title="ArgyllPRO ColorMeter 2 Minute Overview + Guided Tour Video">Check out the 2 Minute Overview + Guided Tour Video.</a></p>
</div>
<div id="content">
<div id="toc">
<h2>Table of contents</h2>
<ul>
<li><a href="#about">About DisplayCAL</a>
</li>
<li><a href="#disclaimer">Disclaimer</a></li>
<li><a href="#download">Download</a></li>
<li><a href="#quickstart">Quickstart guide</a></li>
<li><a href="#requirements">System requirements and other prerequisites</a>
<ul>
<li><a href="#requirements">General system requirements</a></li>
<li><a href="#argyll">Argyll CMS</a></li>
<li><a href="#instruments">Supported instruments</a></li>
<li><a href="#requirements-unattended">Additional requirements for unattended calibration and profiling</a></li>
<li><a href="#requirements-source">Additional requirements for using the source code</a></li>
</ul>
</li>
<li><a href="#install">Installation</a></li>
<li><a href="#concept">Basic concept of display calibration</a></li>
<li><a href="#colorimeter-corrections">A note about colorimeters, displays and DisplayCAL</a></li>
<li><a href="#usage">Usage</a>
<ul>
<li><a href="#usage">General usage</a></li>
<li><a href="#settingsfile">Settings</a></li>
<li><a href="#presets">Predefined settings (presets)</a></li>
<li><a href="#display_instrument">Choosing a display and measurement device</a></li>
<li><a href="#settings_calibration">Calibration settings</a></li>
<li><a href="#settings_profiling">Profiling settings</a></li>
<li><a href="#testchart_editor">Testchart editor</a></li>
<li><a href="#calibrating">Calibrating / profiling</a></li>
<li><a href="#create-3dlut">Creating 3D LUTs</a></li>
<li><a href="#verify-profile">Verification / measurement report</a></li>
<li><a href="#special">Special functionality</a>
<ul>
<li><a href="#special">Overview of special functionality</a></li>
<li><a href="#remote">Remote measurements and profiling</a></li>
<li><a href="#madvr">madVR test pattern generator</a></li>
<li><a href="#resolve">Resolve (10.1+) as pattern generator</a></li>
<li><a href="#untethered">Untethered display measurement and profiling</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#menu">Menu commands</a>
<ul>
<li><a href="#menu">List of menu commands</a></li>
<li><a href="#menu-file">File menu</a></li>
<li><a href="#menu-options">Options menu</a></li>
<li><a href="#menu-tools">Tools menu</a></li>
<li><a href="#menu-lang">Language menu</a></li>
</ul>
</li>
<li><a href="#scripting">Scripting</a></li>
<li><a href="#userdata">User data and configuration file locations</a></li>
<li><a href="#issues">Known issues & solutions</a></li>
<li><a href="#help">Get help</a></li>
<li><a href="#reportbug">Report a bug</a></li>
<li><a href="#discuss">Discussion</a></li>
<li><a href="#todo">To-Do / planned features</a></li>
<li><a href="#thanks">Thanks and acknowledgements</a></li>
<li><a href="#changelog">Version history / changelog</a></li>
<li><a href="#definitions">Definitions</a></li>
</ul>
</div>
<div id="about">
<h2>About DisplayCAL</h2>
<p>DisplayCAL is a graphical user interface developed by Florian Höch for the display calibration and profiling tools of <a href="http://argyllcms.com">Argyll CMS</a>, an open source color management system developed by Graeme Gill.</p>
<p>Calibrate and characterize your display devices using one of the <a href="#instruments">many supported hardware sensors</a>, with support for multi-display setups and a variety of available settings like customizable whitepoint, luminance, tone response curve as well as the option to create matrix and look-up-table ICC profiles, with optional gamut mapping, as well as some proprietary 3D LUT formats. Other features include:</p>
<ul>
<li>Support of colorimeter correction for different screens via <em>correction matrices</em> or <em>calibration specral sample</em> files (the latter only for specific colorimeters i.e. i1 Display Pro, ColorMunki Display and Spyder 4/5).</li>
<li>Profile verification and measurement report: Check the quality of profiles and 3D LUTs via measurements. Also supports custom CGATS files (e.g. FOGRA, GRACoL/IDEAlliance, SWOP) and using of reference profiles to obtain test values.</li>
<li>Test chart editor: Create charts with any amount of color patches, easy copy & paste from CGATS, CSV files (only tab-delimited) and spreadsheet applications.</li>
<li>Create synthetic ICC (matrix) profiles with custom primaries, white- and blackpoint as well as tone response.</li>
</ul>
<div id="screenshots">
<h3>Screenshots</h3>
<p>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME.png" class="imagelink" data-lightbox="lightbox-set" title="Display & instrument settings"><img src="screenshots/DisplayCAL-screenshot-GNOME-thumb.png" alt="" class="opaque" /></a><br />
<small>Display & instrument settings</small><br /></span>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME-calibration-settings.png" class="imagelink" data-lightbox="lightbox-set" title="Calibration settings"><img src="screenshots/DisplayCAL-screenshot-GNOME-calibration-settings-thumb.png" alt="" class="opaque" /></a><br />
<small>Calibration settings</small><br /></span>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME-profiling-settings.png" class="imagelink" data-lightbox="lightbox-set" title="Profiling settings"><img src="screenshots/DisplayCAL-screenshot-GNOME-profiling-settings-thumb.png" alt="" class="opaque" /></a><br />
<small>Profiling settings</small><br /></span>
</p>
<p>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME-3DLUT-settings.png" class="imagelink" data-lightbox="lightbox-set" title="3D LUT settings"><img src="screenshots/DisplayCAL-screenshot-GNOME-3DLUT-settings-thumb.png" alt="" class="opaque" /></a><br />
<small>3D LUT settings</small><br /></span>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME-verification-settings.png" class="imagelink" data-lightbox="lightbox-set" title="Verification settings"><img src="screenshots/DisplayCAL-screenshot-GNOME-verification-settings-thumb.png" alt="" class="opaque" /></a><br />
<small>Verification settings</small><br /></span>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME-edit-testchart.png" class="imagelink" data-lightbox="lightbox-set" title="Testchart editor"><img src="screenshots/DisplayCAL-screenshot-GNOME-edit-testchart-thumb.png" alt="" class="opaque" /></a><br />
<small>Testchart editor</small><br /></span>
</p>
<p>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME-adjust.png" class="imagelink" data-lightbox="lightbox-set" title="Display adjustment"><img src="screenshots/DisplayCAL-screenshot-GNOME-adjust-thumb.png" alt="" class="opaque" /></a><br />
<small>Display adjustment</small><br /></span>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME-profile-information.png" class="imagelink" data-lightbox="lightbox-set" title="Profile information"><img src="screenshots/DisplayCAL-screenshot-GNOME-profile-information-thumb.png" alt="" class="opaque" /></a><br />
<small>Profile information</small><br /></span>
<span><a href="screenshots/DisplayCAL-screenshot-GNOME-view-curves.png" class="imagelink" data-lightbox="lightbox-set" title="Calibration curves"><img src="screenshots/DisplayCAL-screenshot-GNOME-view-curves-thumb.png" alt="" class="opaque" /></a><br />
<small>Calibration curves</small><br /></span>
</p>
<p>
<span><a href="screenshots/DisplayCAL-screenshot-KDE4.png" class="imagelink" data-lightbox="lightbox-set" title="DisplayCAL running under Linux with KDE4"><img src="screenshots/DisplayCAL-screenshot-KDE4-thumb.png" alt="" class="opaque" /></a><br />
<small>KDE4</small><br /></span>
<span><a href="screenshots/DisplayCAL-screenshot-Mac.png" class="imagelink" data-lightbox="lightbox-set" title="DisplayCAL running under Mac OS X"><img src="screenshots/DisplayCAL-screenshot-Mac-thumb.png" alt="" class="opaque" /></a><br />
<small>Mac OS X</small><br /></span>
<span><a href="screenshots/DisplayCAL-screenshot-Win10.png" class="imagelink" data-lightbox="lightbox-set" title="DisplayCAL running under Windows 10"><img src="screenshots/DisplayCAL-screenshot-Win10-thumb.png" alt="" class="opaque" /></a><br />
<small>Windows 10</small><br /></span>
</p>
</div>
</div>
<div id="disclaimer">
<h2>Disclaimer</h2>
<p>This program is free software; you can redistribute it and/or modify it
under the terms of the <a href="LICENSE.txt">GNU General Public License</a> as published by the
<a href="http://fsf.org/">Free Software Foundation</a>; either <a href="LICENSE.txt">version 3 of the License</a>, or (at your
option) any later version.</p>
<p>This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <a href="LICENSE.txt">GNU General Public License</a> for more details.</p>
<p>DisplayCAL is written in <a href="http://python.org/">Python</a> and uses the 3rd-party packages <a href="http://numpy.scipy.org/">NumPy</a>, <a href="http://pypi.python.org/pypi/demjson">demjson</a> (<abbr title="JavaScript Object Notation">JSON<sup><a href="#definition_JSON">[6]</a></sup></abbr> library) and <a href="http://wxpython.org/">wxPython</a> (<abbr title="Graphical User Interface">GUI<sup><a href="#definition_GUI">[4]</a></sup></abbr> toolkit). It also makes extensive use of several <a href="http://argyllcms.com/">Argyll CMS</a> utilities. The build system to create standalone executables additionally uses <a href="http://pypi.python.org/pypi/setuptools">setuptools</a> and <a href="http://pypi.python.org/pypi/py2app">py2app</a> on Mac OS X or <a href="http://pypi.python.org/pypi/py2exe">py2exe</a> on Windows. All of these software packages are © by their respective authors.</p>
</div>
<div id="download">
<h2 id="standalone">Get DisplayCAL standalone</h2>
<ul>
<li>
<h3 id="packages">For Linux</h3>
<div>
<p>Native packages for several distributions are available via <a href="https://build.opensuse.org">openSUSE Build Service</a>:</p>
<ul class="packages">
<li>
<span>Arch Linux</span>
<span><a href="http://displaycal.net/download/Arch_Extra/i686/DisplayCAL.pkg.tar.xz">x86</a> |
<a href="http://displaycal.net/download/Arch_Extra/x86_64/DisplayCAL.pkg.tar.xz">x86_64</a></span>
</li>
<li>
<span>CentOS 6</span>
<span><a href="http://displaycal.net/download/CentOS_CentOS-6/i686/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/CentOS_CentOS-6/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>CentOS 7</span>
<span>
<a href="http://displaycal.net/download/CentOS_CentOS-7/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>Debian 7 (Wheezy)</span>
<span><a href="http://displaycal.net/download/Debian_7.0/i386/DisplayCAL.deb">x86</a> |
<a href="http://displaycal.net/download/Debian_7.0/amd64/DisplayCAL.deb">x86_64</a></span>
</li>
<li>
<span>Debian 8 (Jessie)</span>
<span><a href="http://displaycal.net/download/Debian_8.0/i386/DisplayCAL.deb">x86</a> |
<a href="http://displaycal.net/download/Debian_8.0/amd64/DisplayCAL.deb">x86_64</a></span>
</li>
<li>
<span>Fedora 20</span>
<span><a href="http://displaycal.net/download/Fedora_20/i686/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/Fedora_20/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>Fedora 21</span>
<span><a href="http://displaycal.net/download/Fedora_21/i686/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/Fedora_21/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>Fedora 22</span>
<span><a href="http://displaycal.net/download/Fedora_22/i686/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/Fedora_22/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>Fedora 23</span>
<span><a href="http://displaycal.net/download/Fedora_23/i686/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/Fedora_23/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>openSUSE 13.1</span>
<span><a href="http://displaycal.net/download/openSUSE_13.1/i586/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/openSUSE_13.1/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>openSUSE 13.2</span>
<span><a href="http://displaycal.net/download/openSUSE_13.2/i586/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/openSUSE_13.2/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>openSUSE Leap 42.1</span>
<span>
<a href="http://displaycal.net/download/openSUSE_Leap_42.1/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>openSUSE Factory</span>
<span><a href="http://displaycal.net/download/openSUSE_Factory/i586/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/openSUSE_Factory/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>openSUSE Tumbleweed</span>
<span><a href="http://displaycal.net/download/openSUSE_Tumbleweed/i586/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/openSUSE_Tumbleweed/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>RedHat RHEL 6</span>
<span><a href="http://displaycal.net/download/RedHat_RHEL-6/i686/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/RedHat_RHEL-6/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>RedHat RHEL 7</span>
<span>
<a href="http://displaycal.net/download/RedHat_RHEL-7/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>SLE 11 SP2</span>
<span><a href="http://displaycal.net/download/SLE_11_SP2/i586/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/SLE_11_SP2/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>SLE 11 SP3</span>
<span><a href="http://displaycal.net/download/SLE_11_SP3/i586/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/SLE_11_SP3/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>SLE 11 SP4</span>
<span><a href="http://displaycal.net/download/SLE_11_SP4/i586/DisplayCAL.rpm">x86</a> |
<a href="http://displaycal.net/download/SLE_11_SP4/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>SLE 12</span>
<span>
<a href="http://displaycal.net/download/SLE_12/x86_64/DisplayCAL.rpm">x86_64</a></span>
</li>
<li>
<span>Ubuntu 12.04 (Precise)</span>
<span><a href="http://displaycal.net/download/xUbuntu_12.04/i386/DisplayCAL.deb">x86</a> |
<a href="http://displaycal.net/download/xUbuntu_12.04/amd64/DisplayCAL.deb">x86_64</a></span>
</li>
<li>
<span>Ubuntu 14.04 (Trusty)</span>
<span><a href="http://displaycal.net/download/xUbuntu_14.04/i386/DisplayCAL.deb">x86</a> |
<a href="http://displaycal.net/download/xUbuntu_14.04/amd64/DisplayCAL.deb">x86_64</a></span>
</li>
<li>
<span>Ubuntu 14.10 (Utopic)</span>
<span><a href="http://displaycal.net/download/xUbuntu_14.10/i386/DisplayCAL.deb">x86</a> |
<a href="http://displaycal.net/download/xUbuntu_14.10/amd64/DisplayCAL.deb">x86_64</a></span>
</li>
<li>
<span>Ubuntu 15.04 (Vivid)</span>
<span><a href="http://displaycal.net/download/xUbuntu_15.04/i386/DisplayCAL.deb">x86</a> |
<a href="http://displaycal.net/download/xUbuntu_15.04/amd64/DisplayCAL.deb">x86_64</a></span>
</li>
<li>
<span>Ubuntu 15.10 (Wily)</span>
<span><a href="http://displaycal.net/download/xUbuntu_15.10/i386/DisplayCAL.deb">x86</a> |
<a href="http://displaycal.net/download/xUbuntu_15.10/amd64/DisplayCAL.deb">x86_64</a></span>
</li>
</ul>
<p>Packages made for older distributions may work on newer distributions as long as nothing substantial has changed (i.e. Python version). Also there are several distributions out there that are based on one in the above list (e.g. Linux Mint which is based on Ubuntu). This means that packages for that base distribution should also work on derivatives, you just need to know which version the derivative is based upon and pick your download accordingly.</p>
<p>In all other cases, you can try this universal install that should work on a multitude of distributions (if you use it, please uninstall any already installed version of DisplayCAL first to avoid file conflicts):</p>
<p><a href="http://displaycal.net/download/DisplayCAL.package">Autopackage (Python 2.6 and 2.7, x86 and x86_64)</a></p>
</div>
</li>
<li>
<h3>For Mac OS X (10.5 or newer)</h3>
<div>
<p>
<a href="http://displaycal.net/download/standalone/DisplayCAL.dmg">Disk image</a>
</p>
</div>
</li>
<li>
<h3>For Windows (XP or newer)</h3>
<div>
<p>
<a href="http://displaycal.net/download/standalone/DisplayCAL-Setup.exe">Installer (recommended)</a> or <a href="http://displaycal.net/download/standalone/DisplayCAL-win32.zip">ZIP archive</a>
</p>
</div>
</li>
<li>
<h3>Source code</h3>
<div>
<p>You need to have a working Python installation and all <a href="#requirements-source">requirements</a>.</p>
<p><a href="http://displaycal.net/download/DisplayCAL.tar.gz">Source Tarball</a></p>
<p>
Alternatively, if you don't mind trying out development code, <a href="http://sourceforge.net/p/dispcalgui/code/">browse the </a><abbr title="Subversion"><a href="http://sourceforge.net/p/dispcalgui/code/">SVN</a><sup><a href="#definition_SVN">[8]</a></sup></abbr><a href="http://sourceforge.net/p/dispcalgui/code/"> repository of the latest development version</a> (or do a full checkout using <code>svn checkout svn://svn.code.sf.net/p/dispcalgui/code/trunk displaycal</code>). But please note that the development code might contain bugs or not run at all, or only on some platform(s). Use at your own risk.
</p>
</div>
</li>
</ul>
<p>Please continue with the <a href="#quickstart">Quickstart Guide</a>.</p>
<h2>Get DisplayCAL <!--and Argyll CMS--> via Zero Install</h2>
<ul>
<li>
<h3>Brief introduction to Zero Install</h3>
<div>
<p>(<strong>Note:</strong> Usually you do not have to install Zero Install separately, it is handled automatically by the DisplayCAL downloads linked below. The following paragraph is only informational.)</p>
<p><a href="http://0install.net">Zero Install</a> is a decentralised cross-platform software installation system. The benefits you get from Zero Install are:</p>
<ul>
<li><strong>Always up-to-date.</strong> Zero Install automatically keeps all software updated.</li>
<li><strong>Easily switch between software versions</strong> from within Zero Install if desired.</li>
<li><strong>No administrator rights needed</strong> to add or update software (*).</li>
</ul>
<p class="footnote">* Note: Installing/updating Zero Install itself or software dependencies through the operating system's mechanisms may require administrative privileges.</p>
</div>
</li>
<li>
<h3>For Linux</h3>
<div>
<p>Native packages for several distributions are available via <a href="https://build.opensuse.org">openSUSE Build Service</a>:</p>
<ul class="packages">
<li>
<span></span>
<span><a href="http://displaycal.net/download/Arch_Extra/any/DisplayCAL-0install.pkg.tar.xz">Arch Linux</a> <em>(please see note below)</em></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/CentOS_CentOS-6/noarch/DisplayCAL-0install.rpm">CentOS 6</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/CentOS_CentOS-7/noarch/DisplayCAL-0install.rpm">CentOS 7</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/Debian_7.0/all/DisplayCAL-0install.deb">Debian 7 (Wheezy)</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/Debian_8.0/all/DisplayCAL-0install.deb">Debian 8 (Jessie)</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/Fedora_20/noarch/DisplayCAL-0install.rpm">Fedora 20</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/Fedora_21/noarch/DisplayCAL-0install.rpm">Fedora 21</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/Fedora_22/noarch/DisplayCAL-0install.rpm">Fedora 22</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/Fedora_23/noarch/DisplayCAL-0install.rpm">Fedora 23</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/openSUSE_13.1/noarch/DisplayCAL-0install.rpm">openSUSE 13.1</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/openSUSE_13.2/noarch/DisplayCAL-0install.rpm">openSUSE 13.2</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/openSUSE_Leap_42.1/noarch/DisplayCAL-0install.rpm">openSUSE Leap 42.1</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/openSUSE_Factory/noarch/DisplayCAL-0install.rpm">openSUSE Factory</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/openSUSE_Tumbleweed/noarch/DisplayCAL-0install.rpm">openSUSE Tumbleweed</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/RedHat_RHEL-6/noarch/DisplayCAL-0install.rpm">RedHat RHEL 6</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/RedHat_RHEL-7/noarch/DisplayCAL-0install.rpm">RedHat RHEL 7</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/xUbuntu_12.04/all/DisplayCAL-0install.deb">Ubuntu 12.04 (Precise)</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/xUbuntu_14.04/all/DisplayCAL-0install.deb">Ubuntu 14.04 (Trusty)</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/xUbuntu_14.10/all/DisplayCAL-0install.deb">Ubuntu 14.10 (Utopic)</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/xUbuntu_15.04/all/DisplayCAL-0install.deb">Ubuntu 15.04 (Vivid)</a></span>
</li>
<li>
<span></span>
<span><a href="http://displaycal.net/download/xUbuntu_15.10/all/DisplayCAL-0install.deb">Ubuntu 15.10 (Wily)</a></span>
</li>
</ul>
<div>
<em>Arch Linux note:</em> The zeroinstall-injector 2.6.1 package in AUR is broken. Get a working version here:
</div>
<div>
<a href="http://download.opensuse.org/repositories/home:/fhoech:/0install/Arch_Extra/i686/zeroinstall-injector-2.6.2-1-i686.pkg.tar.xz" title="Zero Install 2.6.2 for Arch Linux (x86)">x86</a> |
<a href="http://download.opensuse.org/repositories/home:/fhoech:/0install/Arch_Extra/x86_64/zeroinstall-injector-2.6.2-1-x86_64.pkg.tar.xz" title="Zero Install 2.6.2 for Arch Linux (x86_64)">x86_64</a>
</div>
<p>Please note:</p>
<ul>
<li><strong>The version number in the package name does not necessarily reflect the DisplayCAL version</strong>.</li>
<!--li><strong>An official Argyll CMS version from ArgyllCMS.com will be used by default</strong> unless the distribution-packaged version is newer, but you can switch to a distribution-packaged version anytime (see <a href="#zeroinstall-updating">“Updating or switching between software versions”</a> below).</li-->
</ul>
<p>Packages made for older distributions may work on newer distributions as long as nothing substantial has changed (i.e. Python version). Also there are several distributions out there that are based on one in the above list (e.g. Linux Mint which is based on Ubuntu). This means that packages for that base distribution should also work on derivatives, you just need to know which version the derivative is based upon and pick your download accordingly. In all other cases, please try the instructions below or one of the <a href="#standalone">standalone installations</a>.</p>
<h4>Alternate installation method</h4>
<p>If your distribution is not listed above, please follow these instructions:</p>
<ol>
<li>Install the <strong>0install</strong> or <strong>zeroinstall-injector</strong> package from your distribution. In case it is not available, there are pre-compiled <a href="http://0install.net/tools/0install.xml">generic binaries</a>. Download the appropriate archive for your system, unpack it, <code>cd</code> to the extracted folder in a terminal, and run <code>sudo ./install.sh local</code> to install to /usr/local, or <code>./install.sh home</code> to install to your home directory (you may have to add ~/bin to your PATH variable in that case). You'll need libcurl installed (most systems have it by default).</li>
<li>Choose the <strong>0install</strong> entry from the applications menu (older versions of Zero Install will have an “Add New Program” entry instead).</li>
<li>Drag <a href="http://displaycal.net/0install/DisplayCAL.xml">DisplayCAL's Zero Install feed</a> link to the Zero Install window.</li>
</ol>
<p>Note on DisplayCAL's standalone tools under Linux (3D LUT maker, curve viewer, profile information, synthetic profile creator, testchart editor, VRML to X3D converter): If using the alternate installation method, an application icon entry will only be created for DisplayCAL itself. This is currently a limitation of Zero Install under Linux. You can manually install icon entries for the standalone tools by running the following in a terminal:</p>
<pre><code>0launch --command=install-standalone-tools-icons \<br /> http://displaycal.net/0install/DisplayCAL.xml</code></pre>
<p>And you may uninstall them again with:</p>
<pre><code>0launch --command=uninstall-standalone-tools-icons \<br /> http://displaycal.net/0install/DisplayCAL.xml</code></pre>
</div>
</li>
<li>
<h3>For Mac OS X (10.5 or newer)</h3>
<div>
<p>Download the <a href="http://displaycal.net/download/DisplayCAL-0install.dmg">DisplayCAL Zero Install Launcher</a> disk image and run any of the included applications.</p>
</div>
</li>
<li>
<h3>For Windows (XP or newer)</h3>
<div>
<p>Download and install the DisplayCAL Zero Install Setup: <a href="http://displaycal.net/download/DisplayCAL-0install-Setup.exe">Administrator install</a> | <a href="http://displaycal.net/download/DisplayCAL-0install-Setup-per-user.exe">Per-user install</a>.</p>
</div>
</li>
<li>
<h3 id="zeroinstall-updating">Manually updating or switching between software versions</h3>
<div>
<p>Updates are normally applied automatically. If you want to manually update or switch between software versions, please follow the instructions below.</p>
<ul>
<li>
<h4>Linux</h4>
<p>Choose the <strong>0install</strong> entry from the applications menu (older versions of Zero Install will have a “Manage Programs” entry instead). In the window that opens, right-click the DisplayCAL icon and select “Choose versions” (with older versions of Zero Install, you have to click the small “Update or change version” icon below the “Run” button instead). You can then click the “Refresh all” button to update, or click the small button to the right of an entry and select “Show versions”.</p>
<p>To select a specific software version, click on the version entry and set the rating to “preferred” (note that this will prevent updates being downloaded for the selected software until you manually change to a different version or reset the rating).</p>
</li>
<li>
<h4>Mac OS X</h4>
<p>Run the <strong>0install Launcher</strong>. In the window that opens, click the “Refresh all” button to update, or click the small button to the right of an entry and select “Show versions”.</p>
<p>To select a specific software version, click on the version entry and set the rating to “preferred” (note that this will prevent updates being downloaded for the selected software until you manually change to a different version or reset the rating).</p>
</li>
<li>
<h4>Windows</h4>
<p>Choose the <strong>Zero Install</strong> entry from the start page under Windows 8, or the respective subfolder of the programs folder in the start menu under Windows 10, Windows 7 and earlier, and switch to the “My Applications” tab in the window that opens. Click the small “down” arrow inside the “Start” button to the right of the DisplayCAL entry and choose “Update” or “Select version”.</p>
<p>To select a specific software version, click on the “change” link next to an item, then click on the version entry and set the rating to “preferred” (note that this will prevent updates being downloaded for the selected software until you manually change to a different version or reset the rating).</p>
</li>
</ul>
</div>
</li>
</ul>
<p>Please continue with the <a href="#quickstart">Quickstart Guide</a>.</p>
</div>
<div id="quickstart">
<h2>Quickstart guide</h2>
<p>This short guide intends to get you up and running quickly, but if you run into a problem, please refer to the full <a href="#requirements">prerequisites</a> and <a href="#install">installation</a> sections.</p>
<ol>
<li>
<p>Launch DisplayCAL. If it cannot find Argyll CMS on your computer, it will prompt you to automatically download the latest version or select the location manually.</p>
</li>
<li>
<p class="info"><strong>Windows only:</strong> If your measurement device is <strong>not</strong> a ColorMunki Display, i1 Display Pro, Huey, ColorHug, specbos or K-10, you need to install an Argyll-specific driver before continuing. Select “Install Argyll CMS instrument drivers...” from the “Tools” menu. See also <a href="#install-windows-driver">“Instrument driver installation under Windows”.</a></p>
<p class="info"><strong>Mac OS X only:</strong> If you want to use the HCFR colorimeter, follow the instructions in the “HCFR Colorimeter” section under “<a href="http://argyllcms.com/doc/Installing_OSX.html">Installing Argyll CMS on Mac OS X</a>” in the Argyll CMS documentation before continuing.</p>
<p>Connect your measurement device to your computer.</p>
</li>
<li>
<p>Click the small icon with the swirling arrow <img src="theme/refresh_lr.png" alt="" /> in between the “Display device” and “Instrument” controls to detect connected display devices and instruments. The detected instrument(s) should show up in the “Instrument” dropdown.</p>
<p class="info"><strong>If your measurement device is a Spyder 2</strong>, a popup dialog will show which will let you enable the device. This is required to be able to use the Spyder 2 with Argyll CMS and DisplayCAL.</p>
<p class="info"><strong>If your measurement device is a i1 Display 2, i1 Display Pro, ColorMunki Display, DTP94, Spyder 2/3/4/5</strong>, a popup dialog will show and allow you to import generic <a href="#colorimeter-corrections">colorimeter corrections</a> from the vendor software which may help measurement accuracy on the type of display you're using. After importing, they are available under the “Correction” dropdown, where you can choose one that fits the type of display you have, or leave it at “Auto” if there is no match. <em>Note:</em> Importing from the Spyder 4/5 software enables additional measurement modes for that instrument.</p>
</li>
<li>
<p>Click <strong>“Calibrate & profile”</strong>. That's it!</p>
<p>Feel free to check out the <a href="http://displaycal.net/wiki/">Wiki</a> for guides and tutorials, and refer to the <a href="#concept">documentation</a> for advanced usage instructions (optional).</p>
<p class="info"><strong>Linux only:</strong> If you can't access your instrument, choose “Install Argyll CMS instrument configuration files...” from the “Tools” menu (if that menu item is grayed out, the Argyll CMS version you're currently using has probably been installed from the distribution's repository and should already be setup correctly for instrument access). If you still cannot access the instrument, try unplugging and reconnecting it, or a reboot. If all else fails, read “<a href="http://argyllcms.com/doc/Installing_Linux.html">Installing Argyll CMS on Linux: Setting up instrument access</a>” in the Argyll CMS documentation.</p>
</li>
</ol>
</div>
<div id="requirements">
<h2>System requirements and other prerequisites</h2>
<div>
<h3>General system requirements</h3>
<ul>
<li>A recent Linux, Mac OS X (10.5 or newer) or Windows (XP/Server 2003 or newer) operating system.</li>
<li>A graphics card with at least 24 bits per pixel (true color) support and the desktop set up to use this color depth.</li>
</ul>
</div>
<div id="argyll">
<h3>Argyll CMS</h3>
<p>To use DisplayCAL, you need to download and install <a href="http://argyllcms.com">Argyll CMS</a> (1.0 or newer).</p>
</div>
<div id="instruments">
<h3>Supported instruments</h3>
<p>You need one of the supported instruments to make measurements. All instruments supported by Argyll CMS are also supported by DisplayCAL. For display readings, these currently are:</p>
<h4>Colorimeters</h4>
<ul>
<li>CalMAN X2 (treated as i1 Display 2)</li>
<li>Datacolor/ColorVision Spyder 2</li>
<li>Datacolor Spyder 3 (since Argyll CMS 1.1.0)</li>
<li>Datacolor Spyder 4 (since Argyll CMS 1.3.6)</li>
<li>Datacolor Spyder 5 (since Argyll CMS 1.7.0)</li>
<li>HP Advanced Profiling Solution (treated as i1 Display 2)</li>
<li>HP DreamColor (treated as i1 Display 2)</li>
<li>Hughski ColorHug (Linux support since Argyll CMS 1.3.6, Windows support with newest ColorHug firmware since Argyll CMS 1.5.0, fully functional Mac OS X support since Argyll CMS 1.6.2)</li>
<li>Hughski ColorHug2 (new in Argyll CMS 1.7.0)</li>
<li>Image Engineering EX1 (new in Argyll CMS 1.8.0 Beta)</li>
<li>Klein K10-A (new in Argyll CMS 1.7.0)</li>
<li>Lacie Blue Eye (treated as i1 Display 2)</li>
<li>Sequel Imaging MonacoOPTIX (treated as i1 Display 1)</li>
<li>X-Rite ColorMunki Create (treated as i1 Display 2)</li>
<li>X-Rite ColorMunki Smile (since Argyll CMS 1.5.0)</li>
<li>X-Rite DTP92</li>
<li>X-Rite DTP94</li>
<li>X-Rite/GretagMacbeth/Pantone Huey</li>
<li>X-Rite/GretagMacbeth i1 Display 1</li>
<li>X-Rite/GretagMacbeth i1 Display 2/LT</li>
<li>X-Rite i1 Display Pro, ColorMunki Display (since Argyll CMS 1.3.4)</li>
</ul>
<h4>Spectrometers</h4>
<ul>
<li>JETI specbos 1211/1201 (since Argyll CMS 1.6.0)</li>
<li>X-Rite ColorMunki Design, ColorMunki Photo (since Argyll CMS 1.1.0)</li>
<li>X-Rite/GretagMacbeth i1 Monitor (since Argyll CMS 1.0.3)</li>
<li>X-Rite/GretagMacbeth i1 Pro</li>
<li>X-Rite i1 Pro 2 (since Argyll CMS 1.5.0)</li>
<li>X-Rite/GretagMacbeth Spectrolino</li>
</ul>
<div class="infobox">
<p>If you've decided to buy a color instrument because Argyll CMS supports it, please let the dealer and manufacturer know that “You bought it because Argyll CMS supports it”—thanks.</p>
</div>
<p>Note that the <em>i1 Display Pro</em> and <em>i1 Pro</em> are very different instruments despite their naming similarities.</p>
<p>Also there are currently (2014-05-20) five instruments (or rather, packages) under the ColorMunki brand, two of which are spectrometers, and three are colorimeters (not all of them being recent offerings, but you should be able to find them used in case they are no longer sold new):</p>
<ul>
<li>The <em>ColorMunki Design</em> and <em>ColorMunki Photo</em> spectrometers differ only in the functionality of the bundled vendor software. There are no differences between the instruments when used with Argyll CMS and DisplayCAL.</li>
<li>The <em>ColorMunki Display</em> colorimeter is a less expensive version of the i1 Display Pro colorimeter. It comes bundled with a simpler vendor software and has longer measurement times compared to the i1 Display Pro. Apart from that, the instrument appears to be virtually identical.</li>
<li>The <em>ColorMunki Create</em> and <em>ColorMunki Smile</em> colorimeters are similar hardware as the i1 Display 2 (with the ColorMunki Smile no longer having a built-in correction for CRT but for white LED backlit LCD instead).</li>
</ul>
</div>
<div id="requirements-unattended">
<h3>Additional requirements for unattended calibration and profiling</h3>
<p>When using a spectrometer that is supported by the unattended feature (see below), having to take the instrument off the screen to do a sensor self-calibration again after display calibration before starting the measurements for profiling may be avoided if the menu item “Allow skipping of spectrometer self-calibration” in the “Options” menu is checked (colorimeter measurements are always unattended because they generally do not require a sensor calibration away from the screen, with the exception of the i1 Display 1).</p>
<p>Unattended calibration and profiling currently supports the following spectrometers in addition to most colorimeters:</p>
<ul>
<li>X-Rite ColorMunki</li>
<li>X-Rite/GretagMacbeth i1 Monitor & Pro</li>
<li>X-Rite/GretagMacbeth Spectrolino</li>
<li>X-Rite i1 Pro 2</li>
</ul>
<p>Be aware you may still be forced to do a sensor calibration if the instrument requires it. Also, please look at the possible <a href="#issue-samplereadfail">caveats</a>.</p>
</div>
<div id="requirements-source">
<div id="requirements-source-basic">
<h3>Additional requirements for using the source code</h3>
<div>
<p>You can <a href="#install">skip</a> this section if you downloaded a package, installer, ZIP archive or disk image of DisplayCAL for your operating system and do not want to run from source.</p>
<h4>All platforms:</h4>
<ul>
<li><a href="http://python.org/">Python</a> >= v2.6 <= v2.7.x (2.7.x is the recommended version. Mac OS X users: If you want to compile DisplayCAL's C extension module, it is advisable to <strong>first</strong> install XCode and <strong>then</strong> the official python.org Python)</li>
<li><a href="http://numpy.scipy.org/">NumPy</a></li>
<li><a href="http://wxpython.org/">wxPython</a> <abbr title="Graphical User Interface">GUI<sup><a href="#definition_GUI">[4]</a></sup></abbr> toolkit</li>
</ul>
<h4>Windows:</h4>
<ul>
<li><a href="http://sourceforge.net/projects/pywin32/">pywin32</a></li>
<li><a href="http://pypi.python.org/pypi/WMI/">WMI</a></li>
</ul>
</div>
</div>
<div id="requirements-source-compile">
<h3>Additional requirements for compiling the C extension module</h3>
<div>
<p>Normally you can <a href="#install">skip</a> this section as the source code contains pre-compiled versions of the C extension module that DisplayCAL uses.</p>
<h4>Linux:</h4>
<ul>
<li>GCC and development headers for Python + X11 + Xrandr + Xinerama + Xxf86vm if not already installed, they should be available through your distribution's packaging system</li>
</ul>
<h4>Mac OS X:</h4>
<ul>
<li><a href="http://developer.apple.com/xcode/">XCode</a></li>
<li><a href="http://pypi.python.org/pypi/py2app/">py2app</a> if you want to build a standalone executable. On Mac OS X before 10.5, install setuptools first: <code>sudo python util/ez_setup.py setuptools</code></li>
</ul>
<h4>Windows:</h4>
<ul>
<li>a C-compiler (e.g. <a href="http://www.microsoft.com/germany/Express/product/visualcplusplusexpress.aspx">MS Visual C++ Express</a> or <a href="http://www.mingw.org">MinGW</a>. If you're using the official python.org Python 2.6 or later I'd recommend Visual C++ Express as it works out of the box)</li>
<li><a href="http://pypi.python.org/pypi/py2exe/">py2exe</a> if you want to build a standalone executable</li>
</ul>
</div>
</div>
<div id="requirements-source-run">
<h3 id="runsource">Running directly from source</h3>
<div>
<p>After satisfying all <a href="#requirements-source">additional requirements for using the source code</a>, you can simply run any of the included <code>.pyw</code> files from a terminal, e.g. <code>python2 DisplayCAL.pyw</code>, or install the software so you can access it via your desktop's application menu with <code>python2 setup.py install</code>. Run <code>python2 setup.py --help</code> to view available options.</p>
<p>One-time setup instructions for source code checked out from SVN:</p>
<p>Run <code>python2 setup.py</code> to create the version file so you don't see the update popup at launch.</p>
<p>If the pre-compiled extension module that is included in the sources does not work for you (in that case you'll notice that the movable measurement window's size does not closely match the size of the borderless window generated by Argyll CMS during display measurements) or you want to re-build it unconditionally, run <code>python2 setup.py build_ext -i</code> to re-build it from scratch (you need to satisfy the <a href="#requirements-source-compile">requirements for compiling the C extension module</a> first).</p>
</div>
</div>
</div>
</div>
<div id="install">
<h2>Installation</h2>
<p>It is recommended to first remove all previous versions unless you used Zero Install to get them.</p>
<div id="install-windows-driver">
<h3>Instrument driver installation under Windows</h3>
<div>
<p class="info">You only need to install the Argyll-specific driver if your measurement device is <strong>not</strong> a ColorMunki Display, i1 Display Pro, Huey, ColorHug, specbos or K-10.</p>
<div class="info">
<p>If you are using Windows 8, 8.1, or 10, you need to <strong>disable driver signature enforcement</strong> before you can install the driver.
If <a href="https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Secure_boot">Secure Boot</a> is enabled in the <abbr title="Unified Extensible Firmware Interface">UEFI<sup><a href="#definition_UEFI">[12]</a></sup></abbr> setup, you need to disable it first. Refer to your mainboard or firmware manual how to go about this. Usually entering the firmware setup requires holding the DEL key when the system starts booting.</p>
<p><strong>Method 1: Disable driver signature enforcement temporarily</strong></p>
<ol>
<li>Go to “Settings” (hover the lower right corner of the screen, then click the gear icon)</li>
<li>Select “Power” (the on/off icon)</li>
<li>Hold the SHIFT key down and click “Restart”.</li>
<li>Select “Troubleshoot → “Advanced Options” → “Startup Settings” → “Restart”</li>
<li>After reboot, select “Disable Driver Signature Enforcement” (number 7 on the list)</li>
</ol>
<p><strong>Method 2: Disable driver signature enforcement permanently</strong></p>
<ol>
<li>Open an elevated command prompt. Search for “Command Prompt” in the Windows start menu, right-click and select “Run as administrator”</li>
<li>Run the following command: <code>bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS</code></li>
<li>Run the following command: <code>bcdedit /set TESTSIGNING ON</code></li>
<li>Reboot</li>
</ol>
</div>
<p>To install the Argyll-specific driver that is needed to use some instruments, launch DisplayCAL and select “Install Argyll CMS instrument drivers...” from the “Tools” menu.</p>
<p>To switch between the Argyll CMS and vendor drivers, launch Windows' Device Manager and locate the instrument in the device list. It may be underneath one of the top level items.
Right click on the instrument and select “Update Driver Software...”, then choose “Browse my computer for driver software”, “Let me pick from a list of device drivers on my computer” and finally select the Argyll driver for your instrument from the list.</p>
</div>
</div>
<div id="install-deb-rpm">
<h3>Linux package (.deb/.rpm)</h3>
<div>
<p>A lot of distributions allow easy installation of packages via the graphical desktop, i.e. by double-clicking the package file's icon. Please consult your distribution's documentation if you are unsure how to install packages.</p>
<p class="info">If you cannot access your instrument, first try unplugging and reconnecting it, or a reboot. If that doesn't help, read “<a href="http://argyllcms.com/doc/Installing_Linux.html">Installing Argyll CMS on Linux: Setting up instrument access</a>”.</p>
</div>
</div>
<div id="install-autopackage">
<h3>Linux Autopackage (.package)</h3>
<div>
<p>Before installing the autopackage, first install wxPython (on some systems called python-wxGTK or python-wxWidgets) and NumPy using your system's package management software. To install the autopackage, follow these three steps (you only have to do it once, next time, you can just skip these steps and open the .package file directly):</p>
<ol>
<li>Click on the package with your right mouse button. Then click on the “Properties” menu item.</li>
<li>Go to the “Permissions” tab.
<ul>
<li>Check the “Execute”, “Exec” or “Is Executable” checkbox. If there are more than one Execute/Exec checkboxes, check the top-most one.</li>
<li>Click “Close” or “OK”, depending on the dialog.</li>
</ul>
</li>
<li>If you already have the software installed from your distributions packages or from the source, remove it first. Then <em>open</em> the package file. If you are asked whether you want to display or run the package, choose “Run”.</li>
</ol>
<p>The installation will now begin. Follow further intructions that are displayed, if any.</p>
<p class="info">If you cannot access your instrument, first try unplugging and reconnecting it, or a reboot. If that doesn't help, read “<a href="http://argyllcms.com/doc/Installing_Linux.html">Installing Argyll CMS on Linux: Setting up instrument access</a>”.</p>
</div>
</div>
<div id="install-mac">
<h3>Mac OS X</h3>
<div>
<p>Mount the disk image and option-drag its icon to your “Applications” folder. Afterwards open the “DisplayCAL” folder in your “Applications” folder and drag DisplayCAL's icon to the dock if you want easy access.</p>
<p class="info">If you want to use the HCFR colorimeter under Mac OS X, follow the instructions under “<a href="http://argyllcms.com/doc/Installing_OSX.html">installing Argyll CMS on Mac OS X</a>” in the Argyll CMS documentation.</p>
</div>
</div>
<div id="install-windows-setup">
<h3>Windows (Installer)</h3>
<div>
<p>Launch the installer which will guide you trough the required setup steps.</p>
<p class="info">If your measurement device is <strong>not</strong> a ColorMunki Display, i1 Display Pro, Huey, ColorHug, specbos or K-10, you need to install an Argyll-specific driver. <a href="#install-windows-driver">See “Instrument driver installation under Windows”.</a></p>
</div>
</div>
<div id="install-windows-zip">
<h3>Windows (ZIP archive)</h3>
<div>
<p>Unpack and then simply run DisplayCAL from the created folder.</p>
<p class="info">If your measurement device is <strong>not</strong> a ColorMunki Display, i1 Display Pro, Huey, ColorHug, specbos or K-10, you need to install an Argyll-specific driver. <a href="#install-windows-driver">See “Instrument driver installation under Windows”.</a></p>
</div>
</div>
<div id="install-src">
<h3>Source code (all platforms)</h3>
<div>
<p>See the “Prerequisites” section to <a href="#runsource">run directly from source</a>.</p>
<p>Starting with DisplayCAL 0.2.5b, you can use standard distutils/setuptools commands with setup.py to build, install, and create packages. <code>sudo python setup.py install</code> will compile the extension modules and do a standard installation. Run <code>python setup.py --help</code> or <code>python setup.py --help-commands</code> for more information. A few additional commands and options which are not part of distutils or setuptools (and thus do not appear in the help) are also available:</p>
<h4>Additional setup commands</h4>
<div class="info">
<dl>
<dt><code>0install</code></dt>
<dd>Create/update 0install feeds and create Mac OS X application bundles to run those feeds.</dd>
<dt><code>appdata</code></dt>
<dd>Create/update <a href="http://people.freedesktop.org/~hughsient/appdata/">AppData</a> file.</dd>
<dt><code>bdist_appdmg</code> (Mac OS X only)</dt>
<dd>Creates a DMG of previously created (by the py2app or bdist_standalone commands) application bundles, or if used together with the <code>0install</code> command.</dd>
<dt><code>bdist_deb</code> (Linux/Debian-based)</dt>
<dd>Create an installable Debian (.deb) package, much like the standard distutils command bdist_rpm for RPM packages. Prerequisites:
You first need to install alien and rpmdb, create a dummy RPM database via <code>sudo rpmdb --initdb</code>, then edit (or create from scratch) the setup.cfg (you can have a look at misc/setup.ubuntu9.cfg for a working example). Under Ubuntu, running utils/dist_ubuntu.sh will automatically use the correct setup.cfg. If you are using Ubuntu 11.04 or any other debian-based distribution which has Python 2.7 as default, you need to edit /usr/lib/python2.7/distutils/command/bdist_rpm.py, and change the line <code>install_cmd = ('%s install <span style="color: #c00">-O1</span> --root=$RPM_BUILD_ROOT '</code> to <code>install_cmd = ('%s install --root=$RPM_BUILD_ROOT '</code> by removing the <code><span style="color: #c00">-O1</span></code> flag. Also, you need to change /usr/lib/rpm/brp-compress to do nothing (e.g. change the file contents to <code>exit 0</code>, but don't forget to create a backup copy first) otherwise you will get errors when building.</dd>
<dt><code>bdist_lipa</code></dt>
<dd>Create a <a href="http://listaller.tenstral.net/">Listaller</a> package.</dd>
<dt><code>bdist_pyi</code></dt>
<dd>An alternative to <code>bdist_standalone</code>, which uses <a href="http://www.pyinstaller.org/">PyInstaller</a> instead of bbfreeze/py2app/py2exe.</dd>
<dt><code>bdist_standalone</code></dt>
<dd>Creates a standalone application that does not require a Python installation. Uses bbfreeze on Linux, py2app on Mac OS X and py2exe on Windows. setup.py will try and automatically download/install these packages for you if they are not yet installed and if not using the --use-distutils switch. Note: On Mac OS X, older versions of py2app (before 0.4) are not able to access files inside python “egg” files (which are basically ZIP-compressed folders). Setuptools, which is needed by py2app, will normally be installed in “egg” form, thus preventing those older py2app versions from accessing its contents. To fix this, you need to remove any installed setuptools-<version>-py<python-version>.egg files from your Python installation's site-packages directory (normally found under <code>/Library/Frameworks/Python.framework/Versions/Current/lib</code>). Then, run <code>sudo python util/ez_setup.py -Z setuptools</code> which will install setuptools unpacked, thus allowing py2app to acces all its files. This is no longer an issue with py2app 0.4 and later.</dd>
<dt><code>buildservice</code></dt>
<dd>Creates control files for openSUSE Build Service (also happens implicitly when invoking <code>sdist</code>).</dd>
<dt><code>finalize_msi</code> (Windows only)</dt>
<dd>Adds icons and start menu shortcuts to the MSI installer previously created with <code>bdist_msi</code>. Successful MSI creation needs a <a href="http://bugs.python.org/file15898/msilib_make_short.diff">patched msilib</a> (<a href="http://bugs.python.org/issue1128">additional</a> <a href="http://bugs.python.org/issue7639">information</a>).</dd>
<dt><code>inno</code> (Windows only)</dt>
<dd>Creates <a href="http://www.jrsoftware.org/isinfo.php">Inno Setup</a> scripts which can be used to compile setup executables for standalone applications generated by the <code>py2exe</code> or <code>bdist_standalone</code> commands and for 0install.</dd>
<dt><code>purge</code></dt>
<dd>Removes the <code>build</code> and <code>DisplayCAL.egg-info</code> directories including their contents.</dd>
<dt><code>purge_dist</code></dt>
<dd>Removes the <code>dist</code> directory and its contents.</dd>
<dt><code>readme</code></dt>
<dd>Creates README.html by parsing misc/README.template.html and substituting placeholders like date and version numbers.</dd>
<dt><code>uninstall</code></dt>
<dd>Uninstalls the package. You can specify the same options as for the <code>install</code> command.</dd>
</dl>
</div>
<h4>Additional setup options</h4>
<div class="info">
<dl>
<dt><code>--cfg=<name></code></dt>
<dd>Use an alternate setup.cfg, e.g. tailored for a given Linux distribution. The original setup.cfg is backed up and restored afterwards. The alternate file must exist as misc/setup.<name>.cfg</dd>
<dt><code>-n</code>, <code>--dry-run</code></dt>
<dd>Don't actually do anything. Useful in combination with the uninstall command to see which files would be removed.</dd>
<dt><code>--skip-instrument-configuration-files</code></dt>
<dd>Skip installation of udev rules and hotplug scripts.</dd>
<dt><code>--skip-postinstall</code></dt>
<dd>Skip post-installation on Linux (an entry in the desktop menu will still be created, but may not become visible until logging out and back in or rebooting) and Windows (no shortcuts in the start menu will be created at all).</dd>
<dt><code>--stability=stable | testing | developer | buggy | insecure</code></dt>
<dd>Set the stability for the implementation that is added/updated via the <code>0install</code> command.</dd>
<dt><code>--use-distutils</code></dt>
<dd>Force setup to use distutils (default) instead of setuptools. This is useful in combination with the bdist* commands, because it will avoid an artificial dependency on setuptools. This is actually a switch, use it once and the choice is remembered until you specify the <code>--use-setuptools</code> switch (see next paragraph).</dd>
<dt><code>--use-setuptools</code></dt>
<dd>Force setup to try and use setuptools instead of distutils. This is actually a switch, use it once and the choice is remembered until you specify the <code>--use-distutils</code> switch (see above).</dd>
</dl>
</div>
</div>
</div>
</div>
<div id="install-2">
<h3>Instrument-specific setup</h3>
<p><strong>If your measurement device is a i1 Display 2, i1 Display Pro, ColorMunki Display, DTP94, Spyder 2/3/4/5</strong>, you'll want to import the colorimeter corrections that are part of the vendor software packages, which can be used to better match the instrument to a particular type of display. <em>Note:</em> The full range of measurement modes for the Spyder 4/5 are also only available if they are imported from the Spyder 4/5 software.</p>
<p>Choose “Import colorimeter corrections from other display profiling software...” from DisplayCAL's “Tools” menu.</p>
<p><strong>If your measurement device is a Spyder 2</strong>, you need to enable it to be able to use it with Argyll CMS and DisplayCAL. Choose “Enable Spyder 2 colorimeter...” from DisplayCAL's “Tools” menu.</p>
</div>
<div id="concept">
<h2>Basic concept of display calibration and profiling</h2>
<p>If you have previous experience, <a href="#colorimeter-corrections">skip ahead</a>. If you are new to display
calibration, here is a quick outline of the basic concept.</p>
<p>First, the display behavior is measured and adjusted to meet
user-definable target characteristics, like brightness, gamma and white point.
This step is generally referred to as <em>calibration</em>. Calibration is done by
adjusting the monitor controls, and the output of the graphics card (via
<em>calibration curves</em>, also sometimes called <em>video <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> curves</em>—please don't confuse these with <em>LUT profiles</em>, the <a href="#difference_lutcurves_lutprofile" title="Difference between LUT (calibration) curves and LUT profiles">differences are explained here</a>) to get as
close as possible to the chosen target.<br />
To meet the user-defined target characteristics, it is generally advisable to
get as far as possible by using the monitor controls, and only thereafter by
manipulating the output of the video card via calibration curves, which are loaded into the <em>video card gamma table</em>, to get the best
results.</p>
<p>Second, the calibrated displays response is measured and an <abbr title="International Color Consortium">ICC<sup><a href="#definition_ICC">[5]</a></sup></abbr> profile
describing it is created.</p>
<p>Optionally and for convenience purposes, the calibration is stored in the profile, but both
still need to be used together to get correct results. This can lead to some ambiguity,
because loading the calibration curves from the profile is generally the
responsibility of a third party utility or the OS, while applications using
the profile to do color transforms usually don't know or care about the calibration (they don't need to). Currently, the only OS that
applies calibration curves out-of-the-box is Mac OS X (under <a href="#issue-win7-autoloadcalibration">Windows 7 or later you can enable it</a>, but it's off by default and doesn't offer the same high precision as the DisplayCAL profile loader)—for other OS's, DisplayCAL takes care of creating an appropriate loader.</p>
<p>Even non-color-managed applications will benefit from a loaded
calibration because it is stored in the graphics card—it is “global”. But the calibration alone will not yield accurate colors—only fully color-managed applications will make use of display
profiles and the necessary color transforms.</p>
<p>Regrettably there are several image viewing and editing applications that
only implement half-baked color management by not using the system's display profile (or any display profile at all), but an internal and often unchangeable “default”
color space like sRGB, and sending output unaltered to the display after converting to that default colorspace. If the
display's actual response is close to sRGB, you might get pleasing (albeit not
accurate) results, but on displays which behave differently, for example wide-color-gamut displays, even mundane colors can
get a strong tendency towards neon.</p>
</div>
<div id="colorimeter-corrections">
<h2>A note about colorimeters, displays and DisplayCAL</h2>
<p>Colorimeters need a correction in hardware or software to obtain correct measurements from different types of displays (please also see <a href="http://argyllcms.com/doc/WideGamutColmters.html">“Wide Gamut Displays and Colorimeters”</a> on the Argyll CMS website for more information). The latter is supported when using Argyll CMS >= 1.3.0, so if you own a display and colorimeter which has not been specifically tuned for this display (i.e. does not contain a correction in hardware), you can apply a correction that has been calculated from spectrometer measurements to help better measure such a screen.<br />
You need a spectrometer in the first place to do the necessary measurements to create such a correction, or you may query DisplayCAL's <a href="http://colorimetercorrections.displaycal.net/">Colorimeter Corrections Database</a>, and there's also a <a href="http://argyllcms.com/doc/ccmxs.html">list of contributed colorimeter correction files on the Argyll CMS website</a>—<strong>please note</strong> though that a matrix created for one particular instrument/display combination may not work well for different instances of the same combination because of display manufacturing variations and generally low inter-instrument agreement of most older colorimeters (with the exception of the DTP94), newer devices like the i1 Display Pro/ColorMunki Display and possibly the Spyder 4/5 seem to be less affected by this.<br />
Starting with DisplayCAL 0.6.8, you can also <a href="#import-correction-matrices">import generic corrections</a> from some profiling softwares by choosing the corresponding item in the “Tools” menu.</p>
<p>If you buy a screen bundled with a colorimeter, the instrument may have been matched to the screen in some way already, so you may not need a software correction in that case.</p>
<h3>Special note about the X-Rite i1 Display Pro, ColorMunki Display and Spyder 4/5 colorimeters</h3>
<p>These instruments greatly reduce the amount of work needed to match them to a display because they contain the spectral sensitivities of their filters in hardware, so only a spectrometer reading of the display is needed to create the correction (in contrast to matching other colorimeters to a display, which needs two readings: One with a spectrometer and one with the colorimeter).<br />
That means anyone with a particular screen and a spectrometer can create a special <em>Colorimeter Calibration Spectral Set</em> (<code>.ccss</code>) file of that screen for use with those colorimeters, without needing to actually have access to the colorimeter itself.</p>
</div>
<div id="usage">
<h2>Usage</h2>
<p>Through the main window, you can choose your settings. When running calibration measurements, another window will guide you through the interactive part of display adjustment.</p>
<div id="settingsfile">
<h3>Settings file</h3>
<p>Here, you can load a preset, or a calibration (<code>.cal</code>) or ICC profile (<code>.icc</code> / <code>.icm</code>) file from a previous
run. This will set options to
those stored in the file. If the file contains only a subset of settings, the other options will automatically be reset to defaults (except the 3D LUT settings, which won't be reset if the settings file doesn't contain 3D LUT settings, and the verification settings which will never be reset automatically).</p>
<p>If a calibration file or profile is loaded in this way, its name will
show up here to indicate that the settings reflect those in the file.
Also, if a calibration is present it can be used as the base when “Just Profiling”.<br />
The chosen settings file will stay selected as long as you do not change any of the
calibration or profiling settings, with one exception: When a <code>.cal</code> file with the same base name as the settings file
exists in the same directory, adjusting the quality and profiling controls will not cause unloading of the settings file. This allows you to use an existing calibration with new profiling settings for “Just Profiling”, or to update an existing calibration with different quality and/or profiling settings. If you change settings in other situations, the file will get unloaded (but current settings will be retained—unloading just happens to remind you that the settings no longer match those in the file), and current display profile's calibration curves will be restored (if present, otherwise they will reset to linear).</p>
<p>When a calibration file is selected, the “Update calibration”
checkbox will become available, which takes less time than a calibration from scratch.
If a <abbr title="International Color Consortium">ICC<sup><a href="#definition_ICC">[5]</a></sup></abbr> profile is selected, and a calibration file with the same base name
exists in the same directory, the profile will be updated with the new calibration. Ticking the “Update calibration” checkbox will gray out
all options as well as the “Calibrate & profile” and “Just profile” buttons, only the quality level will be changeable.</p>
</div>
<div id="presets">
<h3>Predefined settings (presets)</h3>
<p>Starting with DisplayCAL v0.2.5b, predefined settings for several use cases are selectable in the settings dropdown. I strongly recommend to NOT view these presets as the solitary “correct” settings you absolutely should use unmodified if your use case matches their description. Rather view them as starting points, from where you can work towards your own, optimized (in terms of your requirements, hardware, surroundings, and personal preference) settings.</p>
<h4>Why has a default gamma of 2.2 been chosen for some presets?</h4>
<p>Many displays, be it CRT, LCD, Plasma or OLED, have a default response characteristic close to a gamma of approx. 2.2-2.4 (for CRTs, this is the actual native behaviour; and other technologies typically try to mimic CRTs). A target response curve for calibration that is reasonably close to the native response of a display should help to minimize calibration artifacts like banding, because the adjustments needed to the video card's gamma tables via calibration curves will not be as strong as if a target response farther away from the display's native response had been chosen.</p>
<p>Of course, you can and should change the calibration response curve to a value suitable for your own requirements. For example, you might have a display that offers hardware calibration or gamma controls, that has been internally calibrated/adjusted to a different response curve, or your display's response is simply not close to a gamma of 2.2 for other reasons. You can run “Report on uncalibrated display device” from the “Tools” menu to measure the approximated overall gamma among other info.</p>
</div>
<div id="tabs">
<h3>Tabs</h3>
<p>The main user interface is divided into tabs, with each tab containing a sub-set of settings. Not all tabs may be available at any given time. Unavailable tabs will be grayed out.</p>
</div>
<div id="display_instrument">
<h3>Choosing the display to calibrate and the measurement device</h3>
<p>After connecting the instrument, click the small icon with the swirling arrow <img src="theme/refresh_lr.png" alt="" /> in between the “Display device” and “Instrument” controls to detect connected display devices and instruments.</p>
<h4 id="settings_display_device">Choosing a display device</h4>
<p>Directly connected displays will appear at the top of the list as entries in the form “Display Name/Model @ x, y, w, h” with x, y, w and h being virtual screen coordinates depending on resolution and DPI settings. Apart from those directly connected displays, a few additional options are also available:</p>
<dl>
<dt>Web @ localhost</dt>
<dd>
<p>Starts a standalone web server on your machine, which then allows a local or remote web browser to display the color test patches, e.g. to calibrate/profile a smartphone or tablet computer.</p>
<p>Note that if you use this method of displaying test patches, then colors will be displayed with 8 bit per component precision, and any screen-saver or power-saver will <strong>not</strong> be automatically disabled. You will also be at the mercy of any color management applied by the web browser, and may have to carefully review and configure such color management.</p>
</dd>
<dt>madVR</dt>
<dd>
<p>Causes test patches to be displayed using the madVR Test Pattern Generator (madTPG) application which comes with the <a href="http://madvr.com/">madVR video renderer</a> (only available for Windows, but you can connect via local network from Linux and Mac OS X). Note that while you can adjust the test pattern configuration controls in madTPG itself, you should not normally alter the “disable videoLUT” and “disable 3D LUT” controls, as these will be set appropriately automatically when doing measurements.</p>
<p>Note that if you want to create a 3D LUT for use with madVR, there is a “Video 3D LUT for madVR” preset available under “Settings” that will not only configure DisplayCAL to use madTPG, but also setup the correct 3D LUT format and encoding for madVR.</p>
</dd>
<dt>Prisma</dt>
<dd>
<p>The Q, Inc./Murideo Prisma is a video processor and combined pattern generator/3D LUT holder accessible over the network.</p>
<p>Note that if you want to create a 3D LUT for use with a Prisma, there is a “Video 3D LUT for Prisma” preset available under “Settings” that will not only configure DisplayCAL to use a Prisma, but also setup the correct 3D LUT format and encoding.</p>
<p>Also note that the Prisma has 1 MB of internal memory for custom LUT storage, which is enough for around 15 17x17x17 LUTs. You may occasionally need to enter the Prisma's administrative interface via a web browser to delete old LUTs to make space for new ones.</p>
</dd>
<dt>Resolve</dt>
<dd>
<p>Allows you to use the built-in pattern generator of DaVinci Resolve video editing and grading software, which is accessible over the network or on the local machine. The way this works is that you start a calibration or profiling run in DisplayCAL, position the measurement window and click “Start measurement”. A message “Waiting for connection on IP:PORT” should appear. Note the IP and port numbers. In Resolve, switch to the “Color” tab and then choose “Monitor calibration”, “CalMAN” in the “Color” menu (Resolve version 11 and earlier) or the “Workspace” menu (Resolve 12).<br />
Enter the IP address in the window that opens (port should already be filled) and click “Connect” (if Resolve is running on the same machine as DisplayCAL, enter <code>localhost</code> or <code>127.0.0.1</code> instead). The position of the measurement window you placed earlier will be mimicked on the display you have connected via Resolve.</p>
<p>Note that if you want to create a 3D LUT for use with Resolve, there is a “Video 3D LUT for Resolve” preset available under “Settings” that will not only configure DisplayCAL to use Resolve, but also setup the correct 3D LUT format and encoding.</p>
<p><strong>Note</strong> that if you want to create a 3D LUT for a display that is <strong>directly connected</strong> (e.g. for Resolve's GUI viewer), you should <strong>not</strong> use the Resolve pattern generator, and select the actual display device instead which will allow for quicker measurements (Resolve's pattern generator has additional delay).</p>
</dd>
<dt>Untethered</dt>
<dd>
<p>See <a href="#untethered">untethered display measurements</a>. <em>Please note that the untethered mode should generally only be used if you've exhausted all other options.</em></p>
</dd>
</dl>
<h4 id="settings_measurement_modes">Choosing a measurement mode</h4>
<p>Some instruments may support different measurement modes for different types of display devices. In general, there are three base measurement modes: “LCD”, “Refresh” (e.g. CRT and Plasma are refresh-type displays) and “Projector” (the latter is only available if supported by the instrument). Some instruments like the Spyder 4/5 and ColorHug support additional measurement modes, where a mode is coupled with a predefined colorimeter correction (in that case, the <a href="#settings_colorimeter_correction">colorimeter correction</a> dropdown will automatically be set to “None”).<br />
Variations of these measurement modes may be available depending on the instrument: “Adaptive” measurement mode for spectrometers uses varying integration times (always used by colorimeters) to increase accuracy of dark readings. “HiRes” turns on high resolution spectral mode for spectrometers like the i1 Pro, which may increase the accuracy of measurements.</p>
<h4 id="settings_drift_compensation">Drift compensation during measurements (only available if using Argyll CMS >= 1.3.0)</h4>
<p>White level drift compensation tries to counter luminance changes of a warming up display device. For this purpose, a white test patch is measured periodically, which increases the overall time needed for measurements.</p>
<p>Black level drift compensation tries to counter measurement deviations caused by black calibration drift of a warming up measurement device. For this purpose, a black test patch is measured periodically, which increases the overall time needed for measurements. Many colorimeters are temperature stabilised, in which case black level drift compensation should not be needed, but spectrometers like the i1 Pro or ColorMunki Design/Photo are not temperature compensated.</p>
<h4 id="display-update-delay">Override display update delay (only available if using Argyll CMS >= 1.5.0, only visible if “Show advanced options” in the “Options” menu is enabled)</h4>
<p>Normally a delay of 200 msec is allowed between changing a patch color in software, and that change appearing in the displayed color itself. For some instuments (i.e. i1d3, i1pro, ColorMunki, Klein K10-A) ArgyllCMS will automatically measure and set an appropriate update delay during instrument calibration. In rare situations this delay may not be sufficient (ie. some TV's with extensive image processing features turned on), and a larger delay can be set here.</p>
<h4 id="display-settle-time">Override display settle time multiplier (only available if using Argyll CMS >= 1.7.0, only visible if “Show advanced options” in the “Options” menu is enabled)</h4>
<p>Normally the display technology type determines how long is allowed between when a patch color change appears on the display, and when that change has settled down, and as actually complete within measurement tolerance. A CRT or Plasma display for instance, can have quite a long settling delay due to the decay characteristics of the phosphor used, while an LCD can also have a noticeable settling delay due to the liquid crystal response time and any response time enhancement circuit (instruments without a display technology type selection such as spectrometers assume a worst case).<br />
The display settle time multiplier allows the rise and fall times of the model to be scaled to extend or reduce the settling time. For instance, a multiplier of 2.0 would double the settling time, while a multiplier of 0.5 would halve it.</p>
<h4 id="settings_colorimeter_correction">Choosing a colorimeter correction for a particular display</h4>
<p>This can improve a colorimeters accuracy for a particular type of display, please also see <a href="#colorimeter-corrections">“A note about colorimeters, displays and DisplayCAL”</a>. You can import generic matrices from some other display profiling softwares as well as check the online <a href="http://colorimetercorrections.displaycal.net/">Colorimeter Corrections Database</a> for a match of your display/instrument combination (click the small globe next to the correction dropdown)—<strong>please note</strong> though that all colorimeter corrections in the online database have been contributed by various users, and their usefulness to your particular situation is up to you to evaluate: They may or may not improve the absolute accuracy of your colorimeter with your display. A <a href="http://argyllcms.com/doc/ccmxs.html">list of contributed correction matrices</a> can also be found on the Argyll CMS website.</p>
<p>Please note this option is only available if using Argyll CMS >= 1.3.0 and a colorimeter.</p>
</div>
<div id="settings_calibration">
<h3>Calibration settings</h3>
<dl>
<dt id="settings_calibration_interactive_display_adjustment">Interactive display adjustment</dt>
<dd>Turning this off skips straight to calibration or profiling measurements instead of giving you the opportunity to alter the display's controls first. You will normally want to keep this checked, to be able to use the controls to get closer to the chosen target characteristics.</dd>
<dt id="settings_calibration_observer">Observer</dt>
<dd>
<p>To see this setting, you need to have an instrument that supports spectral readings (i.e. a spectrometer) or spectral sample calibration (e.g. i1 DisplayPro, ColorMunki Display and Spyder4/5), and go into the “Options” menu, and enable “Show advanced options”.</p>
<p>This can be used to select a different colorimetric observer, also known as color matching function (CMF), for instruments that support it. The default is the CIE 1931 standard 2° observer.</p>
<p><strong>Note</strong> that if you select anything other than the default 1931 2 degree observer, then the Y values will not be cd/m², due to the Y curve not being the CIE 1924 photopic V(λ) luminosity function.</p>
</dd>
<dt id="settings_calibration_white_point">White point</dt>
<dd>
<p>Allows setting the target white point locus to the equivalent of a daylight or black body spectrum of the given temperature in degrees Kelvin, or as chromaticity co-ordinates. By default the white point target will be the native white of the display, and it's color temperature and delta E to the daylight spectrum locus will be shown during monitor adjustment, and adjustments will be recommended to put the display white point directly on the Daylight locus. If a daylight color temperature is given, then this will become the target of the adjustment, and the recommended adjustments will be those needed to make the monitor white point meet the target. Typical values might be 5000 for matching printed output, or 6500, which gives a brighter, bluer look. A white point temperature different to that native to the display may limit the maximum brightness possible.</p>
<p>If you want to find out the current uncalibrated whitepoint of your display, you can run “Report on uncalibrated display device” from the “Tools” menu to measure it.</p>
<p>If you want to adjust the whitepoint to the chromaticities of your ambient lighting, or those of a viewing booth as used in prepress and photography, and your measurement device has ambient measuring capability (e.g. like the i1 Pro or i1 Display with their respective ambient measurement heads), you can use the “Measure” button next to the whitepoint settings. If you want to measure ambient lighting, place the instrument upwards, beside the display. Or if you want to measure a viewing booth, put a metamerism-free gray card inside the booth and point the instrument towards it. Further instructions how to measure ambient may be available in your instrument's documentation.</p>
</dd>
<dt id="settings_calibration_white_level">White level</dt>
<dd>
<p>Set the target brightness of white in cd/m<sup>2</sup>. If this number cannot be reached, the brightest output possible is chosen, consistent with matching the white point target. Note that many of the instruments are not particularly accurate when assessing the absolute display brightness in cd/m<sup>2</sup>. Note that some LCD screens behave a little strangely near their absolute white point, and may therefore exhibit odd behavior at values just below white. It may be advisable in such cases to set a brightness slightly less than the maximum such a display is capable of.</p>
<p>If you want to find out the current uncalibrated white level of your display, you can run “Report on uncalibrated display device” from the “Tools” menu to measure it.</p>
</dd>
<dt id="settings_calibration_black_level">Black level</dt>
<dd>
<p>(To see this setting, go into the “Options” menu, and enable “Show advanced options”)</p>
<p>Can be used to set the target brightness of black in cd/m<sup>2</sup> and is useful for e.g. matching two different screens with different native blacks to one another, by measuring the black levels on both (i.e. in the “Tools” menu, choose “Report on uncalibrated display”) and then entering the highest measured value. Normally you may want to use native black level though, to maximize contrast ratio. Setting too high a value may also give strange results as it interacts with trying to achieve the target “advertised” tone curve shape. Using a black output offset of 100% tries to minimize such problems.</p>
</dd>
<dt id="trc">Tone curve / gamma</dt>
<dd>
<p>The target response curve is normally an exponential curve (output = input<sup>gamma</sup>), and defaults to 2.2 (which is close to a typical CRT displays real response). Four pre-defined curves can be used as well: the sRGB colorspace response curve, which is an exponent curve with a straight segment at the dark end and an overall response of approximately gamma 2.2, the L* curve, which is the response of the CIE L*a*b* perceptual colorspace, the Rec. 709 video standard response curve and the SMPTE 240M video standard response curve.<br />
Another possible choice is “As measured”, which will skip video card gamma table (1D LUT) calibration.</p>
<p>Note that a real display usually can't reproduce any of the ideal pre-defined curves, since it will have a non-zero black point, whereas all the ideal curves assume zero light at zero input.</p>
<p>For gamma values, you can also specify wheter it should be interpreted relative, meaning the gamma value provided is used to set an actual response curve in light of the non-zero black of the actual display that has the same relative output at 50% input as the ideal gamma power curve, or absolute, which allows the actual power to be specified instead, meaning that after the actual displays non-zero black is accounted for, the response at 50% input will probably not match that of the ideal power curve with that gamma value (to see this setting, you have to go into the “Options” menu, and enable “Show advanced options”).</p>
<p>To allow for the non-zero black level of a real display, by default the target curve values will be offset so that zero input gives the actual black level of the display (output offset). This ensures that the target curve better corresponds to the typical natural behavior of displays, but it may not be the most visually even progression from display minimum. This behavior can be changed using the black output offset option (see further below).</p>
<p>Also note that many color spaces are encoded with, and labelled as having a gamma of approximately 2.2 (ie. sRGB, REC 709, SMPTE 240M, Macintosh OS X 10.6), but are actually intended to be displayed on a display with a typical CRT gamma of 2.4 viewed in a darkened environment.<br />
This is because this 2.2 gamma is a source gamma encoding in bright viewing conditions such as a television studio, while typical display viewing conditions are quite dark by comparison, and a contrast expansion of (approx.) gamma 1.1 is desirable to make the images look as intended.<br />
So if you are displaying images encoded to the sRGB standard, or displaying video through the calibration, just setting the gamma curve to sRGB or REC 709 (respectively) is probably not what you want! What you probably want to do, is to set the gamma curve to about gamma 2.4, so that the contrast range is expanded appropriately, or alternatively use sRGB or REC 709 or a gamma of 2.2 but also specify the actual ambient viewing conditions via a light level in Lux, so that an appropriate contrast enhancement can be made during calibration. If your instrument is capable of measuring ambient light levels, then you can do so.<br />
<span class="footnote">(For in-depth technical information about sRGB, see “<a href="http://www.color.org/sRGB.xalter">A Standard Default Color Space for the Internet: sRGB</a>” at the <abbr title="International Color Consortium">ICC<sup><a href="#definition_ICC">[5]</a></sup></abbr> website for details of how it is intended to be used)</span></p>
<p>If you're wondering what gamma value you should use, you can run “Report on uncalibrated display device” from the “Tools” menu to measure the approximated overall gamma among other info. Setting the gamma to the reported value can then help to reduce calibration artifacts like banding, because the adjustments needed for the video card's gamma table should not be as strong as if a gamma further away from the display's native response was chosen.</p>
</dd>
<dt id="ambient">Ambient light level</dt>
<dd>
<p>(To see this setting, go into the “Options” menu, and enable “Show advanced options”)</p>
<p>As explained for the tone curve settings, often colors are encoded in a situation with viewing conditions that are quite different to the viewing conditions of a typical display, with the expectation that this difference in viewing conditions will be allowed for in the way the display is calibrated. The ambient light level option is a way of doing this. By default calibration will not make any allowances for viewing conditions, but will calibrate to the specified response curve, but if the ambient light level is entered or measured, an appropriate viewing conditions adjustment will be performed. For a gamma value or sRGB, the original viewing conditions will be assumed to be that of the sRGB standard viewing conditions, while for REC 709 and SMPTE 240M they will be assumed to be television studio viewing conditions.<br />
By specifying or measuring the ambient lighting for your display, a viewing conditions adjustment based on the CIECAM02 color appearance model will be made for the brightness of your display and the contrast it makes with your ambient light levels.</p>
<p>Please note your measurement device needs ambient measuring capability (e.g. like the i1 Pro or i1 Display with their respective ambient measurement heads) to measure the ambient light level.</p>
</dd>
<dt id="settings_calibration_black_output_offset">Black output offset</dt>
<dd>
<p>(To see this setting, go into the “Options” menu, and enable “Show advanced options”)</p>
<p>Real displays do not have a zero black response, while all the target response curves do, so this has to be allowed for in some way.</p>
<p>The default way of handling this (equivalent to 100% black output offset) is to allow for this at the output of the ideal response curve, by offsetting and scaling the output values. This defined a curve that will match the responses that many other systems provide and may be a better match to the natural response of the display, but will give a less visually even response from black.</p>
<p>The other alternative is to offset and scale the input values into the ideal response curve so that zero input gives the actual non-zero display response. This ensures the most visually even progression from display minimum, but might be hard to achieve since it is different to the natural response of a display.</p>
<p>A subtlety is to provide a split between how much of the offset is accounted for as input to the ideal response curve, and how much is accounted for at the output, where the degree is 0.0 accounts for it all as input offset, and 100% accounts for all of it as output offset.</p>
</dd>
<dt id="settings_calibration_black_point_correction">Black point correction</dt>
<dd>
<p>(To see this setting, go into the “Options” menu, and enable “Show advanced options”)</p>
<p>Normally dispcal will attempt to make all colors down the neutral axis (R=G=B) have the same hue as the chosen white point. Near the black point, red, green or blue can only be added, not subtracted from zero, so the process of making the near black colors have the desired hue, will lighten them to some extent. For a device with a good contrast ratio or a black point that has nearly the same hue as the white, this is not a problem. If the device contrast ratio is not so good, and the black hue is noticeably different to that of the chosen white point (which is often the case for LCD type displays), this could have a noticeably detrimental effect on an already limited contrast ratio. Here the amount of black point hue correction can be controlled.<br />
By default a factor of 100% will be used, which is usually good for “Refresh”-type displays like CRT or Plasma and also by default a factor of 0% is used for LCD type displays, but you can override these with a custom value between 0% (no correction) to 100% (full correction), or enable automatically setting it based on the measured black level of the display.</p>
<p>If less than full correction is chosen, then the resulting calibration curves will have the target white point down most of the curve, but will then cross over to the native or compromise black point.</p>
</dd>
<dt id="settings_calibration_black_point_correction_rate">Black point correction rate (only available if using Argyll CMS >= 1.0.4)</dt>
<dd>
<p>(To see this setting, go into the “Options” menu, and enable “Show advanced options”)</p>
<p>If the black point is not being set completely to the same hue as the white point (ie. because the factor is less than 100%), then the resulting calibration curves will have the target white point down most of the curve, but will then blend over to the native or compromise black point that is blacker, but not of the right hue. The rate of this blend can be controlled. The default value is 4.0, which results in a target that switches from the white point target to the black, moderately close to the black point. While this typically gives a good visual result with the target neutral hue being maintained to the point where the crossover to the black hue is not visible, it may be asking too much of some displays (typically LCD type displays), and there may be some visual effects due to inconsistent color with viewing angle. For this situation a smaller value may give a better visual result (e.g. try values of 3.0 or 2.0. A value of 1.0 will set a pure linear blend from white point to black point). If there is too much coloration near black, try a larger value, e.g. 6.0 or 8.0.</p>
</dd>
<dt id="settings_calibration_quality">Calibration speed</dt>
<dd>
<p>(This setting will not apply and be hidden when the tone curve is set to “As measured”)</p>
<p>Determines how much time and effort to go to in calibrating the display. The lower the speed, the more test readings will be done, the more refinement passes will be done, the tighter will be the accuracy tolerance, and the more detailed will be the calibration of the display. The result will ultimately be limited by the accuracy of the instrument, the repeatability of the display and instrument, and the resolution of the video card gamma table entries and digital or analogue output (RAMDAC).</p>
</dd>
</dl>
</div>
<div id="settings_profiling">
<h3>Profiling settings</h3>
<dl>
<dt>Profile quality</dt>
<dd>Sets the level of effort and/or detail in the resulting profile. For table based profiles (<abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr>), it sets the main lookup table size, and hence quality in the resulting profile. For matrix profiles it sets the per channel curve detail level and fitting “effort”.</dd>
<dt id="settings_profiling_bpc">Black point compensation (enable “Show advanced options” in the “Options” menu)</dt>
<dd>
<p>(Note: This option has no effect if just calibrating and creating a simple curves + matrix profile directly from the calibration data without additional profiling measurements)</p>
<p>This effectively prevents black crush when using the profile, but at the expense of accuracy. It is generally best to only use this option when it is not certain that the applications you are going to use have a high quality color management implementation. For LUT profiles, more sophisticated options exist (i.e. <a href="#settings_profiling_gamutmapping">advanced gamut mapping options</a> and use either “Enhance effective resolution of colorimetric <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr>-to-device tables”, which is enabled by default, or “Gamut mapping for perceptual intent”, which can be used to create a perceptual table that maps the black point).</p>
</dd>
<dt id="settings_profiling_profile_type">Profile type (enable “Show advanced options” in the “Options” menu)</dt>
<dd>
<p>Generally you can differentiate between two types of profiles: <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> based and matrix based.</p>
<p>Matrix based profiles are smaller in filesize, somewhat less accurate (though in most cases smoother) compared to <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> based types, and usually have the best compatibility across <abbr title="Color Mangement Module">CMM<sup><a href="#definition_CMM">[2]</a></sup></abbr>s, applications and systems — but only support the colorimetric intent for color transforms. For matrix based profiles, the <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr> is always XYZ. You can choose between using individual curves for each channel (red, green and blue), a single curve for all channels, individual gamma values for each channel or a single gamma for all channels. Curves are more accurate than gamma values. A single curve or gamma can be used if individual curves or gamma values degrade the gray balance of an otherwise good calibration.</p>
<p><abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> based profiles are larger in filesize, more accurate (but may sacrifice smoothness), in some cases less compatible (applications might not be able to use or show bugs/quirks with <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> type profiles, or certain variations of them).
When choosing a <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> based profile type, advanced gamut mapping options become available which you can use to create perceptual and/or saturation tables inside the profile in addition to the default colorimetric tables which are always created.<br />
L*a*b* or XYZ can be used as <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr>, with XYZ being recommended especially for wide-gamut displays bacause their primaries might exceed the <abbr title="International Color Consortium">ICC<sup><a href="#definition_ICC">[5]</a></sup></abbr> L*a*b* encoding range (Note: Under Windows, XYZ <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> types are only available in DisplayCAL if using Argyll CMS >= 1.1.0 because of a requirement for matrix tags in the profile, which are not created by prior Argyll CMS versions).<br />
As it is hard to verify if the <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> of an combined XYZ <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> + matrix profile is actually used, you may choose to create a profile with a swapped matrix, ie. blue-red-green instead of red-green-blue, so it will be obvious if an application uses the (deliberately wrong) matrix instead of the (correct) LUT because the colors will look very wrong (e.g. everything that should be red will be blue, green will be red, blue will be green, yellow will be purple etc).</p>
<p id="difference_lutcurves_lutprofile">Note: <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr>-based profiles (which contain three-dimensional LUTs) might be confused with video card <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr> (calibration) curves (one-dimensional LUTs), but they're two different things. Both <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr>-based and matrix-based profiles may include calibration curves which can be loaded into a video card's gamma table hardware.</p>
</dd>
<dt id="settings_profiling_gamutmapping">Advanced gamut mapping options (enable “Show advanced options” in the “Options” menu)</dt>
<dd>
<p>You can choose any of the following options after selecting a LUT profile type and clicking “Advanced...”. <em>Note:</em> The options “Low quality <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr>-to-device tables” and “Enhance effective resolution of colorimetric <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr>-to-device table” are mutually exclusive.</p>
<h4>Low quality <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr>-to-device tables</h4>
<p>Choose this option if the profile is only going to be used with inverse device-to-<abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr> gamut mapping to create a DeviceLink or 3D LUT (DisplayCAL always uses inverse device-to-<abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr> gamut mapping when creating a DeviceLink/3D LUT). This will reduce the processing time needed to create the <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr>-to-device tables. <strong>Don't</strong> choose this option if you want to install or otherwise use the profile.</p>
<h4>Enhance effective resolution of colorimetric <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr>-to-device table</h4>
<p>To use this option, you have to select a XYZ or L*a*b* LUT profile type (XYZ will be more effective). This option increases the effective resolution of the <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr> to device colorimetric color lookup table by using a matrix to limit the XYZ space and fill the whole grid with the values obtained by inverting the device-to-<abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr> table, as well as optionally applies smoothing. If no <a href="#settings_profiling_gamutmapping_ciecam02">CIECAM02 gamut mapping</a> has been enabled for the perceptual intent, a simple but effective perceptual table (which is almost identical to the colorimetric table, but maps the black point to zero) will also be generated.</p>
<p>You can also set the interpolated lookup table size. The default “Auto” will use a base 33x33x33 resulution that is increased if needed and provide a good balance between smoothness and accuracy. Lowering the resolution can increase smoothness (at the potential expense of some accuracy), while increasing resolution may make the resulting profile potentially more accurate (at the expense of some smoothness). Note that computation will need a lot of memory (>= 4 GB of RAM recommended to prevent swapping to harddisk) especially at higher resolutions.</p>
<p>See below example images for the result you can expect, where the original image has been converted from sRGB to the display profile. Note though that the particular synthetic image chosen, a “granger rainbow”, exaggerates banding, real-world material is much less likely to show this. Also note that the sRGB blue in the image is actually out of gamut for the specific display used, and the edges visible in the blue gradient for the rendering are a result of the color being out of gamut, and the gamut mapping thus hitting the less smooth gamut boundaries.</p>
<div style="overflow: hidden; padding: 1.4em 16px 1.4em 0; text-align: center">
<div>
<p><a data-lightbox="lightbox-set-smooth_b2a" href="http://displaycal.net/img/GrangerRainbow.png"><img src="http://displaycal.net/img/GrangerRainbow.thumb.png" alt="Original Granger Rainbow image" style="box-shadow: 0px 1px 3px rgba(0, 0, 0, .75);" /></a></p>
<p>Original “granger rainbow” image</p>
</div>
<div style="display: inline-block; margin: 0 12px; vertical-align: top; width: 200px">
<p><a data-lightbox="lightbox-set-smooth_b2a" href="http://displaycal.net/img/GrangerRainbow_sRGB_to_widegamut_colorimetric_default.png"><img src="http://displaycal.net/img/GrangerRainbow_sRGB_to_widegamut_colorimetric_default.thumb.png" alt="Granger Rainbow - default colorimetric rendering" style="box-shadow: 0 1px 3px rgba(0, 0, 0, .75);" /></a></p>
<p>Default colorimetric rendering <span style="white-space: nowrap">(2500 OFPS XYZ LUT profile)</span></p>
</div>
<div style="display: inline-block; margin: 0 12px; vertical-align: top; width: 200px">
<p><a data-lightbox="lightbox-set-smooth_b2a" href="http://displaycal.net/img/GrangerRainbow_sRGB_to_widegamut_smooth_colorimetric.png"><img src="http://displaycal.net/img/GrangerRainbow_sRGB_to_widegamut_smooth_colorimetric.thumb.png" alt="Granger Rainbow - “smooth” colorimetric rendering" style="box-shadow: 0 1px 3px rgba(0, 0, 0, .75);" /></a></p>
<p>“Smooth” colorimetric rendering <span style="white-space: nowrap">(2500 OFPS XYZ LUT profile</span>, inverted A2B)</p>
</div>
<div style="display: inline-block; margin: 0 12px; vertical-align: top; width: 200px">
<p><a data-lightbox="lightbox-set-smooth_b2a" href="http://displaycal.net/img/GrangerRainbow_sRGB_to_widegamut_smooth_perceptual.png"><img src="http://displaycal.net/img/GrangerRainbow_sRGB_to_widegamut_smooth_perceptual.thumb.png" alt="Granger Rainbow - “smooth” perceptual rendering" style="box-shadow: 0 1px 3px rgba(0, 0, 0, .75);" /></a></p>
<p>“Smooth” perceptual rendering <span style="white-space: nowrap">(2500 OFPS XYZ LUT profile</span>, inverted A2B)</p>
</div>
</div>
<h4>Default rendering intent for profile</h4>
<p>Sets the default rendering intent. In theory applications could use this, in practice they don't, so changing this setting probably won't have any effect whatsoever.</p>
<h4 id="settings_profiling_gamutmapping_ciecam02">CIECAM02 gamut mapping</h4>
<p>Note: When enabling one of the CIECAM02 gamut mapping options, and the source profile is a matrix profile, then enabling effective resolution enhancement will also influence the CIECAM02 gamut mapping, making it smoother, more accurate and also generated faster as a side-effect.</p>
<p>Normally, profiles created by DisplayCAL only incorporate the colorimetric rendering intent, which means colors outside the display's gamut will be clipped to the next in-gamut color. LUT-type profiles can also have gamut mapping by implementing perceptual and/or saturation rendering intents (gamut compression/expansion). You can choose if and which of those you want by specifying a source profile and marking the appropriate checkboxes. Note that a input, output, display or device colororspace profile should be specified as source, not a non-device colorspace, device link, abstract or named color profile. You can also choose viewing conditions which describe the intended use of both the source and the display profile that is to be generated. An appropriate source viewing condition is chosen automatically based on the source profile type.</p>
<p>An explanation of the available rendering intents can be found in the 3D LUT section “<a href="#rendering-intents">Rendering intent</a>”.</p>
<p>For more information on why a source gamut is needed, see “<a href="http://argyllcms.com/doc/iccgamutmapping.html">About ICC profiles and Gamut Mapping</a>” in the Argyll CMS documentation.</p>
<p>One strategy for getting the best perceptual results with display profiles is as follows: Select a CMYK profile as source for gamut mapping. Then, when converting from another RGB profile to the display profile, use relative colorimetric intent, and if converting from a CMYK profile, use the perceptual intent.<br />
Another approach which especially helps limited-gamut displays is to choose one of the larger (gamut-wise) source profiles you usually work with for gamut mapping, and then always use perceptual intent when converting to the display profile.</p>
<p>Please note that not all applications support setting a rendering intent for display profiles and might default to colorimetric (e.g. Photoshop normally uses relative colorimetric with black point compensation, but can use different intents via custom soft proofing settings).</p>
</dd>
<dt id="testchart_file">Testchart file</dt>
<dd>You can choose the test patches used when profiling the display here. The default “Auto” optimized setting takes the actual display characteristics into account. You can further increase potential profile accuracy by increasing the number of patches using the slider.</dd>
<dt id="testchart_editor">Testchart editor</dt>
<dd>
<p>The provided default testcharts should work well in most situations, but allowing you to create custom charts ensures maximum flexibility when characterizing a display and can improve profiling accuracy and efficiency. See also <a href="#optimizecharts">optimizing testcharts</a>.</p>
<h4>Testchart generation options</h4>
<p>You can enter the amount of patches to be generated for each patch type (white, black, gray, single channel, iterative and multidimensional cube steps). The iterative algorythm can be tuned if more than zero patches are to be generated. What follows is a quick description of the several available iterative algorythms, with “device space” meaning in this case RGB coordinates, and “perceptual space” meaning the (assumed) XYZ numbers of those RGB coordinates. The assumed XYZ numbers can be influenced by providing a previous profile, thus allowing optimized test point placement.</p>
<ul>
<li>Optimized Farthest Point Sampling (OFPS) will optimize the point locations to minimize the distance from any point in device space to the nearest sample point</li>
<li>Incremental Far Point Distribution incrementally searches for test points that are as far away as possible from any existing points</li>
<li>Device space random chooses test points with an even random distribution in device space</li>
<li>Perceptual space random chooses test points with an even random distribution in perceptual space</li>
<li>Device space filling quasi-random chooses test points with a quasi-random, space filling distribution in device space</li>
<li>Perceptual space filling quasi-random chooses test points with a quasi-random, space filling distribution in perceptual space</li>
<li>Device space body centered cubic grid chooses test points with body centered cubic distribution in device space</li>
<li>Perceptual space body centered cubic grid chooses test points with body centered cubic distribution in perceptual space</li>
</ul>
<p>You can set the degree of adaptation to the known device characteristics used by the default full spread OFPS algorithm. A preconditioning profile should be provided if adaptation is set above a low level. By default the adaptation is 10% (low), and should be set to 100% (maximum) if a profile is provided. But, if for instance, the preconditioning profile doesn't represent the device behavior very well, a lower adaption than 100% might be appropriate.</p>
<p>For the body centered grid distributions, the angle parameter sets the overall angle that the grid distribution has.</p>
<p>The “Gamma” parameter sets a power-like (to avoid the excessive compression that a real power function would apply) value applied to all of the device values after they are generated. A value greater than 1.0 will cause a tighter spacing of test values near device value 0.0, while a value less than 1.0 will cause a tighter spacing near device value 1.0. Note that the device model used to create the expected patch values will not take into account the applied power, nor will the more complex full spread algorithms correctly take into account the power.</p>
<p>The neutral axis emphasis parameter allows changing the degree to which the patch distribution should emphasise the neutral axis. Since the neutral axis is regarded as the most visually critical area of the color space, it can help maximize the quality of the resulting profile to place more measurement patches in this region. This emphasis is only effective for perceptual patch distributions, and for the default OFPS distribution if the adaptation parameter is set to a high value. It is also most effective when a preconditioning profile is provided, since this is the only way that neutral can be determined. The default value of 50% provides an effect about twice the emphasis of the CIE94 Delta E formula.</p>
<p>The dark region emphasis parameter allows changing the degree to which the patch distribution should emphasis dark region of the device response. Display devices used for video or film reproduction are typically viewed in dark viewing environments with no strong white reference, and typically employ a range of brightness levels in different scenes. This often means that the devices dark region response is of particular importance, so increasing the relative number of sample points in the dark region may improve the balance of accuracy of the resulting profile for video or film reproduction. This emphasis is only effective for perceptual patch distributions where a preconditioning profile is provided. The default value of 0% provides no emphasis of the dark regions. A value somewhere around 15% - 30% is a good place to start for video profile use. A scaled down version of this parameter will be passed on to the profiler. Note that increasing the proportion of dark patches will typically lengthen the time that an instrument takes to read the whole chart. Emphasizing the dark region characterization will reduce the accuracy of measuring and modelling the lighter regions, given a fixed number of test points and profile quality/grid resolution. The parameter will also be used in an analogous way to the “Gamma” value in changing the distribution of single channel, grayscale and multidimensional steps.</p>
<p>The “Limit samples to sphere” option is used to define an L*a*b* sphere to filter the test points through. Only test points within the sphere (defined by it's center and radius) will be in the generated testchart. This can be good for targeting supplemental test points at a troublesome area of a device. The accuracy of the L*a*b* target will be best when a reasonably accurate preconditioning profile for the device is chosen. Note that the actual number of points generated can be hard to predict, and will depend on the type of generation used. If the OFPS, device and perceptual space random and device space filling quasi-random methods are used, then the target number of points will be achieved. All other means of generating points will generate a smaller number of test points than expected. For this reason, the device space filling quasi-random method is probably the easiest to use.</p>
<h4>Generating diagnostic 3D views of testcharts</h4>
<p>You can generate 3D views in several formats. The default HTML format should be viewable in a modern WebGL-enabled browser. You can choose the colorspace(s) you want to view the results in and also control whether to use RGB black offset (which will lighten up dark colors so they are better visible) and whether you want white to be neutral. All of these options are purely visual and will not influence the actual test patches.</p>
<h4>Other functions</h4>
<p>If generating any number of iterative patches as well as single channel, gray or multidimensional patches, you can add the single channel, gray and multidimensional patches in a separate step by holding the shift key while clicking on “Create testchart”. This prevents those patches affecting the iterative patch distribution, with the drawback of making the patch distribution less even. This is an experimental feature.</p>
<p>You are also able to:</p>
<ul>
<li>Export patches as CSV, TIFF, PNG or DPX files, and set how often each patch should be repeated when exporting as images after you click the “Export” button (black patches will be repeated according to the “Max” value, and white patches according to the “Min” value, and patches in between according to their lightness in L* scaled to a value between “Min” and “Max”).</li>
<li>Add saturation sweeps which are often used in a video or film context to check color saturation. A preconditioning profile needs to be used to enable this.</li>
<li>Add reference patches from measurement files in CGATS format, from named color ICC profiles, or by analyzing TIFF, JPEG or PNG images. A preconditioning profile needs to be used to enable this.</li>
<li>Sort patches by various color criteria (warning: this will interfere with the Argyll CMS 1.6.0 or newer patch order
optimisation which minimizes measurement times, so manual sorting should only be used for visual inspection of testcharts, or if required to optimize the patch order for untethered measurements in automatic mode where it is useful to maximize the lightness difference from patch to patch so the automatism has an easier time detecting changes).</li>
</ul>
<h4>Patch editor</h4>
<p>Controls for the spreadsheet-like patch editor are as follows:</p>
<ul>
<li>To select patches, click and drag the mouse over table cells, or hold SHIFT (select range) or CTRL/CMD (add/remove single cells/rows to/from selection)</li>
<li>To add a patch below an existing one, double-click a row label</li>
<li>To delete patches, select them, then hold CTRL (Linux, Windows) or CMD (Mac OS X) and hit DEL or BACKSPACE (will always delete whole rows even if only single cells are selected)</li>
<li>CTRL-C/CTRL-V/CTRL-A = copy/paste/select all</li>
</ul>
<p>If you want to insert a certain amount of patches generated in a spreadsheet application (as RGB coordinates in the range 0.0-100.0 per channel), the easiest way to do this is to save them as CSV file and drag & drop it on the testchart editor window to import it.</p>
</dd>
<dt>Profile name</dt>
<dd>
<p>As long as you do not enter your own text here, the profile name is auto generated from the chosen calibration and profiling options. The current auto naming mechanism creates quite verbose names which are not necessarily nice to read, but they can help in identifying the profile.<br />
Also note that the profile name is not only used for the resulting profile, but for all intermediate files as well (filename extensions are added automatically) <em>and</em> all files are stored in a folder of that name. You can choose where this folder is created by clicking the disk icon next to the field (it defaults to your system's default location for user data).</p>
<p>Here's an example under Linux, on other platforms some file extensions and the location of the home directory will differ. See <a href="#userdata">User data and configuration file locations</a>. You can mouse over the filenames to get a tooltip with a short description what the file is for:</p>
<p>Chosen profile save path: <samp title="User home directory">~/.local/share/DisplayCAL/storage</samp></p>
<p>Profile name: <samp>mydisplay</samp></p>
<p>The following folder will be created: <samp>~/.local/share/DisplayCAL/storage/mydisplay</samp></p>
<p>During calibration & profiling the following files will be created:</p>
<p><samp><span title="Log of the generation of the 3D representation of the profile colorspace vs. Adobe RGB (useful for troubleshooting)">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay vs ClayRGB1998.log</span><br />
<span title="3D representation of the profile colorspace vs. Adobe RGB as compressed VRML file">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay vs ClayRGB1998.wrz</span><br />
<span title="Log of the generation of the 3D representation of the profile colorspace vs. sRGB (useful for troubleshooting)">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay vs sRGB.log</span><br />
<span title="3D representation of the profile colorspace vs. sRGB as compressed VRML file">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay vs sRGB.wrz</span><br />
<span title="Contains calibration curves and most settings used for calibration">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay.cal</span><br />
<span title="Gamut of the profile colorspace as compressed CGATS file">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay.gam.gz</span><br />
<span title="The end result, a display profile">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay.icc</span><br />
<span title="Log of the generation of the display profile (useful for troubleshooting)">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay.log</span><br />
<span title="Contains the measurement patches used to create the .ti3 measurement file">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay.ti1</span><br />
<span title="Contains the measured display response">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay.ti3</span><br />
<span title="3D representation of the profile colorspace">~/.local/share/DisplayCAL/storage/mydisplay/mydisplay.wrz</span></samp></p>
<p>Any used colorimeter correction file will also be copied to the profile folder.</p>
</dd>
</dl>
</div>
<div id="calibrating">
<h3>Calibrating / profiling</h3>
<p>If you are unclear about the difference between calibration and profiling (also called characterization), see “<a href="http://www.argyllcms.com/doc/calvschar.html">Calibration vs. Characterization</a>” in the Argyll CMS documentation.</p>
<p>Please let the screen stabilize for at least half an hour after powering it up before doing any measurements or assessing its color properties. The screen can be used normally with other applications during that time.</p>
<p>After you have set your options, click on the button at the bottom
to start the actual calibration/profiling process. The main window will hide during measurements, and should pop up again after they are completed (or after an
error). You can always cancel out of running measurements using the “Cancel” button in the progress dialog, or by pressing ESC or Q. Viewing the informational log window (from the “Tools” menu) after measurements will give you access to the raw output of the Argyll CMS commandline tools and other verbose information.</p>
<h4 id="adjusting">Adjusting a display before calibration</h4>
<p>If you clicked “Calibrate” or “Calibrate & profile” and have not turned off “Interactive display adjustment”, you will be presented with the interactive display adjustment window which contains several options to help you bring a display's characteristics closer to the chosen target values. Depending on wheter you have a “Refresh”- or LCD-type display, I will try to give some recommendations here which options to adjust, and which to skip.</p>
<h5>Adjusting a LCD display</h5>
<p>For LCD displays, you will in most cases only want to adjust white point (if the screen has RGB gain or other whitepoint controls) and white level (with the white level also affecting the black level unless you have a local dimming LED model), as many LCDs lack the necessary “offset” controls to adjust the black point (and even if they happen to have them, they often change the overall color temperature, not only the black point). Also note that for most LCD screens, you should leave the “contrast” control at (factory) default.</p>
<dl>
<dt>White point</dt>
<dd>
If your screen has RGB gain, colortemperature or other whitepoint controls, the first step should be adjusting the whitepoint. Note that you may also benefit from this adjustment if you have set the target whitepoint to “native”, as it will allow you to bring it closer to the daylight or blackbody locus, which can help the human visual system to better adapt to the whitepoint. Look at the bars shown during the measurements to adjust RGB gains and minimize the delta E to the target whitepoint.
</dd>
<dt>White level</dt>
<dd>
Continue with the white level adjustment. If you have set a target white level, you may reduce or increase the brightness of your screen (ideally using only the backlight) until the desired value is reached (i.e. the bar ends at the marked center position). If you haven't set a target, simply adjust the screen to a visually pleasing brightness that doesn't cause eye strain.
</dd>
</dl>
<h5>Adjusting a “Refresh”-type display like CRT or Plasma</h5>
<dl>
<dt>Black level</dt>
<dd>
On “Refresh”-type displays, this adjustment is usually done using the “brightness” control. You may reduce or increase the brightness of your screen until the desired black level is reached (i.e. the bar ends at the marked center position).
</dd>
<dt>White point</dt>
<dd>
The next step should be adjusting the whitepoint, using the display's RGB gain controls or other means of adjusting the whitepoint. Note that you may also benefit from this adjustment if you have set the target whitepoint to “native”, as it will allow you to bring it closer to the daylight or blackbody locus, which can help the human visual system to better adapt to the whitepoint. Look at the bars shown during the measurements to adjust RGB gains and minimize the delta E to the target whitepoint.
</dd>
<dt>White level</dt>
<dd>
Continue with the white level adjustment. On “Refresh”-type displays this is usually done using the “contrast” control. If you have set a target white level, you may reduce or increase contrast until the desired value is reached (i.e. the bar ends at the marked center position). If you haven't set a target, simply adjust the screen to a visually pleasing level that doesn't cause eye strain.
</dd>
<dt>Black point</dt>
<dd>
If your display has RGB offset controls, you can adjust the black point as well, in much the same way that you adjusted the whitepoint.
</dd>
</dl>
<h5>Finishing adjustments and starting calibration/characterization</h5>
<p>After the adjustments, you can run a check on all the settings by choosing the last option from the left-hand menu to verify the achieved values. If adjusting one setting adversely affected another, you can then simply repeat the respective option as necessary until the target parameters are met.</p>
<p>Finally, select “Continue on to calibration/profiling” to start the non-interactive part. You may want to get a coffee or two as the process can take a fair amount of time, especially if you selected a high quality level. If you only wanted help to adjust the display and don't want/need calibration curves to be created, you can also choose to exit by closing the interactive display adjustment window and then select “Profile only” from the main window.<br />
If you originally selected “Calibrate & profile” and fulfil the requirements for <a href="#requirements-unattended">unattended calibration & profiling</a>, the characterization measurements for the profiling process should start automatically after calibration is finished. Otherwise, you may be forced to take the instrument off the screen to do a sensor self-calibration before starting the profiling measurements.</p>
<h5 id="optimizecharts">Optimizing testcharts for improved profiling accuracy and efficiency</h5>
<p>The easiest way to use an optimized testchart for profiling is to set the testchart to “Auto” and adjusting the patch amount slider to the desired number of test patches. Optimization will happen automatically as part of the profiling measurements (this will increase measurement and processing times by a certain degree).<br />
Alternatively, if you want to do generate an optimized chart manually prior to a new profiling run, you could go about this in the following way:</p>
<ul>
<li>Have a previous display profile and select it under “Settings”.</li>
<li>Select one of the pre-baked testcharts to use as base and bring up the testchart editor.</li>
<li>Next to “Preconditioning profile” click on “current profile”. It should automatically select the previous profile you've
chosen. Then place a check in the checkbox. Make sure adaptation is set to a high level (e.g. 100%)</li>
<li>If desired, adjust the number of patches and make sure the iterative patches amount is not zero.</li>
<li>Create the chart and save it. Click “yes” when asked to select the newly generated chart.</li>
<li>Start the profiling measurements (e.g. click “calibrate & profile” or “profile only”).</li>
</ul>
<h4>Profile installation</h4>
<p>When installing a profile after creating or updating it, a startup item to load its calibration curves
automatically on login will be created (on Windows and Linux, Mac OS X does not need a loader). You may also prevent this loader from doing anything by removing the check in the “Load calibration curves on Login” checkbox in the profile installation dialog, and in case you are using Windows 7 or later, you may let the operating system handle calibration loading instead (note that the Windows internal calibration loader does not offer the same high precision as the DisplayCAL profile loader, due to wrong scaling and 8-bit quantization).</p>
<h4>Profile loader (Windows)</h4>
<p>Under Windows, the profile loader will stay in the taskbar tray and keep the calibration loaded. In addition, the profile loader is <a href="http://madvr.com/">madVR</a>-aware and will disable calibration loading if it detects e.g. madTPG or madVR being used by a video player. A right-click menu also allows you to set the desired calibration state and a few other options:</p>
<ul>
<li><strong>Reload calibration from current display device profile(s)</strong>. Selecting this reloads the calibration instantly, and also sets the desired calibration state (see “Preserve calibration state” below).</li>
<li><strong>Reset video card gamma table</strong>. Selecting this resets the video card gamma tables instantly, and also sets the desired calibration state (see “Preserve calibration state” below).</li>
<li><strong>Preserve calibration state</strong>. This periodically checks if the video card gamma tables match the desired calibration state. It may take up to three seconds until the selected calibration state is automatically re-applied.</li>
<li><strong>Fix profile associations automatically</strong> when only one display is active in a multi-display setup. This is a work-around for applications (and Windows itself) querying the display profile in a way that does not take into account the active display, which can lead to a wrong profile being used. A pre-requisite for this working correctly is that the profile loader has to be running <strong>before</strong> you switch from a multi-display to a single-display configuration in Windows, and the profile associations have to be correct at this point. Note that quitting the profile loader will restore profile associations to what they were (honoring any changes to profile associations during its runtime).</li>
</ul>
</div>
<div>
<h3 id="create-3dlut">Creating 3D LUTs</h3>
<p>You can create display correction RGB-in/RGB-out 3D LUTs (for use in video playback or editing applications/devices that don't have ICC support) as part of the profiling process.</p>
<h4>3D LUT settings</h4>
<dl>
<dt>Create 3D LUT after profiling</dt>
<dd>Normally after profiling, you'll be given the option to install the profile to make it available for ICC color managed applications. If this box is checked, you'll have the option to generate a 3D LUT (with the chosen settings) instead, and the 3D LUT settings will also be stored inside the profile, so that they can be easily restored by selecting the profile under “Settings” if needed. If this box is unchecked, you can create a 3D LUT from an existing profile.</dd>
<dt>Source colorspace/source profile</dt>
<dd>This sets the source colorspace for the 3D LUT, which is normally a video standard space like defined by Rec. 709 or Rec. 2020.</dd>
<dt>Tone curve</dt>
<dd>This allows to set a predefined or custom tone response curve for the 3D LUT. Predefined settings are Rec. 1886 (input offset) and Gamma 2.2 (output offset, pure power).</dd>
<dt>Apply calibration (vcgt) (only visible if “Show advanced options” in the “Options” menu is enabled)</dt>
<dd>Apply the profile's 1D LUT calibration (if any) to the 3D LUT. Nornmally, this should always be enabled if the profile contains a non-linear 1D LUT calibration, otherwise you have to make sure the 1D calibration is loaded whenever the 3D LUT is used.</dd>
<dt>Gamut mapping mode (only visible if “Show advanced options” in the “Options” menu is enabled)</dt>
<dd>The default gamut mapping mode is “Inverse device to PCS” and gives the most accurate results. In case a profile with high enough PCS-to-device tables is used, the option “PCS-to-device” is selectable as well, which allows for quicker generation of a 3D LUT, but is somewhat less accurate.</dd>
<dt id="rendering-intents">Rendering intent</dt>
<dd>
<ul>
<li><strong>“Absolute colorimetric”</strong> is intended to reproduce colors exactly. Out of gamut colors will be clipped to the closest possible match. The destination whitepoint will be altered to match the source whitepoint if possible, which may get clipped if it is out of gamut.</li>
<li><strong>“Absolute appearance”</strong> maps colors from source to destination, trying to match the appearance of colors as closely as possible, but may not exactly map the whitepoint. Out of gamut colors will be clipped to the closest possible match.</li>
<li><strong>“Absolute colorimetric with white point scaling”</strong> behaves almost exactly like “Absolute colorimetric”, but will scale the source colorspace down to make sure the source whitepoint isn't clipped.</li>
<li><strong>“Luminance matched appearance”</strong> linearly compresses or expands the luminance axis from white to black to match the source to the destination space, while not otherwise altering the gamut, clipping any out of gamut colors to the closest match. The destination whitepoint is <strong>not</strong> altered to match the source whitepoint.</li>
<li><strong>“Perceptual”</strong> uses three-dimensional compression to make the source gamut fit within the destination gamut. As much as possible, clipping is avoided, hues and the overall appearance is maintained. The destination whitepoint is <strong>not</strong> altered to match the source whitepoint. This intent is useful if the destination gamut is smaller than the source gamut.</li>
<li><strong>“Perceptual appearance”</strong> uses three-dimensional compression to make the source gamut fit within the destination gamut. As much as possible, clipping is avoided, hues and the overall appearance is maintained. The destination whitepoint is altered to match the source whitepoint. This intent is useful if the destination gamut is smaller than the source gamut.</li>
<li><strong>“Luminance preserving perceptual”</strong> (Argyll CMS 1.8.3+) uses compression to make the source gamut fit within the destination gamut, but very heavily weights the preservation of the luminance value of the source, which will compromise the preservation of saturation. No contrast enhancement is used if the dynamic range is reduced. This intent may be of use where preserving the tonal distinctions in images is more important than maintaining overall colorfulness or contrast.</li>
<li><strong>“Preserve saturation”</strong> uses three-dimensional compression and expansion to try and make the source gamut match the destination gamut, and also favours higher saturation over hue or lightness preservation. The destination whitepoint is <strong>not</strong> altered to match the source whitepoint.</li>
<li><strong>“Relative colorimetric”</strong> is intended to reproduce colors exactly, but relative to the destination whitepoint which will <strong>not</strong> be altered to match the source whitepoint. Out of gamut colors will be clipped to the closest possible match. This intent is useful if you have calibrated a display to a custom whitepoint that you want to keep.</li>
<li><strong>“Saturation”</strong> uses the same basic gamut mapping as “Preserve saturation”, but increases saturation slightly in highly saturated areas of the gamut.</li>
</ul>
</dd>
<dt>3D LUT file format</dt>
<dd>Sets the output format for the 3D LUT. Currently supported are Autodesk/Kodak (<code>.3dl</code>), Iridas (<code>.cube</code>), eeColor (<code>.txt</code>), <a href="http://madvr.com/">madVR</a> (<code>.3dlut</code>), Pandora (<code>.mga</code>), Portable Network Graphic (<code>.png</code>), <a href="http://reshade.me/">ReShade</a> (<code>.png</code>, <code>.fx</code>) and Sony Imageworks (<code>.spi3d</code>). Note that an ICC device link profile (the ICC equivalent of an RGB-in/RGB-out 3D LUT) is always created as well.</dd>
<dt>Input/output encoding</dt>
<dd>Some 3D LUT formats allow you to set the input/output encoding. Note that in most cases, sensible defaults will be chosen depending on selected 3D LUT format, but may be application- or workflow-specific.</dd>
<dt>Input/output bit depth</dt>
<dd>Some 3D LUT formats allow you to set the input/output bit depth. Note that in most cases, sensible defaults will be chosen depending on selected 3D LUT format, but may be application- or workflow-specific.</dd>
</dl>
<h4>Installing 3D LUTs</h4>
<p>Depending on the 3D LUT file format, installing or saving the 3D LUT to a specific location may be required before it can be used. You will be asked to install or save the 3D LUT directly after it was created. If you need to install or save the 3D LUT again at a later point, switch to the “3D LUT” tab and click the small “Install 3D LUT” button next to the “Settings” dropdown (the same button that installs display profiles when on the “Display & instrument” tab and a directly connected, desktop-accessible display is selected).</p>
<h4>Installing 3D LUTs for the ReShade injector</h4>
<p>First, you need to install <a href="http://reshade.me/">ReShade</a> for each application or game you want to use a 3D LUT with. Follow the installation instructions in the ReShade README, but in case you are using ReShade Core do <strong>not</strong> copy the example <code>ReShade.fx</code> that comes with it. If you want to use the 3D LUT together with one of the other shader packs available for ReShade, install that too <strong>prior</strong> to installing the 3D LUT. Then, install the 3D LUT from within DisplayCAL to the same folder where you previously installed/copied ReShade and related files. The default toggle key to turn the 3D LUT on and off is the HOME key. You can change this key or disable the 3D LUT altogether by editing ColorLookUpTable.fx (with a text editor) inside the application/game folder where you installed the 3D LUT. To remove a 3D LUT completely, delete ColorLookUpTable.png and ColorLookUpTable.fx, as well as edit ReShade.fx and remove the line <code class="language-clike">#include "ColorLookupTable.fx"</code> near the end.</p>
</div>
<div>
<h3 id="verify-profile">Verification / measurement report</h3>
<p>You can do verification measurements to assess the display chain's (display profile - video card and the calibration curves in its gamma table - monitor) fit to the measured data, or to find out about the soft proofing capabilities of the display chain.</p>
<p>To do the former, you have to select a <abbr title="CGATS.5 Data Exchange Format">CGATS<sup><a href="#definition_CGATS">[1]</a></sup></abbr> testchart file containing device values (RGB). The measured values are then compared to the values obtained by feeding the device RGB numbers through the display profile (measured vs expected values). The default verification chart contains 26 patches and can be used, for example, to check if a display needs to be re-profiled. If a RGB testchart with gray patches (R=G=B) is measured, like the default and extended verification charts, you also have the option to evaluate the graybalance through the calibration only, by placing a check in the corresponding box on the report.</p>
<p>To perform a check on the soft proofing capabilities, you have to provide a CGATS reference file containing XYZ or L*a*b* data, or a combination of simulation profile and testchart file, which will be fed through the display profile to lookup corresponding device (RGB) values, and then be sent to the display and measured. Afterwards, the measured values are compared to the original XYZ or L*a*b* values, which can give a hint how suitable (or unsuitable) the display is for softproofing to the colorspace indicated by the reference.</p>
<p>The profile that is to be evaluated can be chosen freely. You can select it in DisplayCAL's main window under “settings”. The report files generated after the verification measurements are plain HTML with some embedded JavaScript, and are fully self-contained. They also contain the reference and measurement data, which consists of device RGB numbers, original measured XYZ values, and D50-adapted L*a*b* values computed from the XYZ numbers, and which can be examined as plain text directly from the report at the click of a button.</p>
<h5>HowTo—Common scenarios</h5>
<p>Select the profile you want to evaluate under “Settings” (for evaluating 3D LUTs and DeviceLink profiles, this setting has significance for a Rec. 1886 or custom gamma tone response curve, because they depend on the black level).</p>
<p>There are two sets of default verification charts in different sizes, one for general use and one for Rec. 709 video. The “small” and “extended” versions can be used for a quick to moderate check to see if a display should be re-profiled, or if the used profile/3D LUT is any good to begin with. The “large” and “xl” versions can be used for a more thorough check. Also, you can create your own customized verification charts with the testchart editor.</p>
<h6>Checking the accuracy of a display profile (evaluating how well the profile characterizes the display)</h6>
<p>In this case, you want to use a testchart with RGB device values and no simulation profile. Select a suitable file under “testchart or reference” and disable “simulation profile”. Other settings that do not apply in this case will be grayed out.</p>
<h6>Checking how well a display can simulate another colorspace (evaluating softproofing capabilities, 3D LUTs, DeviceLink profiles, or native display performance)</h6>
<p>There are two ways of doing this:</p>
<ul>
<li>Use a reference file with XYZ or L*a*b* aim values,</li>
<li>or use a combination of testchart with RGB or CMYK device values and an RGB or CMYK simulation profile (for an RGB testchart, it will only allow you to use an RGB simulation profile and vice versa, and equally a CMYK testchart needs to be used with a CMYK simulation profile)</li>
</ul>
<p>Then, you have a few options that influence the simulation.</p>
<ul>
<li>
<strong>Whitepoint simulation</strong>. If you are using a reference file that contains device white (100% RGB or 0% CMYK), or if you use a combination of testchart and simulation profile, you can choose if you want whitepoint simulation of the reference or simulation profile, and if so, if you want the whitepoint simulated relative to the target profile whitepoint. To explain the latter option: Let's assume a reference has a whitepoint that is slightly blueish (compared to D50), and a target profile has a whitepoint that is more blueish (compared to D50). If you do <em>not</em> choose to simulate the reference white relative to the target profile whitepoint, and the target profile's gamut is large and accurate enough to accomodate the reference white, then that is exactly what you will get. Depending on the adaptation state of your eyes though, it may be reasonable to assume that you are to a large extent adapted to the target profile whitepoint (assuming it is valid for the device), and the simulated whitepoint will look a little yellowish compared to the target profile whitepoint. In this case, choosing to simulate the whitepoint relative to that of the target profile may give you a better visual match e.g. in a softproofing scenario where you compare to a hardcopy proof under a certain illuminant, that is close to but not quite D50, and the display whitepoint has been matched to that illuminant. It will “add” the simulated whitepoint “on top” of the target profile whitepoint, so in our example the simulated whitepoint will be even more blueish than that of the target profile alone.
</li>
<li>
<strong>Using the simulation profile as target profile</strong> will override the profile set under “Settings”. Whitepoint simulation does not apply here because color management will not be used and the display device is expected to be in the state described by the simulation profile. This may be accomplished in several ways, for example the display may be calibrated internally or externally, by a 3D LUT or device link profile. If this setting is enabled, a few other options will be available:
<ul>
<li>
<strong>Enable 3D LUT</strong> (if using the <a href="http://madvr.com/">madVR</a> display device/madTPG under Windows, or a Prisma video processor). This allows you to check how well the 3D LUT transforms the simulation colorspace to the display colorspace. Note this setting can not be used together with a DeviceLink profile.
</li>
<li>
<strong>DeviceLink profile</strong>. This allows you to check how well the DeviceLink transforms the simulation colorspace to the display colorspace. Note this setting can not be used together with the “Enable 3D LUT” setting.
</li>
</ul>
</li>
<li>
<strong>Tone response curve</strong>. If you are evaluating a 3D LUT or DeviceLink profile, choose the same settings here as during 3D LUT/DeviceLink creation (and also make sure the same target profile is set, because it is used to map the blackpoint).<br />
To check a display that does not have an associated profile (e.g. “Untethered”), set the verification tone curve to “Unmodified”. In case you want to verify against a different tone response curve instead, you need to create a synthetic profile for this purpose (“Tools” menu).
</li>
</ul>
<h4>How were the nominal and recommended aim values chosen?</h4>
<p>The nominal tolerances, with the whitepoint, average, maximum and gray balance Delta E CIE 1976 aim values stemming from <a href="http://www.fogra.org/mediawedge/">UGRA/Fogra Media Wedge</a> and <a href="http://www.ugra.ch/ugra-display-analysis-and-certification-tool.phtml">UDACT</a>, are pretty generous, so I've included somewhat stricter “recommended” numbers which I've chosen more or less arbitrarily to provide a bit “extra safety margin”.</p>
<p>For reports generated from reference files that contain CMYK numbers in addition to L*a*b* or XYZ values, you can also select the official Fogra Media Wedge V3 or IDEAlliance Control Strip aim values for paper white, CMYK solids and CMY grey, if the chart contains the right CMYK combinations.</p>
<h4>How are the results of the profile verification report to be interpreted?</h4>
<p>This depends on the chart that was measured. The explanation in the first paragraph sums it up pretty well: If you have calibrated and profiled your display, and want to check how well the profile fits a set of measurements (profile accuracy), or if you want to know if your display has drifted and needs to be re-calibrated/re-profiled, you select a chart containing RGB numbers for the verification. Note that directly after profiling, accuracy can be expected to be high if the profile characterizes the display well, which will usually be the case if the display behaviour is not very non-linear, in which case creating a LUT profile instead of a “Curves + matrix” one, or increasing the number of measured patches for LUT profiles, can help.</p>
<p>If you want to know how well your profile can simulate another colorspace (softproofing), select a reference file containing L*a*b* or XYZ values, like one of the <a href="http://www.fogra.org/mediawedge/">Fogra Media Wedge</a> subsets, or a combination of a simulation profile and testchart. Be warned though, only wide-gamut displays will handle a larger offset printing colorspace like FOGRA39 or similar well enough.</p>
<p>In both cases, you should check that atleast the nominal tolerances are not exceeded. For a bit “extra safety margin”, look at the recommended values instead.</p>
<p>Note that both tests are “closed-loop” and will not tell you an “absolute” truth in terms of “color quality” or “color accuracy” as they may not show if your instrument is faulty/measures wrong (a profile created from repeatable wrong measurements will usually still verify well against other wrong measurements from the same instrument if they don't fluctuate too much) or does not cope with your display well (which is especially true for <a href="#colorimeter-corrections">colorimeters and wide-gamut screens</a>, as such combinations need a <a href="http://argyllcms.com/doc/ccmxs.html" title="List of contributed colorimeter correction files on the Argyll CMS website">correction</a> in hardware or software to obtain accurate results—this problem does not exist with spectrometers, which do not need a correction for wide-gamut, but have lately been discovered to have issues measuring the correct brightness of some LED backlit displays which use white LEDs), or if colors on your screen match an actual colored object next to it (like a print). It is perfectly possible to obtain good verification results but the actual visual performance being sub-par. It is always wise to combine such measurements with a test of the actual visual appearance via a “known good” reference, like a print or proof (although it should not be forgotten that those also have tolerances, and illumination also plays a big role when assessing visual results). Keep all that in mind when admiring (or pulling your hair out over) verification results :)</p>
<h4>How are profiles evaluated against the measured values?</h4>
<p>Different softwares use different methods (which are not always disclosed in detail) to compare and evaluate measurements. This section aims to give interested users a better insight how DisplayCAL's profile verification feature works “under the hood”.</p>
<h5>How is a testchart or reference file used?</h5>
<p>There are currently two slightly different paths depending if a testchart or reference file is used for the verification measurements, as outlined above. In both cases, Argyll's <a href="http://www.argyllcms.com/doc/xicclu.html">xicclu</a> utility is run behind the scenes and the values of the testchart or reference file are fed relative colorimetrically (if no whitepoint simualtion is used) or absolute colorimetrically (if whitepoint simulation is used) through the profile that is tested to obtain corresponding L*a*b* (in the case of RGB testcharts) or device RGB numbers (in the case of XYZ or L*a*b* reference files or a combination of simulation profile and testchart). If a combination of simulation profile and testchart is used as reference, the reference L*a*b* values are calculated by feeding the device numbers from the testchart through the simulation profile absolute colorimetrically if whitepoint simulation is enabled (which will be the default if the simulation profile is a printer profile) and relative colorimetrically if whitepoint simulation is disabled (which will be the default if the simulation profile is a display profile, like most RGB working spaces). Then, the original RGB values from the testchart, or the looked up RGB values for a reference are sent to the display through the calibration curves of the profile that is going to be evaluated. A reference white of D50 (ICC default) and complete chromatic adaption of the viewer to the display's whitepoint is assumed if “simulate whitepoint relative to target profile whitepoint” is used, so the measured XYZ values are adapted to D50 (with the measured whitepoint as source reference white) using the Bradford transform (see <a href="http://brucelindbloom.com/Eqn_ChromAdapt.html">Chromatic Adaption</a> on <a href="http://brucelindbloom.com/">Bruce Lindbloom's website</a> for the formula and matrix that is used by DisplayCAL) or with the adaption matrix from the profile in the case of profiles with 'chad' chromatic adaption tag, and converted to L*a*b*. The L*a*b* values are then compared by the generated dynamic report, with user-selectable critera and ΔE (delta E) formula.</p>
<h5>How is the assumed vs. measured whitepoint ΔE calculated?</h5>
<p>In a report, the correlated color temperature and assumed target whitepoint, as well as the whitepoint ΔE, do warrant some further explanations: The whitepoint ΔE is calculated as difference between the measured whitepoint's and the assumed target whitepoint's normalized XYZ values, which are first converted to L*a*b*. The assumed target whitepoint color temperature shown is simply the rounded correlated color temparature (100K threshold) calculated from the measured XYZ values. The XYZ values for the assumed target whitepoint are obtained by calculating the chromaticity (xy) coordinates of a CIE D (daylight) or blackbody illuminant of that color temperature and converting them to XYZ. You can find all the used formulas on <a href="http://brucelindbloom.com/">Bruce Lindbloom's website</a> and on <a href="http://en.wikipedia.org/wiki/Planckian_locus#Approximation">Wikipedia</a>.</p>
<h5>How is the gray balance “range” evaluated?</h5>
<p>The gray balance “range” uses a combined delta a/delta b absolute deviation (e.g. if max delta a = -0.5 and max delta b = 0.7, the range is 1.2). Because results in the extreme darks can be problematic due to lack of instrument accuracy and other effects like a black point which has a different chromaticity than the whitepoint, the gray balance check in DisplayCAL only takes into account gray patches with a minimum measured luminance of 1% (i.e. if the white luminance = 120 cd/m², then only patches with at least 1.2 cd/m² will be taken into account).</p>
<h5>What does the “Evaluate gray balance through calibration only” checkbox on a report actually do?</h5>
<p>It sets the nominal (target) L* value to the measured L* value and a*=b*=0, so the profile is effectively ignored and only the calibration (if any) will influence the results of the gray balance checks. Note that this option will not make a difference for a “Single curve + matrix” profile, as the single curve effectively already achieves a similar thing (the L* values can be different, but they are ignored for the gray balance checks and only influence the overall result).</p>
</div>
<div>
<h3 id="special">Special functionality</h3>
<h4 id="remote">Remote measurements and profiling</h4>
<p>When using Argyll CMS 1.4.0 and newer, remote measurements on a device not directly connected to the machine that is running DisplayCAL is possible (e.g. a smartphone or tablet). The remote device needs to be able to run a web browser (Firefox recommended), and the local machine running DisplayCAL may need firewall rules added or altered to allow incoming connections. To set up remote profiling, select “Web @ localhost” from the display device dropdown menu, then choose the desired action (e.g. “Profile only”). When the message “Webserver waiting at http://<IP>:<Port>” appears, open the shown address in the remote browser and attach the measurement device.<br />
<strong>NOTE:</strong> If you use this method of displaying test patches, there is no access to the display video <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr>s and hardware calibration is not possible. The colors will be displayed with 8 bit per component precision, and any screen-saver or power-saver will not be automatically disabled. You will also be at the mercy of any color management applied by the web browser, and may have to carefully review and configure such color management.<br />
<strong>Note:</strong> Close the web browser window or tab after each run, otherwise reconnection may fail upon further runs.</p>
<h4 id="madvr">madVR test pattern generator</h4>
<p>DisplayCAL supports the <a href="http://madvr.com/">madVR</a> test pattern generator (madTPG) and madVR 3D LUT formats since version 1.5.2.5 when used together with Argyll CMS 1.6.0 or newer.</p>
<h4 id="resolve">Resolve (10.1+) as pattern generator</h4>
<p>Since version 2.5, DisplayCAL can use <a href="https://www.blackmagicdesign.com/products/davinciresolve">Resolve</a> (10.1+) as pattern generator. Select the “Resolve” entry from the display devices dropdown in DisplayCAL and in Resolve itself choose “Monitor calibration”, “CalMAN” in the “Color” menu.</p>
<h4 id="untethered">Untethered display measurements</h4>
<p><em>Please note that the untethered mode should generally only be used if you've exhausted all other options.</em></p>
<p>Untethered mode is another option to measure and profile a remote display that is not connected via standard means (calibration is not supported). To use untethered mode, the testchart that should be used needs to be optimized, then exported as image files (via the testchart editor) and those image files need to be displayed on the device that should be measured, in successive order. The procedure is as follows:</p>
<ul>
<li>Select the desired testchart, then open the testchart editor.</li>
<li>Select “Optimize for untethered in auto mode” from the sorting options dropdown, click “Apply”, then export the testchart.</li>
<li>Burn the images to a DVD, copy them on an USB stick or use any other available means to get them to display onto the device that should be measured.</li>
<li>In DisplayCAL's display dropdown, select “Untethered” (the last option).</li>
<li>Show the first image on the remote display, and attach the instrument. Then select “Profile only”.</li>
</ul>
<p>Measurements will commence, and changes in the displayed image should be automatically detected if “auto” mode is enabled. Use whatever means available to you to cycle through the images from first to last, carefully monitoring the measurement process and only changing to the next image if the current one has been successfully measured (as will be shown in the untethered measurement window). Note that untethered mode will be (atleast) twice as slow as normal display measurements.</p>
</div>
</div>
<div id="menu">
<h2>Menu commands</h2>
<div id="menu-file">
<h3>“File” menu</h3>
<dl>
<dt>Load settings...</dt>
<dd>Loads settings from a profile created by DisplayCAL, or a calibration file, as described under “<a href="#settingsfile">settings file</a>”.</dd>
<dt>Choose testchart file...</dt>
<dd>Loads a testchart <code>.ti1</code> file used for profiling (existing profiles created with Argyll CMS or DisplayCAL can also be selected as source).</dd>
<dt>Edit testchart...</dt>
<dd>Opens the testchart editor/creator.</dd>
<dt>Choose save path...</dt>
<dd>Allows you to select a directory to store the files created by DisplayCAL during calibration/profiling and custom measurements.</dd>
<dt>Profile information</dt>
<dd>Show gamut plot, calibration and tone response curves, as well as header and tag information for the current profile.</dd>
<dt>Locate Argyll CMS executables...</dt>
<dd>Normally DisplayCAL will look for and use the Argyll CMS binaries using your system's PATH variable, but you may specify a different location.</dd>
</dl>
</div>
<div id="menu-options">
<h3>“Options” menu</h3>
<dl>
<dt>Measure testchart</dt>
<dd>Measures the currently selected testchart on the selected display in its current state and creates a <code>.ti3</code> measurement data file. The file is saved under the chosen save path (see “Choose save path...” under the “File” menu) and with the same base name used for profiles.</dd>
<dt id="create_profile_from_measurement_data">Create profile from measurement data...</dt>
<dd>Allows you to (re-)create a profile from existing measurement data (existing profiles created with Argyll CMS or DisplayCAL can also be selected as source) with the current profiling settings.</dd>
<dt>Create profile from extended display identification data...</dt>
<dd>Allows you to create a profile from your display's <abbr title="Extended Display Identification Data">EDID<sup><a href="#definition_EDID">[10]</a></sup></abbr> (if available).</dd>
<dt>Install display device profile...</dt>
<dd>Install an existing profile for the currently selected display.</dd>
<dt>Upload profile...</dt>
<dd>Share a profile via the <a href="http://icc.opensuse.org">openSUSE ICC Profile Taxi</a> service. This will only work for profiles created from actual measurements by DisplayCAL 0.8.0.8 and newer, and not for profiles created from EDID.</dd>
<dt>Load calibration curves from calibration file or profile...</dt>
<dd>Unlike “Load settings....” from the “File” menu, loads just calibration curves for the currently selected display into the video card without changing settings.</dd>
<dt>Load calibration curves from current display device profile</dt>
<dd>Tries to determine the profile associated to the currently selected display and loads its calibration curves from the 'vcgt' tag.</dd>
<dt>Reset video card gamma table</dt>
<dd>Resets the video card gamma table for the currently selected display to linear, clearing any calibration curves, such that input = output.</dd>
<dt>Detect displays and instruments</dt>
<dd>To detect changes in display setup or connected instruments, use this menu entry.</dd>
<dt>Automatically detect instruments</dt>
<dd>If this menu item is checked, DisplayCAL will automatically detect instruments on startup and periodically check for changes roughly every 10 seconds after that, if no other operation is currently running.</dd>
<dt>Use separate video card gamma table acccess</dt>
<dd>Because of the difficulty caused by TwinView and MergedFB in X11 based systems, you can optionally specify a separate display for accessing the video card gamma table hardware during calibration. You may be able to calibrate one screen, and then share the calibration with another screen. Profiling can be done independently to calibration on each screen. Normally DisplayCAL will automatically detect if separate video card gamma table access is needed (and appropriate controls need to be displayed), but you may force it by selecting this menu entry.</dd>
<dt>Do not use video card gamma table to apply calibration</dt>
<dd>Calibration will be applied to the test values for each measurement instead of being loaded into the video card gamma table, and also included in measurement data files, so that the profiler can include it as a vcgt tag in the resulting profile. This is <strong>not</strong> normally the best way to profile a calibrated display, since the frame buffer may have lower precision than the video card gamma table. This is the way calibration should be applied if <a href="http://madvr.com/">madVR</a> is being used to display the test patches.</dd>
<dt>Allow skipping of spectrometer self-calibration</dt>
<dd>Spectrometers require a sensor calibration before measurements. If this option is checked, DisplayCAL will try to skip this sensor calibration. <em>Note</em> even if this option is checked, you may be forced to do a sensor calibration if the instrument requires it.</dd>
<dt>Spectrometer self-calibration</dt>
<dd>Do spectrometer sensor calibration on its own.</dd>
<dt>Show advanced options</dt>
<dd>Enabling this menu option will show some additional controls for advanced users.</dd>
<dt id="additional-commandline-arguments">Set additional commandline arguments...</dt>
<dd>Allows you to set additional options for the Argyll CMS dispcal, dispread, spotread, colprof, collink and targen tools in the same way you would specify them on the commandline.</dd>
<dt>Enable Argyll CMS diagnostic output</dt>
<dd>When checked, outputs diagnostic information for measurements. Useful for debugging. Warning: Very verbose.</dd>
<dt>Dry run</dt>
<dd>When enabled, all functionality that calls Argyll CMS executables will effectively do nothing. This allows review of the used command line parameters by checking the log.</dd>
<dt>Restore defaults</dt>
<dd>Restores all settings except language, selected display, instrument, measurement mode and profile name to default.</dd>
</dl>
</div>
<div id="menu-tools">
<h3>“Tools” menu</h3>
<dl>
<dt id="report-uncal">Report on uncalibrated display device</dt>
<dd>Does some quick measurements on the currently selected display, first resetting the video card gamma table, and displays information about the measured response like luminance, approx. gamma, color temperature, and video card gamma table bit depth.</dd>
<dt id="report-cal">Report on calibrated display device</dt>
<dd>Does some quick measurements on the currently selected display, keeping the video card gamma table, and displays information about the measured response like luminance, approx. gamma, and color temperature.</dd>
<dt id="verify-cal">Verify calibration</dt>
<dd>Run verify measurements on the selected display as it is currently setup (ie. video card gamma table). This will use the usual input parameters to establish the expected (target) characteristic. Note that if the initial calibration was modified due to it being out of gamut of the display, verify will show the resulting discrepancy.</dd>
<dt>Update measurement report...</dt>
<dd>This allows to update an existing report HTML file with the template and functionality from a newer version of DisplayCAL (no measurements involved). It's a handy way to get new or changed comparison features, updated layout and even bugfixes into old reports. A backup copy of the old report with a date extension will automatically be created.</dd>
<dt>Measure display device uniformity...</dt>
<dd>Measure the display at several points to evaluate evenness of illumination and color errors. The results are shown after all patches are measured, and include the luminance difference, delta E 2000, CCT (correlated color temperature), and CDT (closest daylight temperature) or CPT (closest planckian temperature) depending on the selection for the whitepoint locus set on the “Calibration” tab. Differences are computed in comparison to the center point, which is used as reference.<br />
The evaluation is done according to ISO 12646:2015. A checkmark means the ISO criteria have been met (delta E of equal or less than 4, luminance difference of less than 10%). Two checkmarks mean that both the ISO criteria as well as twice as strict tolerances have been met (delta E of equal or less than 2, luminance difference of less than 5%). You can switch between delta E, delta C, delta H and delta L by clicking the labels.</dd>
<dt>Check measurement file...</dt>
<dd>This checks a measurement file for suspicious (erroneous) readings. An sRGB-like display is assumed, so this option will not work well if the display response is not so close to sRGB, and may report false positives.</dd>
<dt>Automatically check measurements</dt>
<dd>This automatically checks measurements for suspicious (erroneous) readings. An sRGB-like display is assumed, so this option will not work well if the display response is not so close to sRGB, and may report false positives.</dd>
<dt id="import-correction-matrices">Import colorimeter corrections from other display profiling software...</dt>
<dd>Converts matrices from other softwares to Argyll's CCMX / CCSS formats and adds them to the corresponding dropdown menu. Currently iColor Display, i1 Profiler, ColorMunki Display and Spyder 4/5 softwares are supported. If they are installed or the CD / disk image is mounted, the correct file(s) can in most cases be imported directly, otherwise they can be downloaded automatically. Please note: The colorimeter corrections imported from Spyder 4/5 software are only usable with the Spyder 4/5 and need to be selected in the measurement mode dropdown instead of the colorimeter corrections dropdown.</dd>
<dt id="create-colorimeter-correction">Create colorimeter correction...</dt>
<dd>Allows you to create correction matrices for all colorimeters as well as spectral corrections for i1 Display Pro, ColorMunki Display and Spyder 4/5.
You first need to measure the required test colors with a spectrometer, and in case you want to create a correction matrix instead of a spectral correction, also with the colorimeter. A checkmark next to the “Measure” buttons indicates previous measurements already being present (it is recommended that measurements be recent though, so ideally both spectrometer and colorimeter measurements should be performed whenever a colorimeter correction matrix is to be created). Alternatively you can also use existing measurements by choosing “Browse...”.
</dd>
<dt id="upload-colorimeter-correction">Upload colorimeter correction...</dt>
<dd>Upload a colorimeter correction to the online <a href="http://colorimetercorrections.displaycal.net/">Colorimeter Corrections Database</a> to share it with other users or download it later on another machine.
</dd>
<dt id="synthprofile">Create synthetic ICC profile...</dt>
<dd>Create a synthetic ICC profile by entering XYZ or chromaticity coordinates for R, G, B and white, and by choosing a tone response curve.</dd>
<dt id="install-argyll-instrument-drivers">Install Argyll CMS instrument drivers... (Windows) / Install Argyll CMS instrument configuration files... (Linux)</dt>
<dd>Windows: Install the Argyll CMS instrument drivers that are needed by some instruments.<br />
Linux: Install udev rules or hotplug scripts that configure instrument access (you only need to install these if you cannot access your instrument).</dd>
<dt id="uninstall-argyll-instrument-drivers">Uninstall Argyll CMS instrument drivers... (Windows Vista and newer only) / Uninstall Argyll CMS instrument configuration files... (Linux)</dt>
<dd>Windows Vista and newer: Uninstall the Argyll CMS instrument drivers.<br />
Linux: Uninstall udev rules or hotplug scripts that configure instrument access (note that they will be backed up to <samp>/home/<var>Your Username</var>/.local/share/DisplayCAL/backup</samp>).</dd>
<dt>Enable Spyder 2 colorimeter...</dt>
<dd>The Spyder 2 instrument cannot function without the presence of the instrument vendors PLD firmware pattern for the device. This firmware is not provided with Argyll CMS nor DisplayCAL, since it has not been made available under a compatible license.<br />
The purchaser of a Spyder 2 instrument should have received a copy of this firmware along with their instrument from the original vendor, as part of the instrument setup files.<br />
On Microsoft Windows or Mac OS X, if the vendors software has been installed on the users machine, the firmware pattern can usually automatically be located from there. If the vendors software have not been installed, or the user does not wish to install it, or no vendors software are available for the users platform (i.e. Linux), then the Spyder 2 installation CDROM will also be searched if present. In case no firmware files are found, the necessary binary can be downloaded automatically.</dd>
<dt id="curveviewer">Show curves</dt>
<dd>Shows/hides the curve viewer, which graphs calibration and profile tone response curves and also shows the percentage and amount of tone values for calibration curves.</dd>
<dt>Show actual calibration curves from video card</dt>
<dd>When this is enabled in the curve viewer window, it will show the actual calibration curves from the video card gamma table instead of showing the curves of the currently active profile. (only available if using Argyll CMS 1.1.0 or newer)</dd>
<dt>Show log window</dt>
<dd>Shows/hides the informational log window.</dd>
<dt>Show log window automatically</dt>
<dd>Shows the log window automatically after actions like measurements or creating a profile.</dd>
</dl>
</div>
<div id="menu-lang">
<h3>“Language” menu</h3>
<p>Allows you to select one of the available localizations.</p>
</div>
</div>
<div id="non-ui-functionality">
<h2>Non-UI functionality</h2>
<p>There is a bit of functionality that is not available via the UI and needs to be run from a command prompt or ternminal. Use of this functionality currently requires 0install, or running from source.</p>
<div>
<div class="info">
<dl>
<dt id="change-display-profile-cal-whitepoint">Change display profile and calibration whitepoint</dt>
<dd>
<p>Note that this reduces the profile gamut and accuracy.</p>
<p>Via 0install:</p>
<pre><code>0install run --command=change-display-profile-cal-whitepoint -- \<br />
  http://displaycal.net/0install/DisplayCAL.xml \<br />
  [-t temp | -T temp | -w x,y] [--cal-only] [inprofile] outfilename</code></pre>
<p>From source:</p>
<pre><code>python util/change_display_profile_cal_whitepoint.py- \<br />
  http://displaycal.net/0install/DisplayCAL.xml \<br />
  [-t temp | -T temp | -w x,y] [--cal-only] [inprofile] outfilename</code></pre>
<div>
<dl>
<dt><code>-t temp</code></dt>
<dd>Use daylight color temperature <code>temp</code> as whitepoint target.</dd>
<dt><code>-T temp</code></dt>
<dd>Use blackbody color temperature <code>temp</code> as whitepoint target.</dd>
<dt><code>-w x,y</code></dt>
<dd>Use x,y chromaticity as whitepoint target.</dd>
<dt><code>--cal-only</code> (optional)</dt>
<dd>Only alter the calibration embedded in the profile, not the profile itself.</dd>
<dt><code>inprofile</code> (optional)</dt>
<dd>Use profile <code>inprofile</code> instead of the current display profile.</dd>
<dt><code>outfilename</code></dt>
<dd>Output profile filename. The changed profile will be written to this file.</dd>
</dl>
</div>
</dd>
<dt id="set-calibration-loading">Enable/disable Windows 7 and later calibration loading</dt>
<dd>
<p>Note that Windows calibration loading is of lower quality than using Argyll CMS because Windows always quantizes the calibration to 8 bit and scales it wrongly. This is not the case when using the DisplayCAL calibration loader which uses Argyll CMS.</p>
<p>Via 0install:</p>
<pre><code>0install run --command=set-calibration-loading -- \<br />
  http://displaycal.net/0install/DisplayCAL.xml [--os]</code></pre>
<p>From source:</p>
<pre><code>python -c "import sys; from DisplayCAL import util_win; \<br />
  util_win.calibration_management_isenabled() or \<br />
  util_win.enable_calibration_management() \<br />
  if '--os' in sys.argv[1:] else \<br />
  not util_win.calibration_management_isenabled() or \<br />
  util_win.disable_calibration_management();" [--os]</code></pre>
<p>The <code>--os</code> option determines wether Windows calibration loading functionality should be enbaled or disabled.</p>
</dd>
</dl>
</div>
</div>
</div>
<div id="scripting">
<h2>Scripting</h2>
<p>DisplayCAL supports scripting locally and over the network (the latter must be explicitly enabled by setting <code>app.allow_network_clients = 1</code> in DisplayCAL.ini) via sockets. DisplayCAL must be already running on the target machine for this to work. Below is an example connecting to a running instance on the default port <code>15411</code> and starting calibration measurements (the port is configurable in DisplayCAL.ini as <code>app.port</code>, although if the desired port is not available an unused one will be chosen automatically. You can read the actual used port from the file DisplayCAL.lock in the <a href="#configuration">configuration</a> file folder of DisplayCAL while it is running). The example is written in <a href="http://www.python.org/">Python</a> and deals with some of the intricacies of sockets as well.</p>
<pre class="language-python"><code>#!/usr/bin/env python2
import socket
class DCGScriptingClientSocket(socket.socket):
def __enter__(self):
return self
def __exit__(self, etype, value, tb):
# Disconnect
try:
# Will fail if the socket isn't connected, i.e. if there was an
# error during the call to connect()
self.shutdown(socket.SHUT_RDWR)
except socket.error:
pass
self.close()
def __init__(self):
socket.socket.__init__(self)
self.recv_buffer = ''
def get_single_response(self):
# Buffer received data until EOT (response end marker) and return
# single response (additional data will still be in the buffer)
while not '\4' in self.recv_buffer:
incoming = self.recv(4096)
if incoming == '':
raise socket.error("Connection broken")
self.recv_buffer += incoming
end = self.recv_buffer.find('\4')
single_response = self.recv_buffer[:end]
self.recv_buffer = self.recv_buffer[end + 1:]
return single_response
def send_and_check(self, command, expected_response="ok"):
""" Send command, get & check response """
self.send_command(command)
single_response = self.get_single_response()
if single_response != expected_response:
# Check application state. If a modal dialog is displayed, choose
# the OK option. Note that this is just an example and normally you
# should be very careful with this, as it could mean confirming a
# potentially destructive operation (e.g. discarding current
# settings, overwriting existing files etc).
self.send_command('getstate')
state = self.get_single_response()
if 'Dialog' in state.split()[0]:
self.send_command('ok')
if self.get_single_response() == expected_response:
return
raise RuntimeError('%r got unexpected response: %r != %r' %
(command, single_response, expected_response))
def send_command(self, command):
# Automatically append newline (command end marker)
self.sendall(command + '\n')
# Generate a list of commands we want to execute in order
commands = []
# Load “Laptop” preset
commands.append('load presets/laptop.icc')
# Setup calibration & profiling measurements
commands.append('calibrate-profile')
# Start actual measurements
commands.append('measure')
# Create socket & send commands
with DCGScriptingClientSocket() as client:
client.settimeout(3) # Set a timeout of 3 seconds
# Open connection
client.connect(('127.0.0.1', 15411)) # Default port
for command in commands:
client.send_and_check(command)
</code></pre>
<p>Each command needs to be terminated with a newline character (after any arguments the command may accept). Note that data sent must be UTF-8 encoded, and if arguments contain spaces they should be encased in double or single quotes. You should check the response for each command sent (the response end marker is ASCII 0x4 EOT, and the default <a href="#scripting.commands.setresponseformat">response format</a> is a plain text format, but JSON and XML are also available). The common return values for commands are either <code>ok</code> in case the command was understood (note that this does not indicate if the command finished processing), <code>busy</code> or <code>blocked</code> in case the command was ignored because another operation was running or a modal dialog blocks the UI, <code>failed</code> in case the command or an argument could not be processed successfully, <code>forbidden</code> in case the command was not allowed (this may be a temporary condition depending on the circumstances, e.g. when trying to interact with an UI element that is currently disabled), <code>invalid</code> in case the command (or one of its arguments) was invalid, or <code>error</code> followed by an error message in case of an unhandled exception. Other return values are possible depending on the command. All values returned are UTF-8 encoded. If the return value is <code>blocked</code> (e.g. because a modal dialog is displayed) you should check the <a href="#scripting.commands.getstate">application state</a> with the <code><a href="#scripting.commands.getstate">getstate</a></code> command to determine the further course of action.</p>
<div>
<h3>List of supported commands</h3>
<p>Below is a list of the currently supported commands (the list contains all valid commands for the main application, the standalone tools will typically just support a smaller subset. You can use the “DisplayCAL Scripting Client” standalone tool to learn about and experiment with commands). Note that filename arguments must refer to files present on the target machine running DisplayCAL.</p>
<div class="info">
<dl>
<dt><code>3DLUT-maker [create filename]</code></dt>
<dd>Show 3D LUT creation tab, or create 3D LUT <code>filename</code>.</dd>
<dt><code>abort</code></dt>
<dd>Try to abort a currently running operation.</dd>
<dt id="scripting.commands.activate"><code>activate [window ID | name | label]</code></dt>
<dd>Activate window <code>window</code> or the main application window (bring it to the front). If it is minimized, restore it.</dd>
<dt id="scripting.commands.dialogactions"><code>alt | cancel | ok [filename]</code></dt>
<dd>If a modal dialog is shown, call the default action (ok), the alternate action (if applicable), or cancel it. If a file dialog is shown, using <code>ok filename</code> chooses that file.</dd>
<dt><code>calibrate</code></dt>
<dd>Setup calibration measurements (note that this won't give a choice whether to create a fast curves + matrix profile as well, if you want that use <code><a href="#scripting.commands.interact">interact</a> mainframe calibrate_btn</code> instead). For non-virtual displays as well as pattern generators (except madVR), call the <code><a href="#scripting.commands.measure">measure</a></code> command afterwards to commence measurements.</dd>
<dt><code>calibrate-profile</code></dt>
<dd>Setup calibration & profiling measurements. For non-virtual displays as well as pattern generators (except madVR), call the <code><a href="#scripting.commands.measure">measure</a></code> command afterwards to commence measurements.</dd>
<dt id="scripting.commands.close"><code>close [window ID | name | label]</code></dt>
<dd>Close window <code>window</code> or the current active window (if the window is the main window, this quits the application). Note that this tries to abort any running operations first, so you may want to check application state via the <code><a href="#scripting.commands.getstate">getstate</a></code> command.</dd>
<dt><code>create-colorimeter-correction</code></dt>
<dd>Create colorimeter correction.</dd>
<dt><code>create-profile [filename]</code></dt>
<dd>Create profile from existing measurements (profile or measurement file).</dd>
<dt><code>curve-viewer [filename]</code></dt>
<dd>Show curves, optionally loading <code>filename</code>. Relative paths are possible e.g. for presets: <code>curve-viewer presets/photo.icc</code></dd>
<dt><code>DisplayCAL [filename]</code></dt>
<dd>Bring the main window to the front. If it is minimized, restore it. Optionally, load <code>filename</code>.</dd>
<dt><code>enable-spyder2</code></dt>
<dd>Enable the spyder 2.</dd>
<dt><code>getactivewindow</code></dt>
<dd>Get the current active window. The returned format is <code>classname</code> <code>ID</code> <code>name</code> <code>label</code> <code>state</code>. <code>state</code> is either <code>enabled</code> or <code>disabled</code>.</dd>
<dt><code>getcellvalues [window ID | name | label] <grid ID | name | label></code></dt>
<dd>Get cell values from grid <code>grid</code> of window <code>window</code> or the current active window.</dd>
<dt><code>getappname</code></dt>
<dd>Get the name of the application you're connected to.</dd>
<dt><code>getcfg [option]</code></dt>
<dd>Get configuration <code>option</code>, or whole configuration (key-value pairs in INI format).</dd>
<dt><code>getcommands</code></dt>
<dd>Get list of commands supported by this application.</dd>
<dt><code>getdefault <option></code></dt>
<dd>Get default <code>option</code> (key-value pair in INI format).</dd>
<dt id="scripting.commands.getdefaults"><code>getdefaults</code></dt>
<dd>Get all defaults (key-value pairs in INI format).</dd>
<dt id="scripting.commands.getmenus"><code>getmenus</code></dt>
<dd>Get available menus in the format <code>ID "label" state</code>. <code>state</code> is either <code>enabled</code> or <code>disabled</code>.</dd>
<dt id="scripting.commands.getmenuitems"><code>getmenuitems [menuposition | label]</code></dt>
<dd>Get available menu items in the format <code>menuposition</code> <code>"menulabel"</code> <code>menuitemID</code> <code>"menuitemlabel"</code> <code>state</code> <code>[checkable]</code> <code>[checked]</code>. <code>state</code> is either <code>enabled</code> or <code>disabled</code>.</dd>
<dt id="scripting.commands.getstate"><code>getstate</code></dt>
<dd>Get application state. Return value will be either <code>idle</code>, <code>busy</code>, <code>dialogclassname</code> <code>ID</code> <code>dialogname</code> <code>[dialoglabel]</code> <code>state</code> <code>"messagetext"</code> <code>[path "path"]</code> <code>[buttons "buttonlabel"...]</code> if a modal dialog is shown or <code>blocked</code> in case the UI is currently blocked. Most commands will not work if the UI is blocked—the only way to resolve the block is to non-programmatically interact with the actual UI elements of the application or closing it. Note that a state of <code>blocked</code> should normally only occur if an actual file dialog is shown. If using the scripting interface exclusively, this should never happen because it uses a replacement file dialog that supports the same actions as a real file dialog, but doesn't block. Also note that a return value of <code>blocked</code> for any of the other commands just means that a modal dialog is currently waiting to be interacted with, only if <code>getstate</code> also returns <code>blocked</code> you cannot resolve the situation with scripting alone.</dd>
<dt id="scripting.commands.getuielement"><code>getuielement [window ID | name | label] <element ID | name | label></code></dt>
<dt id="scripting.commands.getuielements"><code>getuielements [window ID | name | label]</code></dt>
<dd>Get a single UI element or a list of the visible UI elements of window <code>window</code> or the current active window. Each returned line represents an UI element and has the format <code>classname</code> <code>ID</code> <code>name</code> <code>["label"]</code> <code>state</code> <code>[checked]</code> <code>[value "value"]</code> <code>[items "item"...]</code>. <code>classname</code> is the internal UI library class name. It can help you determine what type of UI element it is, and which interactions it supports. <code>ID</code> is a numeric identifier. <code>name</code> is the name of the UI element. <code>"label"</code> (if present) is a label which further helps in identifying the UI element. You can use the latter three with the <code><a href="#scripting.commands.interact">interact</a></code> command. <code>state</code> is either <code>enabled</code> or <code>disabled</code>. <code>items "item"...</code> (if present) is a list of items connected to the UI element (i.e. selection choices).</dd>
<dt id="scripting.commands.getvalid"><code>getvalid</code></dt>
<dd>Get valid values for options that have constraints (key-value pairs in INI format). There are two sections, <code>ranges</code> and <code>values</code>. <code>ranges</code> are the valid ranges for options that accept numeric values (note that integer options not covered by <code>ranges</code> are typically boolean types). <code>values</code> are the valid values for options that only accept certain values. Options not covered by <code>ranges</code> and <code>values</code> are limited to their data type (you can't set a numeric option to a string and vice versa).</dd>
<dt id="scripting.commands.getwindows"><code>getwindows</code></dt>
<dd>Get a list of visible windows. The returned format is a list of <code>classname</code> <code>ID</code> <code>name</code> <code>label</code> <code>state</code>. <code>state</code> is either <code>enabled</code> or <code>disabled</code>.</dd>
<dt><code>import-colorimeter-corrections [filename...]</code></dt>
<dd>Import colorimeter corrections.</dd>
<dt><code>install-profile [filename]</code></dt>
<dd>Install a profile.</dd>
<dt id="scripting.commands.interact"><code>interact [window ID | name | label] <element ID | name | label> [setvalue value]</code></dt>
<dd>Interact with the UI element <code>element</code> of window <code>window</code> or the current active window, e.g. invoke a button or set a control to a value.</dd>
<dt id="scripting.commands.invokemenu"><code>invokemenu <menuposition | menulabel> <menuitemID | menuitemlabel></code></dt>
<dd>Invoke a menu item.</dd>
<dt id="scripting.commands.load"><code>load <filename></code></dt>
<dd>Load <code>filename</code>. Relative paths are possible e.g. for presets: <code>load presets/photo.icc</code></dd>
<dt id="scripting.commands.measure"><code>measure</code></dt>
<dd>Start measurements (must be setup first!).</dd>
<dt><code>measure-uniformity</code></dt>
<dd>Measure screen uniformity.</dd>
<dt><code>measurement-report [filename]</code></dt>
<dd>If no filename given, show measurement report tab. Otherwise, setup measurement to create the HTML report <code>filename</code>. For non-virtual displays as well as pattern generators (except madVR), call the <code><a href="#scripting.commands.measure">measure</a></code> command afterwards to commence measurements.</dd>
<dt><code>profile</code></dt>
<dd>Setup profiling measurements (note that this will always use the current calibration if applicable, if you want to use linear calibration instead call <code>load linear.cal</code> prior to calling <code>profile</code>). For non-virtual displays as well as pattern generators (except madVR), call the <code><a href="#scripting.commands.measure">measure</a></code> command afterwards to commence measurements.</dd>
<dt><code>profile-info [filename]</code></dt>
<dd>Show profile information, optionally loading profile <code>filename</code>. Relative paths are possible e.g. for presets: <code>profile-info presets/photo.icc</code></dd>
<dt id="scripting.commands.refresh"><code>refresh</code></dt>
<dd>Update the GUI after configuration changes via <code><a href="#scripting.commands.setcfg">setcfg</a></code> or <code><a href="#scripting.commands.restore-defaults">restore-defaults</a></code>.</dd>
<dt><code>report-calibrated</code></dt>
<dd>Report on calibrated display. For non-virtual displays as well as pattern generators (except madVR), call the <code><a href="#scripting.commands.measure">measure</a></code> command afterwards to commence measurements.</dd>
<dt><code>report-uncalibrated</code></dt>
<dd>Report on uncalibrated display. For non-virtual displays as well as pattern generators (except madVR), call the <code><a href="#scripting.commands.measure">measure</a></code> command afterwards to commence measurements.</dd>
<dt id="scripting.commands.restore-defaults"><code>restore-defaults [category...]</code></dt>
<dd>Restore defaults globally or just for <code>category</code>. Call <code><a href="#scripting.commands.refresh">refresh</a></code> after changing the configuration to update the GUI.</dd>
<dt id="scripting.commands.setlanguage"><code>setlanguage <languagecode></code></dt>
<dd>Set language.</dd>
<dt id="scripting.commands.setcfg"><code>setcfg <option> <value></code></dt>
<dd>Set configuration <code>option</code> to <code>value</code>. The special value <code>null</code> clears a configuration option. Call <code>refresh</code> after changing the configuration to update the GUI. Also see <code><a href="#scripting.commands.getdefaults">getdefaults</a></code> and <code><a href="#scripting.commands.getvalid">getvalid</a></code>.</dd>
<dt id="scripting.commands.setresponseformat"><code>setresponseformat <format></code></dt>
<dd>Set the format for responses. The default <code>plain</code> is a text format that is easy to read, but not necessarily the best for parsing programmatically. The other possible formats are <code>json</code>, <code>json.pretty</code>, <code>xml</code> and <code>xml.pretty</code>. The <code>*.pretty</code> formats use newlines and indentation to make them easier to read.</dd>
<dt><code>synthprofile [filename]</code></dt>
<dd>Show synthetic profile creation window, optionally loading profile <code>filename</code>.</dd>
<dt><code>testchart-editor [filename | create filename]</code></dt>
<dd>Show testchart editor window, optionally loading or creating testchart <code>filename</code>. Relative paths are possible e.g. for loading a default testchart: <code>testchart-editor ti1/d3-e4-s17-g49-m5-b5-f0.ti1</code></dd>
<dt><code>verify-calibration</code></dt>
<dd>Verify calibration. For non-virtual displays as well as pattern generators (except madVR), call the <code><a href="#scripting.commands.measure">measure</a></code> command afterwards to commence measurements.</dd>
</dl>
</div>
</div>
<h3>Interacting with UI elements</h3>
<ul>
<li>Invoking a button: <code><a href="#scripting.commands.interact">interact</a> [window] <button></code> e.g. show profile name placeholders information: <code><a href="#scripting.commands.interact">interact</a> mainframe profile_name_info_btn</code></li>
<li>Setting a value on a dropdown, text field, or slider: <code><a href="#scripting.commands.interact">interact</a> [window] <element> setvalue "value"</code> e.g. set calibration gamma to 2.4: <code><a href="#scripting.commands.interact">interact</a> mainframe trc_textctrl setvalue 2.4</code> (note that for changing multiple options at once it is generally preferable to call <code><a href="#scripting.commands.setcfg">setcfg</a> <option> <value></code> for each option you want to set followed by a single <code><a href="#scripting.commands.refresh">refresh</a></code> instead)</li>
<li>Setting a cell value on a grid: <code><a href="#scripting.commands.interact">interact</a> [window] <grid> setvalue "row,col,value"</code> e.g. while the testchart editor is shown, set the cell at the second column of the first row to 33: <code><a href="#scripting.commands.interact">interact</a> tcgen grid setvalue "0,1,33"</code></li>
</ul>
<h3>Caveats and limitations</h3>
<p>There are a few things to be aware of when using commands that interact with the UI directly (i.e. <code><a href="#scripting.commands.activate">activate</a></code>, <code><a href="#scripting.commands.dialogactions">alt | cancel | ok</a></code>, <code><a href="#scripting.commands.close">close</a></code>, <code><a href="#scripting.commands.interact">interact</a></code> and <code><a href="#scripting.commands.invokemenu">invokemenu</a></code>).</p>
<p><strong>Referring to windows and UI elements:</strong> You can refer to windows and UI elements by their ID, name or label (you can find out about windows and UI elements with the <code><a href="#scripting.commands.getmenus">getmenus</a></code>/<code><a href="#scripting.commands.getmenuitems">getmenuitems</a></code>, <code><a href="#scripting.commands.getuielement">getuielement</a></code>/<code><a href="#scripting.commands.getuielements">getuielements</a></code>, and <code><a href="#scripting.commands.getwindows">getwindows</a></code> commands). If an object's ID is negative, it means that it has been automatically assigned at object creation time and is only valid during the lifetime of the object (i.e. for modal dialogs, only while the dialog is displayed). For this reason, using an object's name instead is easier, but names (aswell as non automatically assigned IDs) are not guaranteed to be unique, even for objects which share the same parent window (although most of the “important” controls as well as application windows will have unique names). Another possibility is to use an object's label, which while also not guaranteed to be unique, still has a fairly high likelihood of being unique for controls that share the same parent window, but has the drawback that it is localized (although you can ensure a specific UI language by calling <code><a href="#scripting.commands.setlanguage">setlanguage</a></code>) and is subject to change when the localization is updated.</p>
<p><strong>Sequential operations:</strong> Calling commands that interact with the UI in rapid succession may require the use of additional delays between sending commands to allow the GUI to react (so <code><a href="#scripting.commands.getstate">getstate</a></code> will return the actual UI state after a specific command), although there is a default delay for commands that interact with the UI of atleast 55 ms. A good rule of thumb for sending commands is to use a “send command” → “read response” → “optionally wait a few extra ms” → “get application state (send <code><a href="#scripting.commands.getstate">getstate</a></code> command)” → “read response” cycle.</p>
<p><strong>Setting values:</strong> If setting a value on an UI element returns <code>ok</code>, this is not always an indication that the value was actually changed, but only that the attempt to set the value has not failed, i.e. the event handler of the element may still do error checking and change the value to something sane if it was not valid. If you want to make sure that the intended value is set, use <code><a href="#scripting.commands.getuielement">getuielement</a></code> on the affected element(s) and check the value (or even better, if you use <a href="#scripting.commands.setresponseformat">JSON or XML response format</a>, you can check the <code>object</code> property/element of the response instead which will reflect the object's current state and saves you one request). In general it is preferable to use <code><a href="#scripting.commands.interact">interact</a> <elementname> setvalue <value></code> only on dialogs, and in all other cases use a sequence of <code><a href="#scripting.commands.setcfg">setcfg</a> <option> <value></code> (repeat as necessary, optionally call <code><a href="#scripting.commands.load">load</a> <filename></code> or <code><a href="#scripting.commands.restore-defaults">restore-defaults</a></code> first to minimize the amount of configuration options that you need to change) followed by a call to <code><a href="#scripting.commands.refresh">refresh</a></code> to update the UI.</p>
<p>Also, not all controls may offer a comprehensive scripting interface. I'm open to suggestions though.</p>
</div>
<div id="userdata">
<h2>User data and configuration file locations</h2>
<p>DisplayCAL uses the following folders for configuration, logfiles and storage (the storage directory is configurable). <strong>Note</strong> that if you have upgraded to DisplayCAL from dispcalGUI, that DisplayCAL will continue to use the existing dispcalGUI directories and configuration file names (so replace DisplayCAL with dispcalGUI in the lists below).</p>
<h3 id="configuration">Configuration</h3>
<ul>
<li>Linux:
<samp>/home/<var>Your Username</var>/.config/DisplayCAL</samp></li>
<li>Mac OS X:
<samp>/Users/<var>Your Username</var>/Library/Preferences/DisplayCAL</samp></li>
<li>Windows Vista and newer:
<samp>C:\Users\<var>Your Username</var>\AppData\Roaming\DisplayCAL</samp></li>
<li>Windows XP:
<samp>C:\Documents and Settings\<var>Your Username</var>\Application Data\DisplayCAL</samp></li>
</ul>
<h3 id="logs">Logs</h3>
<ul>
<li>Linux:
<samp>/home/<var>Your Username</var>/.local/share/DisplayCAL/logs</samp></li>
<li>Mac OS X:
<samp>/Users/<var>Your Username</var>/Library/Logs/DisplayCAL</samp> and<br />
<samp>/Users/<var>Your Username</var>/Library/Logs/0install</samp></li>
<li>Windows Vista and newer:
<samp>C:\Users\<var>Your Username</var>\AppData\Roaming\DisplayCAL\logs</samp></li>
<li>Windows XP:
<samp>C:\Documents and Settings\<var>Your Username</var>\Application Data\DisplayCAL\logs</samp></li>
</ul>
<h3 id="storage">Storage</h3>
<ul>
<li>Linux:
<samp>/home/<var>Your Username</var>/.local/share/DisplayCAL/storage</samp></li>
<li>Mac OS X:
<samp>/Users/<var>Your Username</var>/Library/Application Support/DisplayCAL/storage</samp></li>
<li>Windows Vista and newer:
<samp>C:\Users\<var>Your Username</var>\AppData\Roaming\DisplayCAL\storage</samp></li>
<li>Windows XP:
<samp>C:\Documents and Settings\<var>Your Username</var>\Application Data\DisplayCAL\storage</samp></li>
</ul>
<h3 id="incomplete">Incomplete/failed runs (useful for troubleshooting)</h3>
<ul>
<li>Linux:
<samp>/home/<var>Your Username</var>/.local/share/DisplayCAL/incomplete</samp></li>
<li>Mac OS X:
<samp>/Users/<var>Your Username</var>/Library/Application Support/DisplayCAL/incomplete</samp></li>
<li>Windows Vista and newer:
<samp>C:\Users\<var>Your Username</var>\AppData\Roaming\DisplayCAL\incomplete</samp></li>
<li>Windows XP:
<samp>C:\Documents and Settings\<var>Your Username</var>\Application Data\DisplayCAL\incomplete</samp></li>
</ul>
</div>
<div id="issues">
<h2>Known issues and solutions</h2>
<ul>
<li><a href="#issue-redgreenswapped">General: Wacky image colors (swapped colors)</a></li>
<li><a href="#issue-samplereadfail">General: Measurements are failing if using the “Allow skipping of spectrometer self-calibration” option and/or highres/adaptive mode</a></li>
<li><a href="#issue-usb3connectivity">USB 3.0 connectivity issues (instrument not found, access failing, or not working properly)</a></li>
<li><a href="#issue-win-process-startfail">Windows: “The process <dispcal.exe|dispread.exe|coloprof.exe|...> could not be started.”</a></li>
<li><a href="#issue-win-photoshop-monprofdefect">Photoshop: “The monitor profile […] appears to be defective. Please rerun your monitor calibration software.”</a></li>
<li><a href="#issue-win-uac-cal-reset">MS Windows Vista: The calibration gets unloaded when a User Access Control prompt is shown</a></li>
<li><a href="#issue-win-intel-cal-reset">MS Windows with Intel graphics: The Calibration gets unloaded after login/resume/User Access Control prompt</a></li>
<li><a href="#issue-win-user-profile-not-used">MS Windows Vista and later: The display profile isn't used if it was installed for the current user</a></li>
<li><a href="#issue-win7-autoloadcalibration">MS Windows 7 or later: Calibration does not load automatically on login when not using the DisplayCAL Profile Loader</a></li>
<li><a href="#issue-winxp-multidisplay">MS Windows XP, multiple displays: One profile is used by all displays connected to a graphics card</a></li>
<li><a href="#issue-mac-dispcalgui-0install-elcapitan">Mac OS X: If running via 0install, DisplayCAL won't launch anymore under Mac OS X 10.11 “El Capitan”</a></li>
<li><a href="#issue-mac-dispcalgui-damaged">Mac OS X: DisplayCAL.app is damaged and can't be opened.</a></li>
<li><a href="#issue-mac-pscursor">Photoshop CS3 (Mac OS X): The brush cursor looks funny (box around brush)</a></li>
<li><a href="#issue-linux-lutaccess">Linux/Windows: No video card gamma table access (“Calibrate & profile” button grayed despite display and instrument detected)</a></li>
<li><a href="#issue-linux-libmtp">Linux: Instrument not working correctly/constantly disconnecting (conflict with libmtp)</a></li>
</ul>
<dl>
<dt id="issue-redgreenswapped"><span>General:</span> Wacky image colors (swapped colors)</dt>
<dd><strong>Solution:</strong> This happens when you created a “XYZ LUT + swapped matrix” profile and is a way to alert you that the software you're using does not support XYZ LUT profiles and falls back to the included matrix (which generally means you'd loose accuracy). If you're having this situation only in some applications, creating a “XYZ LUT + matrix” profile will remedy it (but please keep in mind that those applications not supporting XYZ LUT will still fall back to the matrix, so results can be different from applications that support XYZ LUT correctly). If all colormanaged applications you use show swapped colors, you should create a matrix profile instead. Note that you do not have to re-run any measurements: In DisplayCAL, choose a profile type as suggested previously, adjust quality and profile name if you want, then choose “Create profile from measurement data...” in the “Options” menu and select the profile you had the issue with.</dd>
<dt id="issue-samplereadfail"><span>General:</span> Measurements are failing (“Sample read failed”) if using the “Allow skipping of spectrometer self-calibration” option and/or highres/adaptive mode</dt>
<dd><strong>Solution:</strong> Disable either or all of the above options. The problem seems to mainly occur with the ColorMunki.</dd>
<dt id="issue-usb3connectivity"><span>USB 3.0</span> connectivity issues (instrument not found, access failing, or not working properly)</dt>
<dd>Such issues would usually manifest themselves through instruments not being found, or randomly disconnecting even if seemingly working fine for some time. From all information that is known about these issues, they seem to be related to USB 3.0, not related to software as the vendor software is also affected, and they seem to occur irrespective of operating system or device drivers.<br />
The underlying issue seems to be that while USB 3.0 has been designed to be backwards compatible with USB 2.0, some USB 2 devices do not seem to work reliably when connected over USB 3. As currently available instruments with USB connectivity are usually USB 2 devices, they may be affected.<br />
<strong>Solution:</strong> A potential solution to such USB 3.0 connectivity issues is to connect the instrument to a USB 2.0 port (if available) or the use of an externally powered USB 2.0 hub.</dd>
<dt id="issue-win-process-startfail"><span>Windows:</span> “The process <dispcal.exe|dispread.exe|coloprof.exe|...> could not be started.”</dt>
<dd><strong>Solution:</strong> If you downloaded Argyll CMS manually, go to your Argyll_VX.X.X\bin directory, and right-click the exe file from the error message. Select “Properties”, and then if there is a text on the “General” tab under security “This file came from another computer and might be blocked”, click “Unblock”. Sometimes also over-zealous Antivirus or 3rd-party Firewall solutions cause such errors, and you may have to add exceptions for all involved programs (which may include all the Argyll CMS executables and if you're using Zero Install also python.exe which you'll find in a subdirectory under C:\ProgramData\0install.net\implementations) or (temporarily) disable the Antivirus/Firewall.</dd>
<dt id="issue-win-photoshop-monprofdefect"><span>Photoshop:</span> “The monitor profile […] appears to be defective. Please rerun your monitor calibration software.”</dt>
<dd><strong>Solution:</strong> Adobe ACE, Adobe's color conversion engine, contains monitor profile validation functionality which attempts to filter out bad profiles. With XYZ LUT profiles created in Argyll CMS versions up to 1.3.2, the B2A white point mapping is sometimes not particularly accurate, just enough so that ACE will see it as a problem, but in actual use it may only have little impact that the whitepoint is a bit off. So if you get a similar message when launching Photoshop, with the options “Use profile regardless” and “Ignore profile”, you may choose “Use profile regardless” and check visually or with the pipette in Photoshop if the inaccurate whitepoint poses a problem. This issue is fixed in Argyll CMS 1.3.3 and newer. Alternatively, you can create a L*a*b* LUT profile.</dd>
<dt id="issue-win-uac-cal-reset"><span>MS Windows Vista:</span> The calibration gets unloaded when a User Access Control prompt is shown</dt>
<dd><strong>Solution:</strong> (Intel and Intel/AMD hybrid graphics users please see <a href="#issue-win-intel-cal-reset">“The Calibration gets unloaded after login/resume/User Access Control prompt”</a> first) This Windows Vista bug seems to have been fixed under Windows 7 (and later), and can be remedied under Vista by either manually reloading calibration, or disabling UAC—but please note that you sacrifice security by doing this. To manually reload the calibration, either open DisplayCAL and select “Load calibration curves from current display profile” in the “Options” menu, or (quicker) open the Windows start menu and select “DisplayCAL Profile Loader” in the “Startup” subfolder. To disable <abbr title="User Access Control">UAC<sup><a href="#definition_UAC">[9]</a></sup></abbr> (not recommended!), open the Windows start menu and enter “msconfig” in the search box. Click on the Tools tab. Select the line “Disable UAC” and click the “Launch” button. Close msconfig. You need to reboot your system for changes to apply.</dd>
<dt id="issue-win-intel-cal-reset"><span>MS Windows with Intel graphics (also Intel/AMD hybrid):</span> The Calibration gets unloaded after login/resume/User Access Control prompt</dt>
<dd><strong>Solution:</strong> The Intel graphics drivers contain several utilities that interfere with correct calibration loading. A workaround is to rename, move or disable (e.g. using a tool like <a href="http://technet.microsoft.com/en-us/sysinternals/bb963902">AutoRuns</a>) the following files:
<pre><code>C:\Windows\system32\igfxtray.exe
C:\Windows\system32\igfxpph.dll
C:\Windows\system32\igfxpers.exe</code></pre></dd>
<dt id="issue-win-user-profile-not-used"><span>MS Windows Vista and later:</span> The display profile isn't used if it was installed for the current user</dt>
<dd><strong>Solution:</strong> Open the Windows start menu, select “Control Panel”, then “Color Management” (you may have to select “Classic View” under Vista and anything other than “Category View” under Windows 7 and later to see it). Under the “Devices” tab, select your display device, then tick “Use my settings for this device”.</dd>
<dt id="issue-win7-autoloadcalibration"><span>MS Windows 7 or later:</span> Calibration does not load automatically on login when not using the DisplayCAL Profile Loader</dt>
<dd><strong>Solution:</strong> Open the Windows start menu, select “Control Panel”, then “Color Management” (you may have to select something other than “Category View” to see it). Select the “Advanced” tab, then “Change system defaults...”, and finally tick the “Use Windows display calibration” checkbox. <strong>Note</strong> that the precision of Windows' built-in calibration loading is <strong>inferior</strong> compared to the DisplayCAL profile loader and may introduce inaccuracies and artifacts.</dd>
<dt id="issue-winxp-multidisplay"><span>MS Windows XP, multiple displays:</span> One profile is used by all displays connected to a graphics card</dt>
<dd><strong>Solution:</strong> The underlying issue is that Windows XP assigns color profiles per (logical) graphics card, not per output. Most XP graphics drivers present only one logical card to the OS even if the card itself has multiple outputs. There are several possible solutions to this problem:
<ul>
<li>Use different graphics cards and connect only one display to each (this is probably the preferable solution in terms of ease of use and is least prone to configuration error)</li>
<li>Install and use the <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1e33dca0-7721-43ca-9174-7f8d429fbb9e">Windows XP color control applet</a></li>
<li>Some graphics cards, like the Matrox Parhelia APV (no longer produced), will expose two logical cards to the OS when using a specific vendor driver (some older ATI drivers also had this feature, but it seems to have been removed from newer ones)</li>
</ul>
</dd>
<dt id="issue-mac-dispcalgui-0install-elcapitan"><span>Mac OS X:</span> If running via 0install, DisplayCAL won't launch anymore under Mac OS X 10.11 “El Capitan”</dt>
<dd><strong>Solution:</strong>
<ol>
<li>Run the “0install Launcher” application from the DisplayCAL-0install.dmg disk image.</li>
<li>Click “Refresh”, then “Run”. An updated library will be downloaded, and DisplayCAL should launch.</li>
<li>From now on, you can start DisplayCAL normally as usual.</li>
</ol>
</dd>
<dt id="issue-mac-dispcalgui-damaged"><span>Mac OS X:</span> DisplayCAL.app is damaged and can't be opened.</dt>
<dd><strong>Solution:</strong> Go to the “Security & Privacy” settings in System Preferences and set “Allow applications downloaded from” (under the “General” tab) to the “Anywhere” setting. After you have successfully launched DisplayCAL, you can change the setting back to a more secure option and DisplayCAL will continue to run properly.</dd>
<dt id="issue-mac-pscursor"><span>Photoshop CS3 (Mac OS X):</span> Under Mac OS X, the brush cursor in Photoshop CS3 looks funny (box around brush)</dt>
<dd><strong>Solution:</strong> This seems to be a bug which shows with <abbr title="Look Up Table">LUT<sup><a href="#definition_LUT">[7]</a></sup></abbr>-type profiles that have only one rendering intent. You can try to overcome it by selecting “Advanced...” next to the profile type dropdown, selecting an existing <abbr title="International Color Consortium">ICC<sup><a href="#definition_ICC">[5]</a></sup></abbr> profile as source (for hints as to which profile to select, see “<a href="#settings_profiling_gamutmapping">Advanced gamut mapping options</a>”) and tick at least one of the “Enhance effective resolution of colorimetric <abbr title="Profile Connection Space">PCS<sup><a href="#definition_PCS">[11]</a></sup></abbr>-to-device table” or “Apply gamut mapping to” checkboxes before profiling. To do that for an existing profile, adjust quality and profile name if you want, choose “Create profile from measurement data...” from the “Options” menu and select the profile. Note that this does not always solve the issue. Trying another profile type (XYZ LUT instead of L*a*b* LUT) might also help.</dd>
<dt id="issue-linux-lutaccess"><span>Linux/Windows:</span> No video card gamma table access (“Calibrate only” and “Calibrate & profile” buttons grayed, “Profile only” button available)</dt>
<dd><strong>Solution:</strong> Make sure you have not selected a display that doesn't support calibration (i.e. “Web @ localhost” or “Untethered”) and that you have enabled “Interactive display adjustment” or set the tone curve to a different value than “As measured”. Under Linux, please refer to the Argyll CMS documentation, “<a href="http://argyllcms.com/doc/Installing_Linux.html">Installing the software on Linux with X11</a>” and “Note on X11 multi-monitor setups” / “Fixing access to Video LUTs” therein. Under Windows, please also see the solution posted under “<a href="#issue-win-user-profile-not-used">The display profile isn't used if it was installed for the current user</a>” if you are using Windows and make sure you have a recent driver for your video card installed.</dd>
<dt id="issue-linux-libmtp"><span>Linux:</span> Instrument not working correctly/constantly disconnecting (conflict with libmtp)</dt>
<dd><strong>Solution:</strong> There is a bug on some systems with libmtp that causes instruments to continuously switch between connected and disconnected state.
This seems to be a <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626010">bug in libmtp-runtime</a>.
You can work around it by renaming <code>/lib/udev/mtp-probe</code> or updating to libmtp 1.0.6 where the issue should be fixed.</dd>
</dl>
</div>
<div id="help">
<h2>Get help</h2>
<p>Need help with a specific task or problem? It may be a good idea to first check the <a href="#issues">known issues & solutions</a> if the topic has been covered.
If you want to report a bug, please see the <a href="#reportbug">guidelines on bug reporting</a>. Otherwise, feel free to use one of the following channels:</p>
<ul>
<li><a href="http://displaycal.net/forums/forum/help-and-support/">Help & support forum</a></li>
<li><a href="https://lists.sourceforge.net/lists/listinfo/dispcalgui-users">dispcalgui-users mailing list</a></li>
<li>Contact me directly via E-Mail: <a>florian ‹at› displaycal . net</a> (but keep in mind other users may also benefit from exchanges, so I'm encouraging the use one of the above channels if possible)</li>
</ul>
</div>
<div id="reportbug">
<h2>Report a bug</h2>
<p>Found a bug? If so, please first check the <a href="http://displaycal.net/issues/">issue tracker</a>, it may have been reported already.
Otherwise, please follow these guidelines for reporting bugs:</p>
<ul>
<li>Try to give a <strong>short, but concise summary of the problem</strong>.</li>
<li>Try to give some <strong>steps to reproduce the problem</strong>.</li>
<li>Always <strong>attach logfiles</strong> if possible. They are usually automatically created by DisplayCAL as part of normal program operation. The easiest way to do that is to choose “Show log” from the “Tools” menu and then click the “Create compressed archive...” button (<strong>not</strong> the “Save as...” button as this will only save the session log) on the log window. You can also find the logfiles here:
<ul>
<li>Linux:
<samp>/home/<var>Your Username</var>/.local/share/DisplayCAL/logs</samp></li>
<li>Mac OS X:
<samp>/Users/<var>Your Username</var>/Library/Logs/DisplayCAL</samp> and<br />
<samp>/Users/<var>Your Username</var>/Library/Logs/0install</samp></li>
<li>Windows Vista and newer:
<samp>C:\Users\<var>Your Username</var>\AppData\Roaming\DisplayCAL\logs</samp></li>
<li>Windows XP:
<samp>C:\Documents and Settings\<var>Your Username</var>\Application Data\DisplayCAL\logs</samp></li>
</ul>
<p>As the folder may contain several logfiles, it is a good idea to compress the whole folder to a ZIP or tar.gz archive that you can easily attach to a bug report.</p>
<p><em>Please note the logfiles may contain your username as well as paths of files you may have used in DisplayCAL. I will respect your privacy at all times, but you may want to consider this when attaching logfiles to public places like the <a href="http://displaycal.net/issues/">issue tracker</a>.</em></p>
</li>
</ul>
<p>Create a new ticket (or if the bug has been reported already, use the existing ticket) at the <a href="http://displaycal.net/issues/">issue tracker</a>, following the guidelines above, and attach the logfiles archive.</p>
<p>If you don't want to or can't use the bug tracker, feel free to use one of the <a href="#help">other support channels</a>.</p>
</div>
<div id="discuss">
<h2>Discussion</h2>
<p>Do you want to get in touch with me or other users regarding DisplayCAL or related topics? The <a href="http://displaycal.net/forums/forum/general-discussion/">general discussion forum</a> or <a href="https://lists.sourceforge.net/lists/listinfo/dispcalgui-users">dispcalgui-users mailing list</a> is a good place to do so. You can also contact me directly via E-Mail: <a>florian ‹at› displaycal . net</a>.</p>
</div>
<div id="todo">
<h2>To-Do / planned features (in no particular order)</h2>
<ul>
<li>On first launch, guide user through basic setup using a wizard (postpone DisplayCAL update check until after wizard has run?):
<ul>
<li><del>Check Argyll CMS availability, if not available or outdated, offer automatic download & installation (consider 0install/native Linux distribution packages?)</del> (implemented)</li>
<li>Windows only: Install instrument drivers if necessary (probably need to check if already installed)</li>
<li>Check available instruments and instrument capabilities</li>
<li>Do instrument specific first launch stuff:
<ul>
<li><del>Import OEM files</del> (implemented)</li>
<li>Choose/create colorimeter correction if applicable</li>
</ul>
</li>
</ul>
</li>
<li>When an instrument is first selected:
<ul>
<li><del>Check if OEM files from the vendor software have already been imported (if applicable); if not, offer to do it.</del> (implemented in v2.1.1.3 Beta and newer, after detecting instruments)</li>
<li>Check colorimeter corrections if applicable (from respective vendor software and online database, skip the latter if a spectro is available), in case of no usable specific or generic correction, offer to create one if possible, preferably using spectro measurements as reference, EDID as user-selectable fallback? (Need to sanity-check EDID red/green/blue/white xy coordinates in that case! Possibly against sRGB and AdobeRGB as the most commonly cited gamuts for standard gamut and wide-gamut displays? As some cheaper panels and many of those found in Laptops/Notebooks are sometimes very limited in gamut, additionally a special “low-gamut RGB” may be needed)</li>
<li>Users need to be made aware of the implications their colorimeter correction choice has, e.g.
<ul>
<li>When using a correction created from spectral reference measurements of the specific display (user needs a spectro): Usually very good accuracy/match to user's specific display/instrument combination</li>
<li>When using a vendor-supplied generic correction: Good (?) (e.g. i1 DisplayPro, ColorMunki Display) to poor (?) (e.g. i1 Display 1/2/LT, Huey, ColorHug) accuracy/match to user's specific display/instrument combination, in case of CCSS considered preferable to corrections supplied by other users because of lab-grade equipment (high spectral resolution) used by vendor.</li>
<li>When using a correction supplied by another user for the same display/instrument combination: Good (?) (e.g. i1 DisplayPro, ColorMunki Display, DTP94) to poor (?) (e.g. i1 Display 1/2/LT, Huey, ColorHug) accuracy/match to user's specific display/instrument combination</li>
<li>When using EDID of the specific display as reference: Moderate (?) to poor (?) accuracy/match to user's specific display/instrument combination (could be ok match, could be awful, but should in most cases still be able to fix problems like e.g. ColorHug red sensitivity so may be ok as last resort)</li>
</ul>
</li>
</ul>
</li>
<li><del>When trying to import colorimeter corrections or enable the Spyder 2, have automatic mode download the vendor software if needed.</del> (implemented in v2.1.1.2 Beta and newer)</li>
<li>(Long-term) improve UI.</li>
<li><del>Better interface to <a href="http://projects.gnome.org/gnome-color-manager/">GNOME Color Manager</a></del> (implemented in v0.8.1.0+)</li>
<li><del>Measure and report on screen homogenity / evenness of illumination</del></li>
<li><del>Get rid of the terminal and implement a proper GUI for the interactive part of calibration</del> (implemented in v0.8.5.6+)</li>
<li><del>Better user interface for profile verification: If a test set contains multiple value formats (CMYK, RGB, XYZ, L*a*b*), allow selection which one(s) should be used in a “setup” window</del> (“setup” window implemented in v1.5.6.9+, value format selection added in v1.6.3.5)</li>
<li>Add gamut coverage percentages to the profile verification report if the test set contains reference values (not *.ti1): Calculate profiles from test set and verification measurements on-the-fly and create gamut volumes from test set profile, evaluated profile, and verification measurements profile using Argyll's <code>iccgamut</code> tool. Compare gamut volumes using Argyll's <code>viewgam</code> tool with <code>-i</code> option and include the results in the report (coverage calculation for test set reference and profile to be evaluated could be done before the actual measurements and also shown in the yet-to-be-implemented profile verification “setup” window).</li>
<li><del>Complete the documentation in the README</del></li>
<li>German language README (postponed)</li>
<li><del>Profile verification (feed XYZ or L*a*b* to display profile, display
corresponding RGB values, measure, output Delta E)</del> (implemented in v0.3.6+)</li>
<li><del>“Before” / “After” switch when calibration / profiling complete</del> (implemented in v0.2+)</li>
<li><del>Store all settings in profile, allow loading of settings from profile in
addition to <code>.cal</code> file</del> (implemented in v0.2+)</li>
<li><del>Document the code</del> (code documentation could still be enhanced, for now it'll do)</li>
<li><del>Code cleanup</del> (mostly done)</li>
</ul>
</div>
<div id="thanks">
<h2>Thanks and acknowledgements</h2>
<p>I would like to thank the following people:</p>
<p>Graeme Gill, for creating Argyll CMS</p>
<p>Translators: Loïc Guégant, François Leclerc (french translation),
Roberto Quintero (spanish translation),
Tommaso Schiavinotto (italian translation)</p>
<p>Recent contributors:
Toni Kettula,
Peter Varo,
Matt Nelson,
Chris Daughtry,
Ilie Florin Catarama,
Pierre Dubertrand,
Joseph Wohlscheid,
Harald Puerzel,
Riley Brandt Photography,
Harald Hugenschmidt,
Visceral Psyche Films,
David Tiroletto,
alain perrier,
Jens Hartwig,
Carlos Mazon,
Ian Castledine,
Alberto Caso,
Franz Senftl,
Sarah Gerweck
<a href="#more_donors" onclick="document.getElementById('more_donors').style.display = 'inline'; this.style.display = 'none'; return false" style="cursor: pointer">more...</a><span id="more_donors" style="display: none">
Jürgen Gallus,
Jonas Wagner,
Mind On Photography LLC,
Ehtesham Haque,
Paolo Francesco Cavestro,
Heiko Thies,
Dae Hyun An,
Stephen Schaffner,
Carmelo D'Agostino,
Jorge Luis Recalde Mesías,
Swee Oon,
Nikolay Baronov,
Jürgen Diez,
Joel Lehmann,
John Hawkins,
Rebecca Jackson,
Eric Crawford</span></p>
<p>And everyone who sent me feedback or bug reports, suggested features, or simply uses DisplayCAL.</p>
<p class="h">Acknowledgements</p>
<p>Part of the comprehensive Argyll CMS documentation has been used in this document, and was only slightly altered to better fit DisplayCAL's behavior and notations.</p>
</div>
<div id="changelog">
<h2>Changelog</h2>
<!-- 2016-02-01 00:32 (UTC) 3.1 -->
<dl>
<dt id="changelog-3.1">2016-02-01 00:32 (UTC) 3.1 </dt>
<dd>
<h3>3.1 </h3>
<h4>dispcalGUI has been renamed to DisplayCAL.</h4>
<p><strong>If you upgrade using 0install under Linux:</strong> It is recommended that you download the respective <a href="http://displaycal.net/#download">DisplayCAL-0install package</a> for your distribution and install it so that the applications accessible via the menu of your desktop environment are updated properly.</p>
<p><strong>If you upgrade using 0install under Mac OS X:</strong> It is recommended that you delete existing dispcalGUI application icons, then download the <a href="http://displaycal.net/download/DisplayCAL-0install.dmg">DisplayCAL-0install.dmg</a> disk image to get updated applications.</p>
<h4>Added in this release:</h4>
<ul>
<li><strong>Better HiDPI support.</strong> All text should now be crisp on HiDPI displays (with the exception of axis labels on curve and gamut graphs under Mac OS X). Icons will be scaled according to the scaling factor or DPI set in the display settings under Windows, or the respective (font) scaling or DPI system setting under Linux. Icons will be scaled down or up from their 2x version if a matching size is not available. Note that support for crisp icons in HiDPI mode is currently not available in the GTK3 and Mac OS X port of wxPython/wxWidgets. Also note that if you run a multi-monitor configuration, the application is system-DPI aware but not per-monitor-DPI aware, which is a limitation of wxPython/wxWidgets (under Windows, you will need to log out and back in after changing DPI settings for changes to take effect in DisplayCAL).</li>
<li>When having created a compressed archive of a profile and related files, it can now also be imported back in via drag'n'drop or the “Load settings...” menu entry and respective button.</li>
<li>Argyll CMS can be automatically downloaded and updated.</li>
<li>A compressed logs archive can be created from the log window.</li>
<li><strong>Windows: New profile loader.</strong> It will stay in the taskbar tray and automatically reload calibration if the display configuration changes or if the calibration is lost (although fullscreen Direct3D applications can still override the calibration). It can also automatically fix profile associations when switching from a multi-monitor configuration to a single display and vice versa (only under Vista and later). In addition, the profile loader is <a href="http://madvr.com/">madVR</a>-aware and will disable calibration loading if it detects e.g. madTPG or madVR being used by a video player.</li>
</ul>
<h4>Changed in this release:</h4>
<ul>
<li>Changed default calibration speed from “Medium” to “Fast”. Typically this cuts calibration time in half, while the accuracy difference is negligible at below 0.2 delta E.</li>
<li>Enabled “Enhance effective resolution of PCS to device tables” and smoothing for L*a*b* LUT profiles.</li>
</ul>
<h4>Fixed in this release:</h4>
<ul>
<li>In some cases, importing colorimeter corrections from the vendor software CD could fail (falling back to downloading them from the web).</li>
<li>Moving the auto testchart patches slider to a value that changed the profile type did not update BPC accordingly (shaper+matrix defaults to BPC on).</li>
<li>Minor: Safari/IE messed up positioning of CCT graph vertical axis labels in measurement reports.</li>
<li>Minor: When clicking the “Install profile” button while not on the 3D LUT tab, and “Create 3D LUT after profiling” is enabled, don't create a 3D LUT.</li>
<li>Minor: When changing profile type, only change the selected testchart if needed, and default to “Auto” for all profile types.</li>
<li>Minor: 1st launch defaults were slightly different from what was intended (testchart should be “Auto”).</li>
<li>Minor: Use OS line separator when writing configuration files.</li>
<li>Linux: Text and icon sizes should be more consistent accross the application when the system text scaling or DPI has been adjusted (application restart required).</li>
<li>Linux: Fall back to use the XrandR display name for colord device IDs if EDID is not available.</li>
<li>Linux/Mac OS X: madVR test pattern generator interface was prone to connection failures due to a race condition. Also, verifying a madVR 3D LUT didn't work.</li>
</ul>
</dd>
</dl>
<p><a href="history.html">View changelog entries for older versions</a></p>
</div>
<div id="definitions">
<h2>Definitions</h2>
<dl>
<dt id="definition_CGATS">[1] CGATS</dt>
<dd><span>Graphic Arts Technologies Standards, CGATS.5 Data Exchange Format (ANSI CGATS.5-1993 Annex J)</span></dd>
<dt>[2] <span id="definition_CMM">CMM</span> / <span id="definition_CMS">CMS</span></dt>
<dd>Color Management Module / Color Management System</dd>
<dt id="definition_GPL">[3] GPL</dt>
<dd>GNU General Public License — <a href="http://gnu.org/licenses/gpl.html">gnu.org/licenses/gpl.html</a></dd>
<dt id="definition_GUI">[4] GUI</dt>
<dd>Graphical User Interface</dd>
<dt id="definition_ICC">[5] ICC</dt>
<dd>International Color Consortium — <a href="http://color.org">color.org</a></dd>
<dt id="definition_JSON">[6] JSON</dt>
<dd>JavaScript Object Notation, a lightweight data-interchange format — <a href="http://json.org">json.org</a></dd>
<dt id="definition_LUT">[7] LUT</dt>
<dd>Look Up Table — <a href="http://en.wikipedia.org/wiki/Lookup_table">en.wikipedia.org/wiki/Lookup_table</a></dd>
<dt id="definition_SVN">[8] SVN</dt>
<dd>Subversion, a version-control system — <a href="http://subversion.tigris.org">subversion.tigris.org</a></dd>
<dt id="definition_UAC">[9] UAC</dt>
<dd>User Account Control — <a href="http://en.wikipedia.org/wiki/User_Account_Control">en.wikipedia.org/wiki/User_Account_Control</a></dd>
<dt id="definition_EDID">[10] EDID</dt>
<dd>Extended Display Identification Data — <a href="http://en.wikipedia.org/wiki/EDID">en.wikipedia.org/wiki/EDID</a></dd>
<dt id="definition_PCS">[11] PCS</dt>
<dd>Profile Connection Space — <a href="http://en.wikipedia.org/wiki/ICC_profile">en.wikipedia.org/wiki/ICC_profile</a></dd>
<dt id="definition_UEFI">[12] UEFI</dt>
<dd>Unified Extensible Firmware Interface — <a href="https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface">en.wikipedia.org/wiki/UEFI</a></dd>
</dl>
</div>
</div>
<hr />
<p id="copyright">DisplayCAL © 2008-2016 Florian Höch | <a href="http://displaycal.net/imprint/">Imprint</a> | <a href="http://displaycal.net/privacy/">Privacy</a> | <a href="http://displaycal.net/tos/">Terms of Service</a></p>
<div id="footer-container">
<div id="footer"><a href="#toc" id="totop">↑ Top</a></div>
</div>
<script type="text/javascript" src="theme/prism.js"></script>
<script type="text/javascript" src="http://displaycal.net/shariff/shariff.min.js"></script>
</body>
</html>
|