# Informacje o &kappname;

## Wprowadzenie

&kappname; wywodzi się z xcompmgr, referencyjnej implementacji składającej obrazy Keitha Packarda do użycia z nowymi możliwościami systemu okien X.

Menadżer składający przechwytuje obraz z okienek X i generuje na ich podstawie pojedynczy obrazek, który zostanie wyświetlony na ekranie. Zaletą takiego rozwiązania jest to, że można zrobić praktycznie cokolwiek z zawartością okienek, włączając w to ich mieszanie (półprzezroczystość) lub dołożenie cieniowania. Można je również zabarwiać, dodać paskudne reklamy, ściskać je, dzielić na kawałki, dodawać linie przeplotu albo cokolwiek, co podsunie wyobraźnia. Ograniczeniem są jedynie możliwości sprzętu.

## Xorg

Żeby &kappname; działało, trzeba mieć koniecznie X.org 6.8 lub późniejsze. Wcześniejsze wersje X.org (6.7), ani XFree86 nie będą działały.

### Uruchomienie

Trzeba jawnie włączyć rozszerzenie Composite. Należy w tym celu dodać nową sekcję do pliku konfiguracyjnego X.org:

    Section "Extensions"
        Option "Composite" "Enable"
    EndSection

Jeśli Twój GPU (procesor graficzny w Twojej karcie graficznej) obsługuje rozszerzenie Render, to powinno być włączone w celu przyspieszenia działania. Z jego obsługą najlepiej radzi sobie NVIDIA, nieco gorzej sprawa wygląda w wypadku kart ATI.

    Section "Device"
    ....
    ....
        Option     "RenderAccel" "true"
    ....
    ....
    EndSection

&kappname; powinno być teraz dostępne. Żeby uzyskać więcej informacji, należy odwiedzić Najczęściej zadawane pytania.

## Ustawienia

Rozdział ten opisuje, które parametry można dostrajać, jaki widoczny efekt one spowodują i ich wpływ na wydajność.

### Półprzezroczystość

Półprzezroczysty obiekt to taki, który pozwala światłu przez siebie przenikać. W kategoriach okien na pulpicie oznacza to, że zawartość okien może być widoczna przez okno znajdujące się na samej górze (hierarchii okien).

Półprzezroczystość pozwala na podkreślenie znaczenia specjalnych okien, uzyskanie trójwymiarowego widoku pulpitu, panowanie nad przykrytymi oknami oraz po prostu ślicznie wygląda. Jej ceną jest wydajność systemu, wykorzystywana do mieszania kolorów.

Można niezależnie skonfigurować półprzezroczystość dla następujących elementów:

Okna aktywne

- Zaleca się wyłączenie półprzezroczystości dla aktywnego okna. Główną przyczyną jest wydajność, natomiast oprócz tego przeglądanie zawartości półprzezroczystego okna powoduje, że Twój mózg musi usuwać irytujące, prześwitujące obrazy, co bywa męczące.

Okna nieaktywne

- W przypadku ustawienia okien nieaktywnych jako półprzezroczystych, okna aktywne wystąpią jako wyróżnione i łatwiejsze do skupienia na nich wzroku. Jednakże gdy ustawi się niższą wartość, odnalezienie nieaktywnych okien może sprawiać kłopot. Przy bardzo niskich wartościach (mniejszych niż 20%) można nawet nie być w stanie określić umiejscowienia okien na ich stosie, co może doprowadzić do przypadkowego kliknięcia przycisku OK, zamiast oczekiwanej aktywacji okna. Wartości optymalne to od 60 do 80%.

Przemieszczające się okna

- Jakkolwiek przyjemnym dla oka efektem jest ustawienie dużego współczynnika przezroczystości (nieprzezroczystość mniejsza niż 20%) dla przemieszczających się okien, trzeba za to zapłacić wysoką cenę w wydajności, zwłaszcza, gdy nie wyłączy się cieniowania (zobacz poniżej). Warto jednak spróbować, a jeśli system będzie za wolny, zachować poruszające się okna nieprzezroczyste. Wartość ta odnosi się również do okienek, które zmieniają rozmiar.

Okienka dokowania

- Jako że okienka dokowania, takie jak kicker, są rzadko (jeśli w ogóle) przesuwane, a do tego mają niewielki rozmiar, półprzezroczystość jest wyłącznie efektem wizualnym, bez dużej szkody dla wydajności systemu.

