Skip to content

Fusion settings

mercoledì 18 luglio , 2007
by

Fusion offre una moltitudine di effetti e impostarli tutti per tutte le finestre che vogliamo, secondo gli eventi che vogliamo, non è proprio così immediato.

fusion_settings.png

Mi ricorda il Beryl dei primi tempi, un sacco di effetti, ma il software configuratore era un tantino incasinato…

Telperion (ancora un’ovazione ;P ) in questo articolo (tratto a suo valta da Jupiter) fa un po’ di chiarezza sui comandi da usare e come usarli.

Lo riporto interamente per maggior comodità di lettura🙂

In opacita, regole finestre, animazioni, widget e altri plugin
è spesso necessario inserire tipo o classe o altro identificatore
delle finestre che vogliamo includere o escludere delle nostre operazioni,
il tutto condito da una sintassi logica (booleana)
per operare selezioni mirate.

Facciamo un pò di chiarezza e qualche esempio.

I nomi sono sensibili al maiuscolo quindi:

no Menu ma menu

Se volete invertire la selezione mettete un ! (punto esclamativo prima) es.

!type=desktop

selezionerà tutte le finestre che non hanno come type desktop.

Potete concatenare diverse espressioni con gli operatori logici

| = OR
& = AND

Cosi potete scrivere:

type=desktop | type=dock

che significa desktop oppure (OR) dock

Potete raggruppare espressioni usando le parentesi.

Le finestre si possono individuare tramite 4 attributi principali:

type – type della finestra

state – individua la finestra in base allo stato,
stato che puo essere: modal, sticky, maxvert, maxhorz, shaded, skiptaskbar, skippager, hidden, fullscreen, above, below, demandsattention

xid – seleziona l’ id della finestra (poco utile perchè l’id esiste solo dopo la creazione della medesima)

override_redirect – mettelo a 1 per individuare override_redirect windows. Puo essere usato per selezionare i menù di firefox poichè corrispondono a

(type=Normal & override_redirect=1)

Il plugin regex se attivato fornisce ulteriori attributi di riconoscimento:

title – il titolo della finestra
role – il ruolo della finestra
class – la classe della finestra
name – il nome della finestra

Potete trovare gli attributi “name, class, role, title, eccetera” di una finestra
digitando in un terminale i comandi illustrati sotto
e poi cliccando sull’oggetto che state cercando di definire.

type (window type)
xprop | grep WINDOW_TYPE | cut -d _ -f 10

class (window class)
xprop | grep WM_CLASS | cut -d \” -f 4

name (class name)
xprop | grep WM_CLASS | cut -d \” -f 2

title (window title)
xprop | grep “WM_NAME(STRING)” | cut -d \” -f 2

