Zarządzanie kolorami w Xfce

O tym jak istotne jest identyczne odwzorowanie barw na przeróżnych urządzeniach nie trzeba chyba przekonywać nikogo, kto zajmuje się np. fotografią cyfrową. Profile barwne ICC są odpowiedzią na odwieczne dylematy – czy kolory z mojego monitora w labie zostaną odwzorowane tak jak przypuszczam, że powinny zostać odwzorowane. Każdy współczesny systemem uwzględnia ich istnienie i nie inaczej jest z Linuksem. Niemniej, o ile środowiska GNOME, KDE, Unity, Cinnamon umożliwiają wygodną obsługę rzeczonych profili, o tyle mamy też środowiska minimalistyczne, w których musimy sobie radzić sami. Nie inaczej jest w przypadku Xfce, które pomimo rozbudowanych ustawień sesji i nie tylko, zapomniało o istnieniu profili ICC. To spore niedopatrzenie, gdyż środowisko to jest chętnie i masowo stosowane w przeróżnych dystrybucjach.

Na szczęście można temu problemowi zaradzić w dwojaki sposób. Posiadając profil ICC dla naszego monitora musimy go po prostu aktywować podczas startu naszej sesji. Jak łatwo się domyślić, osiągniemy to uruchamiając odpowiednie polecenie, podając mu jako parametr odpowiedni plik. Tym tajemniczym poleceniem jest np. xcalib – znajdujący się w repozytoriach każdej dystrybucji. Aby przetestować jego działanie, po jego zainstalowaniu wystarczy nakarmić go posiadanym przez nas profilem.

Sposób nr. 1

xcalib nazwa_profilu.icc

Aby wyczyścić te ustawienia, wywołujemy:

xcalib -c

Jak sprawić, aby wgranie pliku ICC następowało wraz z naszym zalogowaniem się do systemu? Po prostu polecenie „xcalib nazwa_profilu.icc” dodajemy do poleceń startowych poprzez Ustawienia -> Sesja i Uruchamianie.

Sposób nr. 2

Innym rozwiązaniem jest użycie daemona colord oraz xiccd. Ma to tę przewagę, że colord samodzielnie rozpozna urządzenia dla których można zastosować profile kolorów i przypisze im dostępne w systemie pliki icc (lub pozwoli na ich ustawienie). Xiccd natomiast to namiastka gnome-color-manager i automatycznego aktywowania profili przypisanych do danego urządzenia. W ten sposób za pomocą colord ustalimy, które icc powinno obsługiwać które urządzenie, a resztą zajmie się automatycznie xiccd, który załaduje profil po starcie systemu. Różnica między xcalib a xiccd jest też taka, że xcalib ustala parametry gamma dla całego serwera X, natomiast xiccd podsuwa pożądany profil programom, które takie regulacje respektują (GIMP, Darktable, itp.). Brzmi to dość skomplikowanie, ale działa – jeżeli się przebrnie przez tekstowe ustawienia. Inaczej też traktuje posiadany przez nas plik icc. Kopiujemy go bowiem do katalogu:

cp nazwa_profilu.icc ~/.local/share/icc

To, czego potrzebujemy to usługa colord oraz xiccd – czyli dodajemy PPA i instalujemy (niestety, xiccd jest w PPA tylko w wersji dla 14.04 – ew. źródła najdziemy tutaj). Podobne machinacje możemy przeprowadzić również dla Manjaro i Arch Linuksa, wykorzystując repozytorium AUR (i menadżer pakietów, tudzież polecenia pacman oraz yaourt):

sudo add-apt-repository ppa:pmjdebruijn/xiccd-testing

sudo apt-get install colord xiccd

Odpalamy teraz xiccd:

nohup xiccd &

Teraz czas na nieco magii w terminalu:

colormgr get-devices
colormgr get-profile-by-filename nazwa_profilu.icc

Otrzymaliśmy ścieżkę do urządzenia/urządzeń oraz do profili, tak jak widzi je colord. Należy teraz skojarzyć odpowiednie urządzenie z odpowiednim profilem:

colormgr device-add-profile \
/org/freedesktop/ColorManager/devices/xrandr_AU_Optronics_zdhor_1000 \
/org/freedesktop/ColorManager/profiles/icc_0c0c0a849671af10f75fff468b421a07_zdhor_1000

Oczywiście linijki /org/freedesktop(…) wstawiamy takie, jakie uzyskaliśmy za pomocą wcześniejszych komend. Teraz musimy zadbać o to, aby xiccd uruchamiało się automatycznie. Najprościej dorzucić go do autostartu i to globalnego. Tworzymy zatem odpowiedni plik .desktop w /etc/xdg/autostart:

sudo gedit /etc/xdg/autostart/xiccd.desktop

I wklejamy:

[Desktop Entry]
Encoding=UTF-8
Name=xiccd
GenericName=X11 ICC Daemon
Comment=Dodaje zarządzanie kolorami w danej sesji
Exec=xiccd
Terminal=false
Type=Application
Categories=
OnlyShowIn=XFCE;

Xiccd nie potrzebuje żadnych parametrów, gdyż wykorzystuje bazę danych colord.

Takim oto sposobem można podrasować nieco Xfce i dopasować je do min. standardów jakościowych wymaganych przez użytkowników zajmujących się na Linuksie poważniejszymi pracami graficznymi.  

13 komentarzy

  1. Świetna porada. Dzięki Tobie mój xfce nauczył się w końcu poprawnie wyświetlać kolory. Ten blog jest w całości znakomity i bardzo fajnie pisany. Aż dziw że dopiero teraz na niego trafiłem. Dodaję do zakładek 🙂

  2. Właśnie kończę przygotowania do przesiadki z wiadomego systemu na Minta i po sprawdzeniu 2 dystrybucji Mate i Xfce wybór padł na tę drugą. A, że zajmuje się amatorsko fotografią i sprawa kolorów wyświetlanych na moim S1921 nie jest dla mnie obojętna trochę się zastanawiam, czy to dobry wybór? Wcześniej korzystałem z kalibracji kolorów dostępnej w Win7, a RGB
    monitora miałem ustawione na “custom” i było to wystarczające dla moich potrzeb. Stąd moje pytanie: jaki z opisanych sposobów zastosować, aby nie spowalniać zbytnio Xfce i kolory nie uciekały przesadnie?
    Funkcjonalność Xfce jest jakby skrojona dla mnie i moich nawyków “bezmyszkowej” obsługi pulpitu (trochę jak Win7) i nie chciałbym z niego rezygnować.

    PS. To mój pierwszy post, a nie przywitałem się. Witam Moda Salvadhora i Gości!

  3. Witam serdecznie w gronie wolnych ludzi 🙂

    Podstawą będzie zdobycie profilu icc dla tego monitora – można go wyciągnąć z windowsowych sterowników (chyba), albo poszukać na stronie producenta (lub np. spod tego adresu http://mva.pl/viewtopic.php?f=21&t=170). Mylące rozszerzenie icm dla tych plików wynika z tego, że to MS po raz kolejny chciał to zrobić po swojemu. ICC i ICM są plikami tożsamymi, wystarczy zmienić rozszerzenie w przypadku problemów – struktura w środku jest taka sama.

    Co do wyboru metody – żadna z nich nie spowolni systemu. To jest tylko kwestia zacięcia, czy chce się mieć taką zmianę globalnie, w całym systemie (łącznie z oknami) – wtedy stosujemy proste xcalib. Inteligentne xiccd wymaga nieco więcej nakładu sił, ale potem automatyka robi za nas resztę roboty.

  4. To na początek spróbuję prostszego sposobu “xcalib”. Jak się wdrożę to pobawię się z “xiccd”. Dzięki za poradę. Blog zasługuje na wersje angielskojęzyczną; ocena na 6 za całokształt: od pomysłu do wykonania i prowadzenia.

    PS. Systemy komputerowe nie dadzą nikomu wolności. Kibicuje Linuxowi, gdyż na dziś dzień tylko Pingwin stanowi alternatywę dla Okienek, a jako typowy Polak wspieram słabszego. Uważam, że jeden system od drugiego może się wiele nauczyć. Świat tylko z Linuxem też byłby nudny.

  5. A jak mogę sprawdzić, że “xcalib” wgrał profil do systemu. Optycznie nie widzę różnicy po wykonaniu polecenia. Poniżej widok z terminala:

    xcalib 0.8
    Copyright (C) 2004-2007 Stefan Doehla
    THIS PROGRAM COMES WITH ABSOLUTELY NO WARRANTY!

    usage: xcalib [-options] ICCPROFILE
    or xcalib [-options] -alter

    where the available options are:
    -display or -d
    -screen or -s
    -clear or -c
    -noaction or -n
    -verbose or -v
    -printramps or -p
    -loss or -l
    -invert or -i
    -gammacor or -gc
    -brightness or -b
    -contrast or -co
    -red
    -green
    -blue
    -alter or -a
    -help or -h
    -version

    last parameter must be an ICC profile containing a vcgt-tag

    Example: ./xcalib -d :0 -s 0 -v bluish.icc
    Example: ./xcalib -red 1.1 10.0 100.0

  6. System komputerowy Linux daje mi wolność-od wirusów,windy i słabych programów tworzonych przez niewiadomo kogo w niejasnym celu.Daje mi wybór,możliwość rozwoju wiedzy i wyobraźni,poczucie swobody.
    Słabszego?
    Jakie kryterium przyjmujesz?

    To co powiedziałeś to typowa nowomowa,mająca znamiona pseudointelektualnej wypowiedzi,ba,pokusiłeś się nawet o proroctwo (“Systemy komputerowe nie dadzą nikomu wolności”).Jesteś wieszczem czy jak?
    Jako “typowy” (to Twój osąd,czy posiadłeś tą wiedzę z onetu?) Polak “wspierasz słabszego”,ale Twoja wypowiedź nosi cechy kryptoreklamy “silniejszego” (windy).
    Cztery zdania,zero treści.

  7. Windows na desktopie to potęga, nie wierzysz przejdź się po znajomych. Tylko nie pisz, że wszyscy mają Pingwina, bo nie uwierzę. W moim 4-tysięcznym miasteczku Linuksa mam raczej tylko ja. Co tam Linux, chyba jako jednym używam LibreOffice. Wszyscy mają Łordy, większość wiadomego pochodzenia. O czym tu rozmawiać?
    Wspieram to za dużo powiedziane (jeszcze nie dotuje Xfce, ale mam zamiar), powiedzmy, że na razie gorąco kibicuje. No i żona i dzieci mnie w domu… że jak był Win7, to było fajnie 🙂 Reszta rodziny jest zdania, że to kryzys wieku średniego 🙂
    Nie łap mnie pleas za słówka, naprawdę chciałbym, żeby Linux miał na desktopie 6-8 %. Może Corel zmieniłby zdanie i Adobe wydałoby nowszego Readera. Jak widzisz silny Linux jest w moim interesie, ale na dziś dzień jestem sceptyczny… Pani Wiesia musi robić PITy, na płycie w Gazecie Prawnej nie widziałem wsparcia dla Linuxa. I Pani Wiesia nie przeniesie się na Linuxa. Trzeba to w końcu zrozumieć, że na tym boisku MS gra u siebie. Być może jeszcze przez 10 lat Linux będzie miał 2% i trzeba będzie z tym żyć.

    A tak z innej beczki, jak radzisz sobie z kalibracją monitora pod Xfce?

  8. Próbuję się zabrać za kalibrację nowego monitora Iiyamay, ale producent dostarcza tylko profile .icm. Czy powyższy sposób można również zastosować do icm?

    No i jeszcze jeden problem: będę miał podłączone 2 monitory: Eizo i Iiyamę. Czy można ustawić na Xfce 2 profile?

    Salvadhor wspominał też kiedyś o programie na Linuxa GAMMApage, ale nie można go ściągnąć z Netu. Czy ktoś może pomóc i podsłać paczki z tym programem?

  9. Od czasu powstania powyższego minęło już kilka lat i zdążyły pojawić się nowe wersje Xfce, w tym Xfce 4.14 z wbudowanym zarządzaniem profilami https://docs.xfce.org/xfce/xfce4-settings/4.14/color.

    GAMMApage to taki substytut profili, chociaż daje możliwość jako takiego wyregulowania – niestety, trzeba pobierać go na własną rękę i tak też odpalać (to prosty skrypt w Pythonie) https://wtanaka.com/node/7968

    ICC i ICM to te same pliki. Różnią się tylko rozszerzeniem i nie wszystkie programy rozpoznają ICM lub na odwrót. Wystarczy zmienić rozszerzenie i już będzie ok 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Post comment

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.