Traktowanie okien "zawsze na wierzchu" jako aktywnych

- Jeśli chcesz trzymać okno ponad innymi, zwykle chcesz skupiać na nim uwagę, więc sensowne jest nadanie mu takiej samej widoczności jak oknu aktywnemu.

Wyłączenie okien ARGB

- XRender obsługuje okienka z maską alfa, innymi słowy sekcje półprzezroczyste. Obecnie nie istnieją (być może z nielicznymi wyjątkami) programy potrafiące zrobić z niego użytek, ponieważ nie ma to żadnego sensu bez menadżera składania obrazów. W przyszłości może to ulec zmianie.

  Z drugiej strony, większość programów gtk 1.x (np. xmms) ustawia taką maskę alfa, co skutkuje praktycznie bezużytecznymi oknami (o ile okna pod spodem nie są czarne), więc można tu wyłączyć obsługę okien ARGB, żeby móc używać programów gtk. Miejmy nadzieję, że w najbliższej przyszłości pojawi się na to łata w gtk.

### Cienie

Dlaczego ktokolwiek mógłby chcieć, żeby jego okna rzucały cienie? Cóż, może po prostu dlatego, że to fajnie wygląda albo dlatego, że pozwala na lepsze oddzielenie okien albo ... dlatego że fajnie wygląda.

Używanie cieni

- Jako że cienie potrzebują dodatkowej mocy procesora i GPU, mogą zostać wyłączone, przy wciąż zachowanej ogólnej funkcjonalności kanału alfa.

Rozmiar aktywnego okna

Rozmiar nieaktywnego okna

Rozmiar okna dokującego

- Można określić różne wielkości cienia dla różnych stanów i typów okna. Wartości nie są absolutne, ale zostaną zastosowane w stosunku do rozdzielczości ekranu użytkownika.

  W szczególności, można ustawić dowolną wartość (przy ręcznej edycji pliku konfiguracyjnego o wiele więcej niż domyślne 32), ale większe cienie potrzebują więcej mocy procesora i GPU.

Przesunięcie pionowe

Przesunięcie poziome

- Domyślnie okno rzuca cień równy naokoło, implikując frontalne źródło światła. Użytkownicy zaznajomieni z &MacOS; mogą woleć przesunięcie w pionie, użytkownicy &Windows; natomiast mniejsze przesunięcie w kierunku południowowschodnim. Warto poeksperymentować z tymi wartościami aż do uzyskania optymalnego efektu.

Kolor cienia

- Zwykle cienie, jako brak światła, rysowane są w odcieniach szarości (tak więc maksymalny kolor cienia to czarny, albo zupełny brak światła). Ale zaraz, przecież to wirtualny świat, więc jeśli chciałoby się mieć cienie różowe, to właściwie dlaczego nie?

Usuwanie cieni przy przemieszczaniu

- Warto zaznaczyć, jeśli potrzebna jest lepsza wydajność (szczególnie gdy używa się półprzezroczystych przemieszczających się okien).

Usuwanie cieni przy zmianie rozmiaru

- Zaznaczenie tej opcji jest dobrym pomysłem, niezależnie od tego czy używa się półprzezroczystych przesuwających (zmieniających rozmiar) okien, czy nie. Mapa pikseli cienia okna musi być stale regenerowana przy zmianach rozmiaru, co ma olbrzymi wpływ na wydajność systemu.

### Efekty

Wyłaniające się okna

Wyłanianie pomiędzy zmianami nieprzezroczystości

- Zamiast po prostu pokazać nowe okienko, można chcieć, żeby się powoli wyłoniło. Chociaż wygląda to imponująco, płaci się równie imponującą cenę wydajności, a także trudno działać z okienkami właśnie się wyłaniającymi.

Prędkość wyłaniania

Prędkość zanikania

- Z przyczyn związanych z wygodą użytkowania w Wyłaniających się oknach, najpraktyczniejszym wydaje się używanie dużej szybkości wyłaniania, a (dla lepszego efektu wizualnego) małej szybkości zanikania. Zapewni to przyjemny efekt i odczucie płynnie działającego systemu, jak również brak dużych opóźnień przy pojawianiu się informacji.

## Problemy

Rozszerzenie Composite (składania obrazu) jest dość nowe. Może powodować występowanie licznych problemów, a nawet prowadzić do awarii X, więc zaleca się usilnie unikania włączania tego rozszerzenia w Xorg.conf na systemach produkcyjnych, używanych do ważnych prac. Jednakże jeżeli tylko można sobie pozwolić na nieco bardziej niestabilny system, z pewnością miłym dodatkiem będzie wzbogacenie jego wyglądu.

W takim wypadku można zauważyć różne niedoskonałości. Oto niektóre z często pojawiających się problemów oraz sposoby ich obejścia:

Mam X.org w wersji 6.8.x, ale &kappname; się nie uruchamia

Trzeba jawnie włączyć rozszerzenie Composite, dodając nową sekcję do /etc/X11/XorgConfig:

    Section "Extensions"
       Option "Composite" "Enable"
    EndSection

&kappname; działa, ale jest koszmarnie wolne

Jeśli Twój GPU (procesor na karcie graficznej) obsługuje rozszerzenie Render (głównie NVIDIA i jako tako karty ATI), należy wpierw upewnić się, że jest włączone

    Section "Device"
    ....
    ....
    Option     "RenderAccel" "true"
    ....
    ....
    EndSection

Jeśli nadal działa wolno, można spróbować zmniejszyć zużycie pamięci. Albo poprzez zmniejszenie głębi kolorów ekranu (np. z 24 bitów do 16), albo zmniejszenie samej rozdzielczości (np. z 1280x1024 na 1024x768).

Należy zwrócić uwagę, że czynnikiem obecnie ograniczającym rozszerzenie Composite wydaje się być rozmiar pamięci podręcznej procesora głównego (CPU).

Po włączeniu rozszerzenia Composite, już nie jestem w stanie uruchomić żadnego z programów GLX. Posiadam kartę NVIDIA.

Żeby uchronić przed niektórymi problemami, NVIDIA wyłączyła obsługę GLX, kiedy aktywne jest rozszerzenie Composite. Ponowne włączenie jest możliwe, ale może prowadzić do problemów na niektórych konfiguracjach jądra/sterownika/GPU.

    Section "Device"
    ....
    ....
    Option  "AllowGLXWithComposite" "true"
    ....
    ....
    EndSection

Chciałem zagrać w grę używającą SDL (ale nie GL), powiedzmy że scummvm, ale kiedy &kappname; jest aktywny, jedyne co mogę zobaczyć, to cień!

Jest to problem z PictType zgłaszanym przez SDL.

Obejście problemu:

    Zamiast uruchamiać bezpośrednio scummvm, uruchom
    je w sposób SDL_VIDEO_X11_VISUALID=0x24 scummvm. Nakazuje to
    SDL używać obsługiwanego formatu, a Ty możesz grać jak zwykle.

Program XXX nie chce się uruchamiać po włączeniu rozszerzenia Composite.

Program YYY powoduje awarię X po włączeniu rozszerzenia Composite.

Program ZZZ wygląda dziwacznie po włączeniu menadżera Composite.

Rozszerzenie Composite jest wciąż w fazie eksperymentalnej.

Obejście problemu:

Zamiast wywoływać bezpośrednio `nazwaProgramu`, uruchom ją poprzez `XLIB_SKIP_ARGB_VISUALS=1 nazwaProgramu`

Programy, o których wiadomo, że sprawiają problemy:

- Wszystkie programy gtk1 (np. gmplayer, xmms, gaim) - nie uruchamiają się, wyglądają dziwnie i bezużytecznie albo powodują awarię X

- &kuickshow; - wyświetla tylko czarną ramkę

- &Qt; Designer - powoduje awarię X

- &kopete; - powoduje awarię X

- &kolf; - powoduje awarię X

Chcę obejrzeć film, ale widzę wyłącznie artefakty w okienku wideo.

Używasz xv jako silnika wideo. Jest to tryb nakładkowy, w którym zawartość obrazu jest zapisywana bezpośrednio do pamięci karty graficznej, omijając X. Dlatego okienko wygląda statycznie (kolorowe tło) i nie jest aktualizowane przez rozszerzenie Damage.

Miejmy nadzieję, że w przyszłości pojawi się na to poprawka. Aktualnie najlepsze wyniki osiąga się używając Xine, ale wyświetlanie półprzezroczystych filmów tak czy owak nie jest szybkie.

## Podziękowania i licencje

### Autorzy

Thomas Luebking baghira-style@gmx.net - Editor

&underFDL; &underGPL;