program (owning program)
ps -o comm= -p $(xprop | grep “_NET_WM_PID(CARDINAL)” | sed ‘s/.*= //g’)

role (class role)
xprop | grep “WM_WINDOW_ROLE(STRING)” | cut -d \” -f 2

Con questi valori potete creare espressioni.

Esempi:

(Toolbar | Menu | Utility | Dialog | Normal | Unknown) & !title=.*Firefox

(Toolbar | Menu | Utility | Dialog | Normal | Unknown) & !class=Firefox-bin

Esempio terra-terra del sottoscritto:

tutte le finestre hanno in chiusura l’effetto Animazioni close animation Glide1.
La stringa nel configuratore è:

Glide1 0,2000 (type=Normal)

type ho solo normal perchè ho disattivato l’effetto su qualsiasi altro tipo di finestre.
Ora l’obbiettivo è fare in modo che Firefox si chiuda con l’effetto Brucia.

Apriamo firefox.

da terminale
xprop | grep WM_CLASS | cut -d \” -f 4
clicchiamo la fiestra di Firefox e otteniamo
Firefox-bin che è la class poi
xprop | grep WM_CLASS | cut -d \” -f 2
ci darà come risultato
gecko che è il name.

Il tipo di finestra è
xprop | grep WINDOW_TYPE | cut -d _ -f 10
NORMAL

Ora abbiamo tutto quel che ci serve.
Intanto
Glide1 0,2000 (type=Normal)
dobbiamo escludere le finestre Firefox da Glide1
le finestre di firefox le riconosciamo se sono Firefox-bin e (&) geko cioè in booleano:
(class=Firefox-bin & name=gecko)
quindi
Glide1 0,2000 (type=Normal) & !(class=Firefox-bin & name=gecko)
farà in modo che Glide1 sarà applicato alle finestre normali e (&) diverse (!) da firefox.

Ora aggiungiamo una animazione Brucia durata 0,5
ed in finestre corrispondenti:
(type=Normal) & (class=Firefox-bin & name=gecko)
tipo = normale e (&) firefox
Brucia 0,500 (type=Normal) & (class=Firefox-bin & name=gecko)
E vedrete che le finestre di firefox, e solo quelle in chiusura
andranno a fuoco.

Ovviamente la potenzialità del sistema è enorme.
Questo è solo un banale esempio per fornirvi lo spunto,
a voi le miriadi di applicazioni pratiche.

Altro esempio: plugin trailfocus e Gimp.

Il plugin trailfocus rende un po trasparenti le finestre non in focus,
quando riacquistano il focus tornano opache, questo migliora la concetrazione.

Il problema che Gimp ha 3 finestre e solitamente cliccando l’immagine
questa ritorna opaca, mentre le due finestre dei tool rimangono trasparenti.

Il tipo di finestre default trattate da Trailfocus è:

(type=toolbar | type=utility | type=dialog | type=normal) & !(state=skiptaskbar | state=skippager)

tradotto: finestre toolbar oppure (|) utility o dialog o normali e (&) non (!) in stato skiptaskbar o skippager

Ora individuato con gli strumenti a disposizione
che le 2 finestre di Gimp hanno

role=gimp-toolbox

e

role=gimp-dock

basta aggiunger anche queste 2 opzioni nelle oppure (|) di non (!)

Tradotto in booleano:

(type=toolbar | type=utility | type=dialog | type=normal) & !(state=skiptaskbar | state=skippager | role=gimp-toolbox | role=gimp-dock)

Ora le 2 finestre tool di gimp non verranno più “trasparentizzate” da trailfocus.

Altri esempi del post originale (in inglese) riferiti al plugin window rules:

Here’s a few use cases that you can try out today if you just pull the
latest bits from the master branch.

1. Simple window matching for a specific action. I’ve added a
focus_prevention_match option which allow you to specify which windows
focus prevention should apply to. E.g. when having the regex plugin
loaded you can set the option to something like this:

“(!class=Gecko | title=*Pref*) & !class=.*terminal.*”

2. Keep a consistent state which depend on some window properties. The
blur plugin now include an option which allow you to specify for which
windows destination blur should be automatically enabled when no window
property is set. If you set that option to:

“title=.*terminal.*”

the plugin will need to know when the title changes to something that
might make that match no longer true or the other way around. The
matchWindowPropertyChanged function exists for that purpose and by
wrapping that function you’ll know when some window property that might
affect the window matching you’re doing have changed and you can then
re-valuate the matching for that window.

3. Can be use to dynamically specific which windows an action should
apply to. I’ve updated the initiate actions in the scale plugin so it’s
possible to provide a match option as argument to any one of them. This
means that an external source can initiate scale mode for a specific set
of windows. E.g. by using the dbus plugin you can do this

dbus-send –type=method_call –dest=org.freedesktop.compiz /org/freedesktop/compiz/scale/allscreens/initiate org.freedesktop.compiz.activate string:’root’ int32:`xwininfo -root | grep id: | awk ‘{ print $4 }’` string:’match’ string:’class=Gnome-terminal’

to initiate scale mode only for gnome-terminal windows. You can use
something like
“string:’xid=0xc1cd78 | xid=0xc200a0 | xid=0xc2100b'”
instead if you want to specify the exact windows.”

Thanks to Jupiter for that

Altri articoli su Fusion

Attenzione, come segnalato da Telperion il mio quote ha trasformato tutti gli apici e doppi apici.
Leggere il primo commento per utilizzare correttamente il mio quote!!!

2 commenti leave one →
  1. mercoledì 18 luglio , 2007 11:14 pm

    Occhio solo che nel copia incolla, causa wordpress
    tutti gli apici e i doppi apici sono diventati tipografici,
    e quindi i comandi non funzioneranno.
    Esempio

    xprop | grep WM_CLASS | cut -d \” -f 4

    in realtà è

    xprop | grep WM_CLASS | cut -d \" -f 4

    sostituite ogni “” e ‘ con
    " e '

  2. mercoledì 18 luglio , 2007 11:20 pm

    per fortuna telperion veglia su di me, grazie per la correzione !😉

Lascia un commento

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: