LINUX.ORG.RU

xiccd - управление цветовыми профилями в X

 , ,


3

1

Сегодня вышла новая версия xiccd - демона, управляющего цветовыми профилями мониторов.

xiccd работает совместно с colord и позволяет автоматически настраивать цветовые профили (icc) в графических средах, подобных Xfce, в которых подобная функциональность не встроена. До сих пор такая возможность существовала лишь в Gnome («из коробки») и в KDE (при использовании colord-kde). Пользователям других оболочек приходилось загружать цветовые профили вручную с помощью xicc, dispwin или dispcalGUI, что может не работать в конфигурациях с несколькими мониторами или при использовании некоторых colord-совместимых графических пакетов.

После установки xiccd список существующих мониторов и пользовательских цветовых профилей становится доступен в colord, что позволяет средствами colord устанавливать и выбирать нужный цветовой профиль. Корректно обработано «горячее» подключение и отключение мониторов. Тем самым, например, при подключении к ноутбуку проектора его цветовой профиль подгружается автоматически. При отсутствии точного цветового профиля создается приближенный по EDID-информации монитора.

В отличие от демонов, подобных colord-kde, xiccd не зависит ни от каких пакетов, от которых не зависит colord (за исключением X), что позволяет использовать его в любых системах в любом окружении. На сегодняшний день поддерживается загрузка профилей в X и чтение пользовательской директории профилей. Для работы необходима поддержка XRandR 1.3 и выше.

В сегодняшней версии 0.2.2 исправлены падения и откорректировано опознание мониторов в режиме «Mirror screen».

>>> Скачать xiccd



Проверено: Shaman007 ()

Видел тред без комментариев.

anonymous
()

блин, этот ваш colord требует dbus, polkit, consolekit и прочий трешак. Зачем это всё?

anonymous
()
Ответ на: комментарий от anonymous

Он на dbus работает. Программа, которая хочет УЗНАТЬ цветовой профиль устройства, спрашивает этот профиль у colord через dbus. Все просто.

Цветовые профили не в устройство грузятся. В устройство попадает только маленькая часть - калибровка. Она для получения верного цвета недостаточна. Поверх калибровки работает характеризация, это уже чисто софтовая коррекция, и отвечает за нее программа, которая рисует. Для этого ей надо знать профиль. Профиль она может либо у colord узнать, либо можно руками указать. Если профилей много разных, ручные настройки придется менять все время - удачи в этом нелегком деле :)

В X есть более простой способ - через property _ICC_PROFILE. Но кто-то должен загрузить правильный профиль в _ICC_PROFILE. Где его взять? Это xiccd и делает, он спрашивает профиль у colord и грузит его в X.

Yampp
() автор топика
Последнее исправление: Yampp (всего исправлений: 1)

А откуда colord знает правильный цветовой профиль? И почему тогда не сделать чуть ли не статическую тулзу, которая один раз опрашивает цветные устройства и раздаёт профили? Для P-n-P? вот, бывало, начнётся трудовой день печатника - и он давай принтеры и мониторы по 10 штук подключать-отключать...

Shadow ★★★★★
()
Ответ на: комментарий от linuxmaster

Ну и чтобы было совсем понятно.

Цветокоррекция состоит из трех частей:

1. Ручная настройка. Яркость, контраст, баланс белого на мониторе, тип чернил и бумаги в принтере, в общем все ручки, которые можно крутить. После определения наилучшего положения все это надо зафиксировать и больше не трогать. Если это невозможно (например, если принтер печатает на нескольких сортах бумаги или монитор используется на разной яркости), потребуется сделать калибровку и характеризацию индивидуально под каждый вариант!

2. Калибровка. С помощью прибора (спектрофотометра, я пользуюсь ColorMunki Photo) и специальной программы (Argyll) подбираются наилучшие настройки ЖЕЛЕЗА (гамма-кривые видеокарты, размер капли принтера и т.д.; в случае принтера вместо «железа» может на самом деле настраиваться драйвер, например gutenprint).

