Howto: Äkta transparens i X.org med Debian Unstable

Permalänk
Medlem

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.

  1. 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.

  2. Installera paket

    sudo aptitude install transset xcompmgr

  3. Gör en backup av din fungerande /etc/X11/xorg.conf

    sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup

  4. 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.

  5. 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

  6. 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

  7. 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 %.

  8. 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/

Permalänk
Medlem
Permalänk
Medlem

Fasen vad nice. Fungerar skitbra. Någon sade att xorg var segt jag tycker inte det är så farligt ens med composite.

Visa signatur

DELL 20" 30" 20" PLP | Svorak.a5 | Kinesis Advantage Contoured <3 | Ergodox

Permalänk
Medlem

Funkar fint för mig med :- ) Bra guide.
Men det är väldigt långsamt när man rör på fönstrena som är transparenta.
Ska det vara så?

Permalänk
Medlem

Märkte att det beror på programmet. Större fönster mer sämre svar.

Visa signatur

DELL 20" 30" 20" PLP | Svorak.a5 | Kinesis Advantage Contoured <3 | Ergodox

Permalänk
Hedersmedlem

Funkade tom på första försöket. Det är man inte bortskämd med.

Tack för tipset!

EDIT: fick ändra lite med mplayer för att kunna se på film, fick starta den med "-vo X11 -zoom" som parametrar, som det stod i nån av länkarna du skrev. Annars är det inga problem än så länge

EDIT igen: qiv funkar heller inte längre, tydligen en känd bugg, inget att göra åt just nu. Får väl hitta en ny bildvisare så länge...

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

Vad trist att X krashar när man försöker starta skärmsläackare eller spel som t.ex nexuiz.

Visa signatur

DELL 20" 30" 20" PLP | Svorak.a5 | Kinesis Advantage Contoured <3 | Ergodox

Permalänk
Medlem

.. jo hur an ändrar man /etc/apt/sources.list?
det går inte!

den är skriv skyddad och går inte att ändra...

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

sudo vim /etc/apt/sources.list eller med valri editor

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Gego
.. jo hur an ändrar man /etc/apt/sources.list?
det går inte!

den är skriv skyddad och går inte att ändra...

Måste som sagt vara root.

Visa signatur

Behind every great fortune there is a crime. - Honoré de Balzac
simonb @ irc

Permalänk
Medlem

wow fungerer fin!
lite segt med det genom skinliga...
(ati har dåliga drivrutiner för mobility...)

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

Wow, applåder till dig

Jag hade dock lite problem med transset-df
När jag försökte kompilera det så fick jag bland annat detta error:

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

Det löstes med att köra
export PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig/ från samma terminal som jag körde make ifrån.
Det 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/

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

------ F: Hur lägger man till ALT + scrollupp som en utlösare i khotkeys? Jag fick det inte att registreras!?!?
S: ----------

/Niclas

EDIT: Fyfan, vad häftigt alltså. Det hackar inget på min celeron 2.2GHz och 1024Mb RAM.
Soft med fade-in/out på transparensen (växeln -F)
Skuggorn känns lite barnsligt, men det ger ett härligt djup i fönstrerna. Så det kommer jag ha kvar.
Transparensen är underbar. Helt perfekt när man följer guider som denna. Förut hade jag konsole bredvid webbläsarfönstret eller på ett annat skrivbord. men nu kan jag ha det över webbläsaren och ändå kunna läsa det jag behöver precis "under/bakom" där jag behöver skriva det. Kan inte bli bättre.
Att det dessutom blev så enkelt att ändra transparens med hjälp av khotkeys, det är bara ett stort PLUS. För mig blev WIN+T på/av med transparens, standard 70% Sedan WIN+D/F för öka/minska transparens.

Tack ännu en gång för guiden

Visa signatur

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare

Permalänk
Medlem

äsch, jag trodde detta var xgl

Permalänk
Medlem

Fint med uppdatering!
Bra guide!

Visa signatur

Behind every great fortune there is a crime. - Honoré de Balzac
simonb @ irc

Permalänk

Vad är vitsen med att det är transparent? Det ser ju jobbigt ut

Citat:

Ursprungligen inskrivet av Flogiston
Märkte att det beror på programmet. Större fönster mer sämre svar.

Det beror med säkerhet på att det inte är hårdvaruaccelererat.

Varför kör ni inte med XGl och Compiz istället?

Visa signatur

Microsoft Longhorn operating system is going to be Windows Vista. As in “a view into the distance” which surely refers to the prolonged development timeline of the OS

Permalänk
Medlem

Vad mycket jobb för nått som är defualt i OSX

Funkar det bra o ha terminalen liggandes över en film som snurrar eller laggar det ?

Visa signatur

We live in the age o stupidity || SparcStation 20,384mb RAM,1gb disk,2*125mhz, Solaris8
--------------------------------------------------------------------------------------------
Every suicide is a solution to a problem. -- Jean Baechler

Permalänk
Medlem

Jag har märkt att hela skärmen blir mörkare och mörkare när man använder vlc. någon anann som upplevt det?
Som om det ligger en skugga från fullskärmen som inte försvinner när man stänger ner vlc.

Visa signatur

DELL 20" 30" 20" PLP | Svorak.a5 | Kinesis Advantage Contoured <3 | Ergodox

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av turbonallen
Vad är vitsen med att det är transparent? Det ser ju jobbigt ut

Det beror med säkerhet på att det inte är hårdvaruaccelererat.

Varför kör ni inte med XGl och Compiz istället?

Med nvidiakortet och "RenderAccel" är detta i allra högsta grad hårdvaruaccelererat.

Permalänk
Medlem

sticky?
lite klister...(?)

Eller skall du lägga upp den på WikiBooks? (wikipedias öpna bok samling)

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

Har de gjort något nytt med xorgs transparens eftersom du skriver detta nu, eller är det samma som innan? Jag testade xcompmgr för lite mer än 1 år sedan när det var relativt nytt och då hackade det rätt rejält med skuggor och transparens.

Visa signatur

I distrust governments because I’ve studied history. Ask Joe this question: who does most of the killing? Who does most of the theft? Even the body-count of the worst criminals and terrorists pales in comparison to the death toll the average government inflicts on its own people. And it is not criminals who tax away 5/12ths of my income. - Eric S Raymond
http://www.css3.se

Permalänk
Medlem

Jättesött men två saker jag ska gnälla över. Snabbare hosting för skärmdumpen hade inte skadat och speglingen du refererar till http://mirror.pudas.net ska lägga ner inom kort så du kanske ska ändra så andra inte försöker i framtiden och sen gnäller över att det inte fungerar.

Permalänk

Re: Howto: Äkta transparens i X.org med Debian Unstable

Citat:

Ursprungligen inskrivet av slafs
...massa text...

Om du kör XFce4 så är det bättre att köra den inbyggda composite-hanteraren än Xorg:s. Den förstnämnda är stabilare.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av snutte
Snabbare hosting för skärmdumpen hade inte skadat

Ja tack, betalar du min räkning? I dagsläget finns ingen som levererar mer än 1 Mbit uppströms i mitt område.

Citat:

Ursprungligen inskrivet av snutte
speglingen du refererar till http://mirror.pudas.net ska lägga ner inom kort så du kanske ska ändra så andra inte försöker i framtiden och sen gnäller över att det inte fungerar.

Det är jag medveten om, men jag känner inte till någon annan bra mirror. Kommer bli kris när pudas väl genomför sin nerläggning

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av slafs
[*]transset-df
transset-df finns inte som debian-paket.
...
Ja tack, betalar du min räkning? I dagsläget finns ingen som levererar mer än 1 Mbit uppströms i mitt område.
...
Det är jag medveten om, men jag känner inte till någon annan bra mirror. Kommer bli kris när pudas väl genomför sin nerläggning

Finns det inget binärpaket? Gör ett åt oss!

Vad gäller bildhosting finns det flera bra, snabba, gratisställen att lägga upp dem på. Jag brukar använda Imageshack.

För debian-mirrors kör jag med ftp.se.debian.org. Det finns ett gäng svenska mirrors och gott om närbelägna utländska. Hela listan.

Visa signatur

Min dator är tuffare än din.

Permalänk
Medlem

Någon som vet vart man kan få tag i paket som transset och det för shadowsaken? Freedesktops cvs-server verkar vara det enda stället som finns, eller iaf som jag hittar. Men nu är den nere, dessutom hatar jag cvs

Visa signatur

I distrust governments because I’ve studied history. Ask Joe this question: who does most of the killing? Who does most of the theft? Even the body-count of the worst criminals and terrorists pales in comparison to the death toll the average government inflicts on its own people. And it is not criminals who tax away 5/12ths of my income. - Eric S Raymond
http://www.css3.se

Permalänk
Medlem

synd att man inte har nvidia kort, som ja vill ha, ja tycker ATI funkar skit i Linux,

blir att sälja mina 2Gb ram eller va de ja har i skåpet å ATI kortet ja har nu å köpa ett nvidia kort

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av blattis
synd att man inte har nvidia kort, som ja vill ha, ja tycker ATI funkar skit i Linux,

blir att sälja mina 2Gb ram eller va de ja har i skåpet å ATI kortet ja har nu å köpa ett nvidia kort

Äh, ATi fungerar helt dugligt i Linux, visst inte så bra som nVidia, men det fungerar. Jag kör XGL+Compiz helt utan några problem med mitt 9600 Pro.

Permalänk
Medlem

wei,

Alltså, varför har ingen sagt att detta funkar bra på länge? Jag testade det precis när det kom ungefär, och då var det hackigt och allmänt segt. Men nu flyter det ju fint!

Visa signatur

I distrust governments because I’ve studied history. Ask Joe this question: who does most of the killing? Who does most of the theft? Even the body-count of the worst criminals and terrorists pales in comparison to the death toll the average government inflicts on its own people. And it is not criminals who tax away 5/12ths of my income. - Eric S Raymond
http://www.css3.se

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Ibis
Äh, ATi fungerar helt dugligt i Linux, visst inte så bra som nVidia, men det fungerar. Jag kör XGL+Compiz helt utan några problem med mitt 9600 Pro.

hehe, fick gång på ati drivers i ubuntu dapper nu, men då hittar ja istället inte xgl å compiz med apt-get :D,

kul att när de ena funkar funkar inte de andra :D,

någon som vet ifall man kan köra samma "guide" som den här är till Ubuntu dapper?:D