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.