18 febrero 2007

Cómo instalar Beryl con XGL en Ubuntu Edgy (6.10)

En la web del proyecto Beryl no está traducido al 100% el Cómo de XGL, así que hago la traducción aquí con ciertas modificaciones, tras haberlo instalado en este ordenador. Instalar Xgl y Beryl en Ubuntu Edgy Eft es fácil, pero hacer que trabaje todo en condiciones no es tan fácil, así que vamos a ello.


Primero de todo, el servidor XGL requiere aceleración 3D. En algunos casos podría estar instalado sin molestarse, pero creo que eso no ocurre demasiadas veces. La comprobación típica es escribir en una consola lo siguiente:
glxinfo | grep direct
Si contesta
direct rendering: Yes
es que hay aceleración, así que no hay que preocuparse por la configuración de la tarjeta. Si pone que NO, hay que instalar el controlador adecuado. En la web de Ubuntu pueden encontrarse las instrucciones. También puede usarse automatix, más recomendable, ya que lo hace todo solo.

Antes de continuar, quiero aclarar algo importante. Utilizar XGL es necesario sólo para tarjetas ATI (y otras menos conocidas) y sólo para el caso en que no funcione correctamente aiglx con el controlador libre o no podamos usarlo porque no nos da ciertas características (como la salida DVI). Mira aquí para las instrucciones correspondientes a aiglx, que serán las que hay que usar para Intel y Nvidia. La instalación de Beryl con XGL comparada con aiglx es difícil, además de las desventajas de tener un segundo servidor gráfico en marcha, así que siempre que sea posible, mejor usar aiglx y no XGL.

Vamos al meollo del asunto. Añadimos los repositorios de beryl. Para ello podemos usar Synaptic y elegir Configuración>Repositorios, u otros gestores, y lo más rápido, por consola:
sudo gedit /etc/apt/sources.list
y añadimos al final del todo:
deb http://ubuntu.beryl-project.org/ edgy main

Pueden usarse también las réplicas siguientes:
deb http://www.beerorkid.com/compiz edgy main-edgy 
deb http://media.blutkind.org/xgl edgy main
deb http://beryl.xglusers.de/ edgy main
que pueden ir más rápidas que el principal, aunque puede darse el caso de que no estén sincronizados y les falten algunos paquetes.

Estos repositorios están firmados con gpg para verificar su autenticidad. Para añadir las claves gpg, escribimos:
wget http://ubuntu.beryl-project.org/root@lupine.me.uk.gpg -O- | sudo apt-key add -
wget http://download.tuxfamily.org/3v1deb/DD800CD9.gpg -O- | sudo apt-key add -
wget http://www.beerorkid.com/compiz/quinn.key.asc -O - | sudo apt-key add -
Todos en el caso en que hayamos añadido las réplicas. Si sólo ponemos el principal, con la primera línea es suficiente.

Ahora actualizamos la información de los repositorios.
sudo apt-get update
Instalamos XGL:
sudo apt-get install xserver-xgl

Ahora instalamos los paquetes beryl y emerald-themes, siendo lo segundo los temas de las ventanas. Beryl es un metapaquete que instalará las dependencias requeridas como beryl-core, beryl-plugins, beryl-manager y beryl-settings, así como el decorador emerald, pero no los temas.
sudo apt-get install beryl emerald-themes
Si quieres usar el decorador de ventanas de KDE, añade a la línea anterior "aquamarine"

Esto era lo fácil. Ahora vamos a lo menos fácil.
Hay dos formas de validarse en una sesión XGL e iniciar el gestor de composición Beryl.

La primera es añadir una sesión XGL a gdm (o kdm). Es útil para la mayoría de casos dado que permite intercambiar entre una sesión con XGL y otra normal con solo cerrar la sesión y volver a entrar. Uno de los casos que hacen necesario esto es que algunas aplicaciones puede ser que no funcionen correctamente con XGL. Esto ocurre por ejemplo con la televisión digital, que funciona terriblemente lenta. La reproducción de vídeos, aunque funciona perfectamente, gasta más procesador, así que en algunos equipos con poca memoria (XGL gasta) quizá vaya peor. También hay que tener en cuenta que Beryl no se puede considerar totalmente estable, así que esto siempre viene bien.

