Translate

07 luglio 2008

WindowMaker: True Transparency

Anche WindowMaker può essere agghindato come i suoi cugini. Trasparenze e fade effects fanno buona mostra assieme alla Dock, e con un può di buon senso, ne guadagna anche l'usabilità.

Di cosa abbiamo bisogno?

Estensione Composite di X.Org attiva:
michele@lounge:~$ cat /etc/X11/xorg.conf | grep -i composite
Option "Composite" "Enable"

Composite manager:
michele@lounge:~$ whereis xcompmgr
xcompmgr: /usr/bin/xcompmgr /usr/X11R6/bin/xcompmgr /usr/bin/X11/xcompmgr /usr/X11/bin/xcompmgr /usr/man/man1/xcompmgr.1.gz /usr/man/man1/xcompmgr.1 /usr/share/man/man1/xcompmgr.1.gz /usr/share/man/man1/xcompmgr.1 /usr/X11/man/man1/xcompmgr.1.gz /usr/X11/man/man1/xcompmgr.1

Transd - transparency daemon:
http://transd.berlios.de/

Do it for real!

Per prima cosa attiviamo il composite manager all'avvio di WMaker, e per fare ciò aggiungiamo una linea in ~/GNUstep/Library/WindowMaker/autostart, come questa:
xcompmgr -f & # Attiva il composite manager con effetti fade di base

Transd si compone di due elementi, un pseudo-demone (che non crea file .pid e muore spesso, ma ne parliamo poi) e di un file di configurazione: /etc/transd/transd.conf. In quest'ultimo possiamo modificare le proprietà di trasparenza delle finestre in focus e out focus. Una volta installato date un'occhiata al file di configurazione d'esempio.
Transd non è più mantenuto da qualche anno, e si porta ancora dietro problemi di giovinezza quali crash ad ogni chiusura di finestra su cui agisce, senza possibilità di riprendersi se non per via manuale. Non programmo in C, e di guardare il codice non ne ho voglia (se volete farlo voi accomodatevi pure e fatemelo sapere :) quindi ho creato uno script bash che fa da workaround ai continui crash. Eccovelo di seguito:

#!/bin/sh
PID=`pgrep -o transd-nocrash` # The old process
PID1=`pgrep -n transd-nocrash` # The new one
if [ "$PID" = "$PID1" ]; then echo "Ok"; # Check if it's the same process
else kill $PID; # else kill the old one
fi
transd # Run transd daemon
wait $transd # Wait for its crash
/usr/bin/transd-nocrash # Loop
Script che non fa altro che richiamare se stesso eliminando il precedente processo per non ingolfare l'output di ps. Le migliorie sono sempre ben accette.

Lo screenshot è d'obbligo e lo corredo delle impostazioni che uso io per i programmi in immagine:

# Xterm rules
ON Enter ( WM_CLASS == XTerm ) SET TO 0.8
ON Leave ( WM_CLASS == XTerm ) SET TO 0.3

# Audacious rules
ON Enter ( WM_CLASS == Audacious ) SET TO 0.8
ON Leave ( WM_CLASS == Audacious ) SET TO 0.3

(Per recuperare il valore di WM_CLASS usate il programma xprop)