# Information om &kappname;

Thomas Luebking thomas.luebking@web.de
&erik.kjaer.pedersen.role;
2005 Thomas Luebking
&FDLNotice;
2005-01-15
2.0.1

&kappname; er en optegningsmaskine for sammensætninger som bruges af &kwin;.

Dette dokument er mere en relativt generel forklaring af hvad den gør, hvordan den virker og hvilke begrænsninger den har, end en dokumentation af hvordan den bruges (eftersom den virker automatisk i baggrunden).

KDE kwin optegningsmaskine

## Indledning

&kappname; er baseret på xcompmgr, Keith Packards referenceimplementering til at bruge de nye funktionerne i X.

Sammensætningshåndteringen fanger uddata fra X-windows og tegner dem op i et enkelt billede som vises på skærmen. Fordelen ved at gøre dette er at man kan gøre stort set hvad som helst med vinduets indhold, inklusive at sammensætte dem (gennemsigtighed) eller tilføje skygger. Man kan også tone dem, tilføje ubehagelige reklamer på hvert vindue, klemme dem sammen, fragmentere dem, tilføje spor eller hvad som helst andet du kan forestille dig, kun begrænset af hardware.

## Xorg

Det er nødvendigt at have X.org 6.8 eller senere for at få &kappname; til at fungere. X.org 6.7 eller ældre eller XFree86 virker ikke.

### Opsætning

Du skal eksplicit aktivere sammensætningsudvidelsen. Tilføj et nyt afsnit i X.org indstillingsfil.

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

Hvis det understøttes af din grafikprocessor, GPU (den komplekse kreds som styrer moderne grafikkort), aktiveres acceleration med Render. Dette understøttes bedst af NVIDIA, og mindre fuldstændigt af ATI-kort.

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

&kappname; skulle nu være tilgængelig. For mere information, se OSS.

## Opsætning

Dette kapitel beskriver de parametre du kan finjustere, hvad deres synlige resultat bliver og deres påvirkning på ydelsen.

### Gennemsigtighed

Et gennemsigtigt objekt er et som lader lys passere gennem. Når det gælder vinduer på desktoppen, betyder det at indholdet i vinduet ses gennem det som er øverst.

Gennemsigtighed lader dig betone visse vinduer, få en tredimensionel visning af desktoppen, holde styr på dækkede vinduer og blot se sødt ud. Prisen er at det koster noget systemkapacitet at sammensætte ting og sager.

Du kan indstille gennemsigtighed uafhængigt for følgende punkter:

Aktive vinduer

  Det foreslås at du deaktiverer gennemsigtighed for det aktive vinduet. Den hovedsagelige grund er ydelse, og dernæst at når du kigger på indholdet i et gennemsigtigt vindue skal hjernen bortfiltrere den irriterende information som lyser gennem, hvilket er trættende.

Inaktive vinduer

  Hvis du stæller in inaktive vindue at være gennemsigtige, synes aktive vinduer at være betonede og er nemmere at fokusere på. Hvis du alligevel vælger en lavere værdi, kan du have svært ved at finde et inaktivt vindue. Hvis du vælger meget lave værdier (< 20 %) kan du måske ikke skelne rækkefølgen vinduer ligger ovenpå hinanden, så du kan klikke på knappen O.k. ved en fejl i en dialog, når du blot ville aktivere et vindue. De bedste værdier er mellem 60 % og 80 %.

Flyttende vinduer

  Selvom det er en pæn effekt med meget gennemsigtighed (med værdien < 20 %) når vinduer flyttes, bliver prisen at betale i ydelse høj, især hvis du ikke deaktiverer skygger (se nedenfor). Prøv det og hvis du føler at systemet er langsomt, så behold vinduer som flyttes ugennemsigtige. Denne værdi gælder også vinduer hvor størrelsen er ved at ændres.

Dokkede vinduer

  Eftersom statusfelter såsom Kicker sjældent eller aldrig flyttes, og oftest har begrænset størrelse, er dette kun visuelt og påvirker ikke systemets ydelse negativt.

Behandl vinduer med "Behold over andre" som aktive

  Hvis du indstiller et vindue at være ovenfor andre, vil du ofte have fokus på det, så det kan give mening at give det samme betoning.

Deaktivér ARGB-vindue

  XRender understøtter vindue med alfamaske, dvs. gennemsigtige dele. For øjeblikket findes der ingen eller meget få programmer som benytter sig af denne funktion, eftersom den ikke giver mening uden at bruge sammensætningshåndtering. Dette kan ændres i fremtiden.

  På den anden side, indstiller de fleste GTK 1.x-programmer (f.eks. xmms) en sådan alfamaske, hvilket resulterer i næsten obrugelige vinduer (så længe vinduet som ligger under ikke er sort), så du kan deaktivere understøttelse for ARGB-vinduer her for at kunne bruge GTK-programmer. Det kommer forhåbentlig til at blive rettet for GTK i en nær fremtid.

### Skygger

Hvorfor skulle nogen ville at vindue kaster skygger? Ja, måske kun fordi det ser pænt ud, eller for at det tillader bedre separation af vinduer, eller... for at det ser pænt ud!

Brug skygger

  En skygge koster en vis ekstra ydelse for processoren og grafikprocessoren, så de kan deaktiveres mens en generel alfakanalmulighed beholdes.

Aktivt vindues størrelse
Inaktivt vindues størrelse
Dokket vindues størrelse

  Du kan vælge flere forskellige skyggestørrelser for forskellige vinduestilstande eller -typer. Værdierne er ikke absolutte, men gælder skærmens opløsning.

  I princippet kan du indstille alle de værdier du vil (hvis du redigerer indstillingsfilen med en teksteditor, langt mere end 32 som tilbydes), men større skygger koster mere ydelse for processoren og grafikprocessoren.

Lodret position
Vandret position

  Normalt ville vinduet kaste en skygge ens rundt omkring, som svarer til en lyskilde ligefrem. Brugere bekendte med &MacOS; vil måske have en lodret forskydning, mens brugere af &Windows; kan foretrække en vis forskydning mod sydøst. Eksperimentér med værdier indtil du er tilfreds.

Skyggefarve

  Oftest ses skygger som fravær af lys i grå nuancer (så den maksimale skygge er sort, eller slet intet lys). Men dette er minsandten en virtuel verden, og hvis du til og med vil have lyserøde skygger, så hvorfor ikke?

Fjern skygger ved bevægelse

  Markér dette hvis du behøver mere ydelse (især når du bruger gennemsigtige vinduer ved forflytning).

Fjern skygger ved ændring af størrelse

  Det er en god idé at markere dette hvad enten gennemsigtige vinduer bruges ved størrelsesændring (og forflyttning) eller ej. Punktafbildningerne af vinduernes skygger skal laves om hele tiden under størrelsesændring, hvilket giver stor påvirkning på systemydelsen.

### Effekter

Indtoning af vindue
Svind hen mellem opacitetsændringer

  I stedet for kun at lade et nyt vindue dukke op, kan du ville tone det langsomt ind. Selv om det ser imponerende ud, har det en lige så imponerede pris i ydelse, og det er sært at bruge vinduer som er ved at tones på en meningsfuld måde.

Indtoningshastighed
Udtoningshastighed

  På grund af brugbarhedsgrundene som nævnes under Ton vindue ind, er det mest praktisk at bruge en hurtig indtoningshastighed og (for mere øjegodter) en langsom udtoningshastighed. Det giver behagelige effekter og et system som føles blødt, samt lav latenstid inden information vises.

## Problemer

Hele sammensætningsudvidelsen er meget ny. Den kan forårsage alvorlige problemer, og til og med få X til at bryde sammen, så du advares stærkt mod at aktivere sammensætningsudvidelsen i Xorg.conf for kritiske produktionssystemer. Hvis du alligevel vil tage risikoen med et noget mindre stabilt system, er det virkelig dejligt at se en del øjengodter.

I følgende tilfælde vil du måske mærke nogle problemer. Her er nogle populære måder at komme forbi dem:

Jeg har X.org 6.8.x, men &kappname; starter ikke

Du skal eksplicit aktivere udvidelsen Composite. Tilføj en ny sektion i /etc/X11/XorgConfig:

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

O.k., &kappname; virker, men det er forfærdelig langsom

Hvis det understøttes af din grafikprocessor, GPU, (i hovedsagen NVIDIA-kort, og i et vist mål ATI-kort), så sørg først for at undersøge om du har aktiveret acceleration med Render.

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

Hvis den stadigvæk er langsom kan du forsøge at justere hukommelsesforbruget. Mindsk enten skærmdybden (f.eks. fra 24 til 16) eller mindsk opløsningen (f.eks. fra 1280x1024 til 1024x768).

Bemærk at den begrænsende faktor for sammensætningsudvidelsen for øjeblikket synes at være processorens cachestørrelse.

Efter at have aktiveret sammensætningshåndteringen kan jeg ikke længere køre nogen GLX-programmer. Jeg har et NVIDIA-kort.

For at forhindre nogle problemer deaktiverede NVIDIA støtte for GLX når sammensætningshåndteringen er aktiv. At aktivere det igen er muligt, men kan forårsage problemer for visse kombinationer af kerne og grafikprocessor.

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

Jeg ville spille et spil med SDL (men ikke GL), såsom scummvm, men når sammensætningshåndtereren er aktiveret kan jeg kun se en skygge.

Dette er et problem med PictType som rapporteres af SDL.

En måde at komme forbi problemet er:

    I stedet for direkte at kalde scummvm, kald
    SDL_VIDEO_X11_VISUALID=0x24 scummvm. Dette beder SDL om at
    bruge et format som understøttes og du kan spille som sædvanligt.

Program XXX nægter at starte efter sammensætningshåndteringen er aktiveret.

Program YYY forstyrrer X efter sammensætningshåndteringen er aktiveret.

Program ZZZ ser mærkeligt ud efter sammensætningshåndteringen er aktiveret.

Sammensætningsudvidelsen er stadigvæk eksperimentel.

En måde at komme forbi problemet er:

I stedet for at kalde `programnavn` direkte, kald `XLIB_SKIP_ARGB_VISUALS=1 programnavn`

Programmer som er kendte for at give problemer:

- Alle GTK 1-program (t.ex. gmplayer, xmms, gaim): Mislykkes at starte, ser unyttigt mærkelige ud, eller får X til at bryde sammen.

- &kuickshow;: Viser kun en sort ramme

- &Qt; Designer: Får X til at bryde sammen

- &kopete;: Får X til at bryde sammen

- &kolf;: Får X til at bryde sammen

Jeg forsøger at kigge på en video, men ser kun artefakter i videovinduet.

Du bruger xv som videogrænseflade. Det er overlay-tilstanden, hvor videoindholdet skrives direkte til videokortets hukommelse, og går forbi X. Derfor synes vinduet at være statisk (farvet baggrund) og opdateres ikke af skadeudvidelsen.

Det kommer forhåbentligt til at blive rettet i fremtiden. For øjeblikket fik jeg de bedste resultater ved brug af Xine, men at vise gennemsigtige vinduer er alligevel ikke hurtigt.

## Medvirkende og licenser

### Forfattere

Thomas Luebking baghira-style@gmx.net: Redaktør

&underFDL; &underGPL;