3. Характеризация. С помощью того же прибора и той же программы измеряется цветопередача уже ПОСЛЕ прогрузки в железку параметров калибровки. Строится таблица коррекции оставшейся небольшой ошибки.

Результаты калибровки + характеризации пакуются вместе в файл с расширением *.icc, который и называется «цветовой профиль».

Практика показывает, что цветопередача разных экземпляров одного и того же железа может заметно отличаться, поэтому калибровку и характеризацию желательно делать индивидуально. Если нет возможности купить или арендовать прибор, можно характеризовать принтер удаленно - распечатать тестовые карты и отдать в сервис, где их прочитают прибором. Хороший монитор калибровать незачем, а вот струйный принтер для фотографий - абсолютно необходимо даже при печати на оригинальной бумаге. Иначе лучше принтер вообще не покупать и пользоваться услугами печати на заказ.

Yampp
() автор топика
Ответ на: комментарий от Shadow

А откуда colord знает правильный цветовой профиль?

Ему его один раз указали, а он внутри себя хранит базу соответствий. Если профилей несколько, например для разной бумаги, он умеет автоматически выбирать «самый подходящий» просто в зависимости от установок в диалоге печати. Все это управляется и зависит в первую очередь от метаданных в профиле, но можно и руками правила делать.

И почему тогда не сделать чуть ли не статическую тулзу, которая один раз опрашивает цветные устройства и раздаёт профили?

В первую очередь для печати на бумаге. Цветовой профиль ОЧЕНЬ сильно зависит от того, какая именно бумага засунута в принтер. В особо тяжелых случаях даже для каждой партии бумаги профиль делать надо, а для домашнего фотопринтера достаточно профилей только под каждую фирму: «Lomond матовый», «Lomond глянец», «Epson матовый», «Славич глянец» и т.д. Некоторые принтеры умеют определять тип бумаги автоматически, в других принтерах тип бумаги указывается в диалоге печати. Этого достаточно, чтобы colord выбрал правильный профиль из имеющихся.

Владельцам ноутбуков тоже удобно. Вот у меня есть ноут и два монитора - на работе и дома. Мониторы сильно разные. Я втыкаю ноут в док-станцию и не парюсь относительно цветопередачи - xiccd сам грузит профиль именно того монитора, который подключен сейчас. Спутать невозможно.

Yampp
() автор топика

Несколько раз прочитал как «xkcd»

buddhist ★★★★★
()

Здорово, конечно. Но новость так подробно написана, что уже и обсуждать-то нечего.

void_ptr ★★★★
()
Последнее исправление: void_ptr (всего исправлений: 1)
Ответ на: комментарий от Yampp

Готовься, щас тебе прибегут рассказывать, что характеризация не нужна :) Тут есть один такой знаток :)

AP ★★★★★
()

А, оно актуально по сути только если мониторы туда-сюда тыкаешь постоянно. А без этого достаточно 1 команды xcalib profile.icc...

Мне вот другое интересно - сложно ли compicc в KWin портировать... (это хрень, которая позволяет полную ICC коррекцию делать над всей отображаемой картинкой, на шейдерах)

vitalif ★★★★★
()
Ответ на: комментарий от Yampp

Программа, которая хочет УЗНАТЬ цветовой профиль устройства, спрашивает этот профиль у colord через dbus.

Это гномий стандарт. В KDE используется _ICC_PROFILE напрямую, а автозагрузка этого дела лежит на kolor-manager. Первоначальная установка профиля осуществляется руками с командной строки, через утилиту oyranos-monitor.

colord-kde, к сожалению, я был вынужден снести, т.к. одновременная установка его с kolor-manager приводит к SEGFAULT'у последнего, а kolor-manager необходим для полноэкранной цветокоррекции в KWin.

AEP ★★★★★
()
Ответ на: комментарий от AEP

Оо, KWin умеет полноэкранную коррекцию? А как её там заюзать?

vitalif ★★★★★
()
Ответ на: комментарий от vitalif

Мне вот другое интересно - сложно ли compicc в KWin портировать... (это хрень, которая позволяет полную ICC коррекцию делать над всей отображаемой картинкой, на шейдерах)

Портировать compicc в kwin не надо - это уже сделано. Руководство см. тут: http://userbase.kde.org/Color_Management

AEP ★★★★★
()

из описания следует, что загружать профили можно было утилитами, а теперь для этого требуется аж 2 демона. вот он какой, прогресс...

anonymous
()
Ответ на: комментарий от vitalif

А без этого достаточно 1 команды xcalib profile.icc

Не всегда. Если программа берет профиль не из X, а из colord, то работать не будет.

Мне вот другое интересно - сложно ли compicc в KWin портировать...

Не слишком сложно, но это не самый удачный способ для работы с графикой. На входе у compicc цвет 8-битный sRGB, а внутри программы может быть лучше, например 16-битный TIFF. Поэтому программа сама сделает цветокоррекцию качественнее, чем экранный композитор.

Вот для таких вещей, кстати, colord и нужен: можно в принципе сделать, чтобы compicc работал только для тех программ, которые НЕ умеют делать коррекцию сами.

Yampp
() автор топика

В отличие от демонов, подобных colord-kde, xiccd не зависит ни от каких пакетов, от которых не зависит colord

второе «не» вроде как лишнее. если это так, нужно в соотв тему написать и это исправят

ZuBB ★★★★★
()
Ответ на: комментарий от AEP

Это гномий стандарт. В KDE используется _ICC_PROFILE напрямую

Плохая идея, если используется несколько параллельно подключенных мониторов (с одинаковой картинкой).

Не работает для принтеров, камер и сканеров. Сейчас colord - единственный работающий способ.

В Wayland штатным способом будет colord, _ICC_PROFILE выпилят. xiccd сможет работать и в Wayland (без X). Когда до этого дойдет, я его разделю на два демона.

Yampp
() автор топика
Ответ на: комментарий от ZuBB

второе «не» вроде как лишнее. если это так, нужно в соотв тему написать и это исправят

Не лишнее.

Если colord НЕ зависит от пакета, то xiccd тоже НЕ зависит от этого пакета.

Yampp
() автор топика
Ответ на: комментарий от vitalif

Блин... А профиль вывода нужный там где выбирать?

В Oyranos. Это то же самое, что colord, только по-KDE-шному. Судя по всему, уже не приживется: во всех мэйнстримах его нету, а есть colord.

Yampp
() автор топика
Ответ на: комментарий от Yampp

Там где proofing же, да? Я просто пробую там разные профили ставить, а цвет ни фига не меняется.

vitalif ★★★★★
()
Ответ на: комментарий от Yampp

В Oyranos. Это то же самое, что colord, только по-KDE-шному.

Самое смешное, что не по-кдешному. Ойранос задуман как супер-пупер абстрагированный и работающий чуть ли не во всех системах. Но так «нечаянно» получилось, что под винду он так и не вышел, а под маком он есть только в составе сборки ICC Examin.

В общем, KDE --- единственный десктоп, где у них оставались хоть какие-то шансы. Но и там все полимеры..., как ты совершенно верно заметил.

AP ★★★★★
()
Последнее исправление: AP (всего исправлений: 2)

А он с nVidia TwinView дружит? А то у меня установка в KDE профиля для основного монитора ставит этот же профиль для второго и вообще ничего нельзя сделать, чтобы каждый монитор имел свой отдельный профиль.

saper ★★★★★
()
Ответ на: комментарий от Yampp

Ну и да — называя Oyranos тем же самым, что и colord, ты наносишь смертельную обиду автору ойраноса :)

AP ★★★★★
()
Ответ на: теги от mix_mix

под icc обычно подразумевают интеловский компилятор

С чего ты это взял? :)

AP ★★★★★
()
Ответ на: комментарий от saper

А он с nVidia TwinView дружит?

xiccd должен. Но никто не проверял. Можно попробовать. Мне результат тоже интересен :)

Yampp
() автор топика
Ответ на: комментарий от Yampp

Он на dbus работает
Все просто

Да ты упоролся, я погляжу.

anonymous
()
Ответ на: комментарий от anonymous

colord без гноме3 ставиться ?

Да. У меня нет gnome3.

а без systemd ?

Да. У меня нет systemd.

Отдельный луч ненависти людям, которые не знают правописания "-тся" и "-ться".

Yampp
() автор топика
Ответ на: комментарий от AP

Готовься, щас тебе прибегут рассказывать, что характеризация не нужна :) Тут есть один такой знаток :)

Так, ко мне в огород прилетел камушек :)

Ну, ребята, если вы уж ознакомились с новым словом «характеризация» (я проверил, в данном контексте на ЛОРе оно ещё не всплывало), то рассказывайте на пальцах для чего она нужна - я чувствую вам обоим не терпится поделиться полученным знанием.

Для затравки дискуссии излагаю свою позицию: Возможно эта характеризация и имеет какой-то смысл - ведь нам как правило приходится выводить изображение с большей разрядностью цветовых каналов на устройство с меньшей глубиной цвета или с вообще другими каналами (например CMYK) или наоборот и надо как-то описать правила по которым промежуточные значения будут приводиться к конечным значениям на входе устройства.

Я с этим не спорю, я же совсем о другом говорил, а именно мне по прежнему не понятно почему каждая программа, желая вывести пиксел какого-нибудь цвета в окно, должна сверяться с цветовым профилем устройства вывода. Почему этим занимается не драйвер устройства а что угодно другое, для этих целей не предназначенное, с нагромождением костыльных демонов и вкрячиванием какого-то функционала ещё и в юзерские программы.

Пожалуйста разъясните мне это. Давайте в качестве примера возьмём случай когда у нас изображение десктопа дублируется на нескольких разных мониторах, плазменном телевизоре и проецируется на стенку.

Спасибо за внимание.

anonymous
()
Ответ на: комментарий от Yampp

В Wayland штатным способом будет colord

Не уверен. В Wayland, как в протоколе общения между приложениями и композитором, про это вообще ничего нет. Да, colord - это штатное средство в Weston и в GNOME. Проблема в том, что KDE-шники, E17 (и кто там еще...) могут сделать свой велосипед, не нарушая никаких стандартов.

AEP ★★★★★
()

Вот бы еще независимый polkit-клиент, или как там это называется, ну и менеджер сессий, не тянущий за собой весь Xfce/Gnome/KDE было бы ну просто замечательно.

s9gf4ult ★★
()

В этих ваших линуксах даже это до сих пор велосипедизм и куча демонов.

anonymous
()

Все равно без dispcalGUI, все эти программы бесполезны.
А если есть готовый профиль, то достаточно и одного xcalib

anonymous_sama ★★★★★
()

а почему бы производителям мониторов — не сделать бы так чтобы монитор сразу бы показывал бы правильные цвета?

какой смысл производителям мониторов — делать так чтобы цвета на мониторе — показывались бы изначально некорректно? (а затем эту некорректность героически исправлять через ICC)

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

а почему бы производителям мониторов — не сделать бы так чтобы монитор сразу бы показывал бы правильные цвета?

А почему бы человеку не получать калории прямо из воздуха?

AP ★★★★★
()
Ответ на: комментарий от anonymous

Пожалуйста разъясните мне это. Давайте в качестве примера возьмём случай когда у нас изображение десктопа дублируется на нескольких разных мониторах, плазменном телевизоре и проецируется на стенку.

Во-первых, договоримся насчет понятий. Калибровкой называется та часть настроек, которая обрабатывается аппаратно (монитором, видеокартой). Характеризацией называются предыскажения, которые вводятся перед отправкой изображения на устройство. (Строго говоря, словом «характеризация» называют процесс ИЗМЕРЕНИЯ характеристик устройства для получения формул предыскажений, но я для краткости и само применение формул буду так называть). Необходимость характеризации здесь следует из того, что устройство имеет ограниченные возможности аппаратной цветокоррекции.

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

Тогда вопрос звучит следующим образом: ПОЧЕМУ ХАРАКТЕРИЗАЦИЯ ПРИМЕНЯЕТСЯ В ПРОГРАММЕ, А НЕ «МАГИЧЕСКИ» ОПЕРАЦИОННОЙ СИСТЕМОЙ КО ВСЕМ ОКНАМ? Это вопрос правомерный и очень хороший. Думаю, что я знаю на него ответ.

1. Вывод обычного десктопного изображения, фото котиков и т.д. Здесь МОЖНО было бы сделать характеризацию «магически» в ОС, и при разработке новой ОС с нуля следовало бы так сделать. Однако большинство программ, не знающих о цветокоррекции, отправляют в окно битмэп максимум с 8 битами на цвет. Применение нелинейной цветокоррекции к такому битмэпу (8 бит -> 8 бит нелинейно) может быть ХУЖЕ, чем отсутствие цветокоррекции вообще. Меня лично не волнует правильность цвета кнопок в интерфейсе ОС, но будет раздражать, если на градиентах на этих кнопках появятся ступеньки. Большинство фотографий в вебе тоже сняты как попало и от не совсем правильной цветопередачи хуже не станут. Отсюда соломоново решение: НЕ применяем характеризацию для софта, который не умеет выводить графику в формате, отличном от RGB888 и даже не знает, является ли его вывод sRGB или нет.

2. Вывод изображения, критичного к цвету. Здесь как раз хороший пример с дублированием изображения: картинка выведена на несколько устройств одновременно, но в силу аппаратных ограничений мы НЕ ВСЕГДА можем вывести картинку правильно на ВСЕХ устройствах. В этом случае пользователь или сама программа должны решить, какое из устройств является приоритетным. Эта настройка для разных окон может быть различной. Например, если мы откроем в одном окне видеопроигрыватель и в соседнем окне фотошоп (в пределах одного десктопа), то я хотел бы, чтобы проигрыватель верно показывался проектором на стену, а фотошоп - на IPS-мониторе. Мне плевать, как будет выглядеть фотошоп на стене или проигрыватель на IPS-мониторе, точно так же, как мне плевать, как будет выглядеть панель задач.

Идеальный вариант видится таким:

1. Если программа - legacy, то к ней применяется калибровка, но НЕ характеризация (от характеризации в этом случае вреда больше, чем пользы). 2. Если программа пытается отображать цвет «точно», то к ней применяется и калибровка, и характеризация. Характеризацию в идеале должна применять ОС. 3. Если в силу аппаратных ограничений мы вынуждены применять одну и ту же характеризацию на несколько разных устройств, выбирается характеризация наиболее приоритетного из устройств либо усредненная. Выбор зависит от конкретной программы и должен настраиваться. Например, при просмотре видео приоритетным будет проектор, а при редактировании фотографии - IPS-монитор (даже если процесс редактирования транслируется на проектор).

Чтобы отличить legacy-программу от не-legacy, на практике используется простой прием: не-legacy-программа должна сама включить себе характеризацию (необязательно она должна ее сама делать в коде, но графическому тулкиту она сказать о включении характеризации должна). Это неидеальный с точки зрения нового софта вариант, но избавление от legacy - не мгновенный процесс.

Yampp
() автор топика
Ответ на: комментарий от AEP

Не уверен. В Wayland, как в протоколе общения между приложениями и композитором, про это вообще ничего нет. Да, colord - это штатное средство в Weston и в GNOME. Проблема в том, что KDE-шники, E17 (и кто там еще...) могут сделать свой велосипед, не нарушая никаких стандартов.

Технически - могли бы. Практически - не будут. Потому что colord используется за пределами графики. В частности, в мэйнстриме ghostscript и в CUPS есть поддержка colord при печати (кстати, там есть баги, и я их пилю). Со сканерами и камерами тоже непонятно что делать. colord дает неплохое решение, а главное - у него вполне вменяемый автор, с которым легко сотрудничать. Поэтому для управления цветопередачей с демоном удобно использовать именно colord. Архитектура у него хорошая, Ричард охотно отвечает на запросы фич. Управление цветом без демона возможно, но слишком сложно, чтобы пользоваться им на практике. Альтернативой могло бы быть затаскивание управления цветом в сессионный демон, но, думаю, всем ясно, почему это плохо.

Работать с colord очень просто. Подключись к нему, зарегистрируй свое устройство под произвольно выбранным именем. Спроси у colord цветовой профиль - он тебе его вернет. Настройки - не твое дело, правила выбора профилей прописываются в colord утилитами настройки colord.

Yampp
() автор топика
Ответ на: комментарий от user_id_68054

а почему бы производителям мониторов — не сделать бы так чтобы монитор сразу бы показывал бы правильные цвета?

1. Нет понятия «правильный цвет в вакууме». Цвет зависит от кучи факторов, в том числе от внешнего освещения. Можно отрегулировать цвет монитора с учетом особенностей ламп, которыми освещена комната.

Особенно это к принтерам относится. При печати фотографий для выставок бывает нужно откорректировать их цвет с учетом особенностей ламп, которыми выставка освещена.

2. Что такое вообще «правильный цвет»? sRGB? Существуют мониторы sRGB. Беда в том, что sRGB не охватывает и половины цветов, которые может видеть глаз. http://review.lospopadosos.com/wp-content/uploads/2011/12/adobergbvssrgb.jpg А что делать с остальными цветами?

3. Ну ладно, будем считать, что правильный цвет - это sRGB. Вот монитор, который показывает «правильный цвет»: http://market.yandex.ru/model.xml?modelid=929445 Нравится цена, а?

Yampp
() автор топика
Ответ на: комментарий от user_id_68054

ого! я привык покупать мониторы раз в 7 дешевле :)

Это и есть цена «правильной» цветопередачи. Неудивительно, что у 99% мониторов ею жертвуют ради уменьшения цены в 7 раз.

Тем не менее, любой монитор с нормальными углами обзора (IPS или другой, у которого цвет не меняется от поворота головы зрителя) МОЖНО настроить ПОЧТИ хорошо, если воспользоваться специальным прибором (пример: ColorMunki Photo). Прибор стоит дорого, но одним прибором можно настроить много мониторов. Настройка у дешевых мониторов очень индивидуальна (зависит от экземпляра монитора), т.е. скачивать профили из интернета почти бесполезно.

Yampp
() автор топика
Ответ на: комментарий от user_id_68054

а почему бы производителям мониторов — не сделать бы так чтобы монитор сразу бы показывал бы правильные цвета?

Калибровка зависит от внешнего освещения, и не только. А также она съезжает со временем и для серьезной работы периодически необходимо повторять процедуру калибровки.

Pavval ★★★★★
()
Ответ на: комментарий от Yampp

Нравится цена, а?

Это сравнительно дёшево :)

AP ★★★★★
()
Ответ на: комментарий от s9gf4ult

Вот бы еще независимый polkit-клиент, или как там это называется

lxpolkit зависит только от gtk2, cairo, pango и freetype.

менеджер сессий, не тянущий за собой весь Xfce/Gnome/KDE

Мечты-мечты :(

dexpl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.