Howto: Äkta transparens i X.org med Debian Unstable
Denna guide gäller Debian Unstable som det såg ut 2006-02-21, med nvidia-drivrutinen. Det behövs också paket från Debian Experimental, mer om detta strax.
Vad jag kommer att göra är att aktivera stöd för äkta transparens. Detta innebär att du kan göra hela fönster - vilket fönster som helst - delvis genomskinligt, t ex kan du ha en terminal ovanpå firefox och läsa en guide i firefox samtidigt som du skriver i terminalen ovanpå.
Något jag inte lyckats göra är att sätta transparens på ett fönster som använder OpenGL, t ex glxgears. Jag tvivlar på att det är genomförbart i dagsläget, rätta mig om jag har fel.
Slutresultatet kan se ut så här:
Guiden antar att du har ett befintligt system med fungerande GLX-stöd (OpenGL) över nvidia-drivrutinen. Större delen av guiden fungerar nog bra även på ATi-kort, men jag har inte kunnat testa det så jag lovar inget. Mer instruktioner för er med ATI-kort finns i länken längst ner.
Redigera /etc/apt/sources.list
Nu ska vi se till att vi kan få tag i alla paket vi vill ha. Ändra din sources.list så att den ser ut så här:deb http://mirror.pudas.net/debian/ unstable main contrib non-free deb-src http://mirror.pudas.net/debian/ unstable main contrib non-free deb http://mirror.pudas.net/debian/ experimental main contrib non-free deb-src http://mirror.pudas.net/debian/ experimental main contrib non-free
Stäng av aptitude/synaptic/... om du har det igång och starta sedan aptitude. Du kommer få ett felmeddelande om att den inte hittar paketlistorna, det är helt normalt eftersom du lagt till nya paketkällor. Tryck bort felmeddelandet och tryck sedan på u för att hämta nya paketlistor.
Installera paket
sudo aptitude install transset xcompmgr
Gör en backup av din fungerande /etc/X11/xorg.conf
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
Redigera /etc/X11/xorg.conf
Först ska vi kolla lite på det som är specifikt för nvidiakorten.
Här antar jag att du redan har nvidia-drivaren igång och fungerande OpenGL-stöd. Det jag lägger till är RenderAccel och AllowGLXWithComposite.Section "Device" Identifier "NVIDIA Corporation NV28 [GeForce4 Ti 4200 Go AGP 8x]" Driver "nvidia" BusID "PCI:1:0:0" Option "RenderAccel" "true" Option "AllowGLXWithComposite" "On" Option "nologo" EndSection
RenderAccel anger att maskinvaruaccelerationen i nvidiakortet ska användas för att snabba upp Xorg. AllowGLXWithComposite anger att vi ska kombinera GLX (OpenGL) med Composite (som ger transparens och/eller skuggor).
Förmodligen har du inte en sektion som heter Extensions sedan tidigare, skapa den i så fall nu.
Section "Extensions" Option "Composite" "true" EndSection
Här anger vi att vi ska aktivera Composite.
Testa xcompmgr
Starta om X.
Öppna en terminal och skriv xcompmgr -c. Om fönstren får skuggor så har du lyckats så långt!
Om det inte fungerar så har du förmodligen inte laddat Composite-extensionen. Kolla att du skrev rätt i /etc/X11/xorg.conf och att du verkligen startade om X (att bara logga ut och in i gdm/xdm startar inte om X). Ctrl+Alt+Backspace dödar alltid X.Om xcompmgr -c ger synliga skuggor så fungerar det. Nu ska du bestämma om du vill köra xcompmgr -c eller något annat. Jag är inte så intresserad av att ha skuggor på mina fönster utan är helt nöjd med genomskinligheten. Därför kör jag:
xcompmgr -n
Detta ger ingen direkt synlig effekt, utan ger bara stöd för transparensen. För att sedan göra ett fönster transparent använder vi transset, som jag skriver om längre ner.
För att få större klarhet i vilka argument du ska skicka till xcompmgr, kör:xcompmgr --help
Starta xcompmgr när X startas (Tack till skorpion för denna punkt)
Citat:Ursprungligen inskrivet av skorpion
F: För att få xcompmgr att starta med X, finns det något speciellt ställe man ska lägga kommandot?
S: Japp, jag la till följande rad i /etc/X11/xinit/xinitrc#Enable transparency xcompmgr -c -C -f -F -I 0.05 -O 0.03 &
Detta resulterar i att ALLA användare får transparens, om du bara vill at DU ska ha transparens så använd istället filen ~/.xinitrc
Jag tycker det är galenskap att ändra i /etc/X11/xinit/xinitrc. Jag rekommenderar att du istället ändrar ~/.xinitrc och ser till att xcompmgr körs INNAN fönsterhanteraren startar. Glöm inte &-tecknet på slutet, glömmer du det så kommer inte X att starta.
Min ~/.xinitrc ser ut så här:xcompmgr -n & # Denna rad måste ligga sist xfce4-session
Testa transset
När xcompmgr fungerar som det ska kan du använda transset för att göra ett fönster transparent.
Skriv i en terminal (med X och xcompmgr igång):transset .5
för sedan muspekaren till det fönster du vill göra transparent och klicka på det.
Du har nu satt transparensen till 50 %.transset-df
transset-df finns inte som debian-paket. Vi kommer därför att dra hem källkoden och kompilera det själva.
För att kompilera detta behöver du gcc (C-kompilator), make (program som automatiserar kompilering från flera källkodsfiler), pkg-config (ett hjälpprogram till make), samt bibliotek för några av funktionerna i transset-df:sudo aptitude install gcc make pkg-config libxcomposite-dev libxdamage-dev libxfixes3-dbg libxrender-dev
Dra hem källkoden till transset-df från http://forchheimer.se/transset-df/ med firefox eller kör följande kommando:
Packa upp källkoden för transset-df:
tar -xzf transset-df-5.tar.gz cd transset-df-5
Av makefilen som följer med transset-df framgår att den använder pkgconfig för att veta var vissa filer i systemet finns. Nu behöver vi tala om för pkgconfig var den kan hitta de berörda filerna:
export PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig/
Sökvägen till filerna kanske är annorlunda hos någon annan, men ta och kika vart xdamage.pc finns i systemet, ta en find på det. Min fanns alltså i /usr/X11R6/lib/pkgconfig/
Testa nu att kompilera med make. Viktigt: Detta måste köras i samma terminal som du körde export i nyss.
make
Om du får ett felmeddelande i stil med detta:
Package xcomposite was not found in the pkg-config search path. Perhaps you should add the directory containing `xcomposite.pc' to the PKG_CONFIG_PATH environment variable No package 'xcomposite' found Package xfixes was not found in the pkg-config search path. Perhaps you should add the directory containing `xfixes.pc' to the PKG_CONFIG_PATH environment variable No package 'xfixes' found Package xdamage was not found in the pkg-config search path. Perhaps you should add the directory containing `xdamage.pc' to the PKG_CONFIG_PATH environment variable No package 'xdamage' found
Så saknar du antingen ett av paketen jag nämner ovan, eller så missade du steget med export PKG_CONFIG_PATH.
Du bör nu ha lyckats köra make. Då har du fått en binär vid namn transset-df i katalogen du står i.
Testa att transset-df fungerar:./transset-df -p .6
Du borde nu ha fått 60 % opacitet (=40 % transparens) på fönstret som din muspekare hovrar över. Detta kräver förstås att du har xcompmgr igång.
Vi ska nu testa transset-df med lite andra parametrar för att få det att öka och minska opaciteten:
./transset-df -p --dec .2
Opaciteten bör ha minskat med 20 %.
./transset-df -p --inc .2
Opaciteten bör ha ökat med 20 %.
Om du sätter opaciteten till 0 % går det inte att se längre. Det kan ju bli lite jobbigt om man gör det av misstag. Därför sätter vi den minimala opaciteten till 10 %:
./transset-df -p --min .1 --dec .2
Detta minskar alltså opaciteten med 20 % så länge detta inte innebär att opaciteten blir mindre än 10 %.
Med --dec och --inc som parametrar till transset-df kan vi alltså ändra opaciteten relativt. Detta är bra när vi inte vill skriva den önskade opaciteten varje gång vi vill göra ett fönster genomskinligt. Vi ska nu koppla en tangentbordskombination till att göra just detta.
Jag kör XFCE och anger således hur man får det att fungera i XFCE och inget annat. Kopierar gärna in kompletteringar för andra fönsterhanterare om ni svarar i tråden.
Starta Xfce Settings Manager ("Xfce Inställningshanterare") och välj Window Manager ("Fönsterhanterare"). Klicka på tabben Keyboard ("Tangentbord"). Om du inte har en tangentbordsprofil sedan tidigare, klicka på add. Annars lägger du in två nya Command shortcuts ("Snabbtangenter för kommandon"):
/home/slafs/programs/transset-bg/transset-bg -p --min .1 --dec .2 /home/slafs/programs/transset-bg/transset-bg -p --inc .2
Naturligtvis ska du ersätta slafs/programs med sökvägen dit du lagt transset-bg.
Välj nu lämpliga kombinationer till dessa kommandon. Jag valde att öka opaciteten på Mod4+r (Mod4 är mer känd som Windowstangenten) och minska på Mod4+t. Inte så uppenbart val kanske, det är fritt fram att välja något bättre.Det går också att binda tangentbordskombinationer till kommandon med xbindkeys eller khotkeys. Ni får googla själva
Om någon lyckas binda kombinationen Ctrl+Scrollhjul eller liknande, skriv det i tråden, för det vill jag verkligen ha.
Tack till skorpion för några texter som hamnat här och var
Se även
http://gentoo-wiki.com/TIP_Xorg_X11_and_Tranparency (ger även viss hjälp för ATi-kort)
http://forchheimer.se/transset-df/