Vamos a añadir la sesión.
Crearemos un guión de inicio y luego una entrada en la pantalla de inicio que llame al guión. Lo primero:
sudo gedit /usr/local/bin/startxgl.sh

En una nvidia, si es que no quieres usar aiglx que es lo más fácil y recomendado, pondríamos:
 #!/bin/sh
/usr/bin/Xgl :1 -fullscreen -ac -br -accel xv:fbo -accel glx:pbuffer &
sleep 4
export DISPLAY=:1
exec gnome-session

Esto para Gnome. Para KDE cambiamos la última linea por:
exec startkde

Para ATI, que es el caso realmente interesante con XGL:
#!/bin/sh
Xgl -fullscreen :1 -ac -br -accel glx:pbuffer -accel xv:pbuffer &
sleep 4
export DISPLAY=:1
exec gnome-session

para Gnome. Para KDE cambiamos la última linea por:
exec startkde

y para xcfe:
exec xfce4-session

Se dice que iniciándolo así se puede perder en algunos casos (a mi no me ha pasado) la configuración de las tipografías y el puntero del ratón, puesto que no se cargan junto con Xgl. La forma correcta en ese caso sería exec /etc/X11/Xsession en lugar de gnome-session o startkde. O sea, que se tiene que poner así: exec /etc/X11/Xsession startkde

Un tema extremadamente importante en este punto. Todos los que hemos usado XGL hemos sufrido el estúpido detalle de perder los botones de apagar el sistema y reiniciar, teniendo que cerrar la sesión para luego poder apagar o reiniciar en la pantalla de inicio, por culpa de tener un servidor encima de otro. Vamos a ver como se soluciona este problema, para tener la ventana de cierre totalmente normal. Modificaríamos lo de antes de esta manera:
#!/bin/sh
Xgl -fullscreen :1 -ac -br -accel glx:pbuffer -accel xv:pbuffer &
sleep 4
export DISPLAY=:1
cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)"
xauth -i add :1 . "$cookie"
exec gnome-session

El tema de Gnome no se verá en todos los casos correctamente, mostrando un aspecto bastante feo por mucho beryl que haya. O sea, que no está cargando el tema de Gnome. A mi me ha pasado. En lugar de lo de antes escribiríamos:
#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer &
DISPLAY=:1
exec dbus-launch --exit-with-session gnome-session

que requiere instalar beryl-dbus teóricamente, aunque según creo está ya desfasado, pues la versión no coincide y se queja de un archivo ya existente. Vamos, que dbus ya se incluye en beryl. Y en todo caso, a mi no me ha resuelto nada. Cuestión de probar. Si no os funciona hay otra manera que a mi sí que me funciona.
Escribimos en una consola:
gnome-settings-daemon &

Si esto nos lo arregla, añadimos gnome-settings-daemon en sesiones, de la misma forma que comentaré después para añadir beryl-manager, aunque hay que hacerlo después de este.

Más posibles problemas, aunque este es raro. El servidor X calcula correctamente los puntos por pulgada, pero puede ocurrir que la tarjeta gráfica informe mal sobre la medida del monitor. Si las tipografías se muestran demasiado pequeñas por ello, habría que hacer el truquito de añadir el parámetro -dpi 96 a la llamada a Xgl del archivo que editábamos antes:
Xgl :1 -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer -dpi 96 &

aunque la forma limpia debería ser editar el archivo de configuración del servidor e incluir en la seccion Monitor la linea
DisplaySize  344        222
siendo esos valores los correspondientes a tu monitor, en milímetros.

Ahora hacemos el guión ejecutable para que pueda ser utilizable, o sea, que pueda ser llamado desde la entrada del inicio de sesión. Escribimos:
sudo chmod a+x /usr/local/bin/startxgl.sh

Para crear la entrada de la ventana de inicio, hay que crear el archivo /etc/X11/sessions/xgl.desktop
sudo mkdir -p /etc/X11/sessions
sudo gedit /etc/X11/sessions/xgl.desktop

y en el escribiremos lo siguiente
[Desktop Entry]
Encoding=UTF-8
Name=Xgl
Exec=/usr/local/bin/startxgl.sh
Icon=
Type=Application

El nombre Xgl será el que aparecerá en la lista de sesiones. Puedes poner cualquier otro que te guste en su lugar, tal como gnome-XGL o lo que quieras.
Para kdm quizá tenga que ser en /usr/share/xsessions

Ya está todo. Ahora al arrancar el sistema, podrás elegir en la pantalla de inicio de GDM o KDM la sesión Xgl (o el nombre que le hayas puesto). Al entrar, Xgl se ejecutará por encima del servidor X estándar, o sea, en DISPLAY: 1, y cargará el escritorio. Ahora podrás ejecutar Beryl, como se comenta después. Si entras con una sesión normal, será todo como siempre, sin Beryl.

Ahora vamos al caso en que cambiaremos la sesión de inicio normal. Es mejor hacerlo como se ha explicado antes, con dos sesiones en lugar de esto, pero si quieres hacerlo por alguna razón, así se haría:
sudo gedit /etc/gdm/gdm.conf-custom

Al final del todo añadimos
0=Xgl
[server-Xgl]
name=Xgl server
command=/usr/bin/Xgl :0 -fullscreen -ac -accel glx:pbuffer -accel xv:fbo
flexible=true

Al reiniciar la sesión gráfica, el servidor Xgl estará funcionando.

Vamos ya a lo que interesa: ejecutar Beryl. Para iniciar Beryl, simplemente hay que teclear "beryl", aunque es más cómodo usar el gestor en su lugar. Por ello, mejor teclear en una consola:
beryl-manager

Si todo va bien, (en la consola irá mostrando algunos datos) mostrará la pantalla de entrada, un logo ondulante, y los bordes de las ventanas cambiarán a un tema inicial de Emerald. También podremos notar los demás cambios, como el tambaleo al mover las ventanas, el cubo al cambiar de escritorio, y todo lo demás. Hay que destacar la aparición de un icono nuevo en la bandeja del sistema correspondiente al gestor de Beryl, (si es que hemos arrancado beryl con beryl-manager, claro). Con él podemos configurar cualquier cosa pensable de beryl. De todas formas, se añaden nuevas entradas en Aplicaciones.
Si no arranca, quizá haya que ir a las opciones que brinda la gema y seleccionar el gestor de ventanas beryl. Si ni así, hay que fijarse en qué errores nos ha dado la consola...

Ahora que todo ha ido bien, nos falta que arranque beryl cada vez que iniciamos una sesión. Esto antes quedaba hecho de serie, pero bueno.

Vamos a Sistema > Preferencias > Sesiones.
Seleccionamos la pestaña Programas de Inicio.
Pinchamos en el botón Añadir y tecleamos: beryl-manager
Repetimos el paso anterior y añadimos beryl-xgl.

Para añadir beryl al inicio en KDE por consola escribiríamos:
ln -s /usr/bin/beryl-manager ~/.kde/Autostart/beryl-manager

Para iniciar el gestor de beryl sólo cuando se inicia con la sesión Xgl en lugar de siempre, habría que, en lugar de hacer lo anterior, crear un guión extra de la forma siguiente:
sudo gedit /usr/local/bin/start_beryl.sh

Escribimos esto:
#!/bin/bash
#
# Iniciar beryl-manager en gnome-session
#
if (( `ps -A -o comm | grep -c '^Xgl$'` == "1" )); then
DISPLAY=:1 beryl-manager
DISPLAY=:1 beryl-xgl
else echo "${0}: Error: beryl-manager no se ha iniciado. ¿Xgl no está funcionando?"
fi

y guardamos. Lo hacemos ejecutable:
sudo chmod a+x /usr/local/bin/start_beryl.sh

Y ahora si añadimos el guión al inicio de sesión:
Vamos a Sistema>Preferencias>Sesiones
En la pestaña "Programas de Inicio" pulsamos sobre "Añadir" y escribimos /usr/local/bin/start_beryl.sh en la ventana de dialogo que emerge. Pulsamos en cerrar y ya está hecho.
Ahora, si cerramos la sesión y la volvemos a iniciar, el guión mirará si XGL está iniciado y si es así (estamos en la sesión Xgl que creamos), se lanzará beryl-manager, el gestor de beryl. Aunque lo descrito es para Gnome, funciona también para KDE, aunque la forma de añadirlo al inicio es como la descrita en el apartado anterior.

No hay comentarios: