Cómo conseguir un escritorio en 3d (I)

Cómo conseguir un escritorio en 3d (I)

Por Martín Cid

Lo que vamos a hacer es adaptar un entorno de escritorio para poder mover ventanas mediante open gl. Esto quiere decir que podremos darle la vuelta y tener sensación de tridimensionalidad en nuestro escritorio.

He creado también un proyecto para aportaciones o ideas y en ese espacio se irán desarrollando aplicaciones varias para escritorio KDE en 3d. La dirección es http:///www.icarositemas/kde-3d.php

El tutorial se dividirá en varias partes:
I.- Instalación del sistema base (podremos mover las ventanas).
II.- Optimización: parámetros recomendados y personalización: Configurar el ratón para efectos varios y demás, hacer correr el sistema más rápido, atajos de teclado.
III.- Incluir otras aplicaciones 3d para dejar nuestro sistema más bonito (nos basaremos en aplicaciones 3d sobre el mismo motor).

Necesitaremos varias cosas:
-Tarjeta gráfica decente (64 megas de memoria, tipo ATI o NVIDIA)
-Entorno gráfico KDE o GNOME instalado
-Xorg o Xfree-86 (para futuras versiones se recomienda xorg)

Vamos a comenzar.
Lo primero de todo, decir que se basa en metisse, un \"entorno de escritorio\" que usa nucleo para mover los objetos. Lo que haremos a grandes rasgos es aplicar metisse a nuestro entorno de escritorio kde, de tal manera que podamos realizar las funciones de metisse sobre KDE o GNOME.

Paso I: Instalando x.org

Este paso no es obligatorio, pero sí recomendable. ¿Por qué? Porque adelantaremos trabajo. Debian va a adoptar xorg sustituyendo a Xfree. Además, las nuevas extensiones de xorg son usadas por metisse para realizar las tranparencias mediante la extensión composite que viene con las nuevas xorg. Además, xorg incorpora drivers mejorados para aceleración (Xfree no) por lo que mejora el rendimiento.

Tenemos, como siempre, un camino fácil y uno difícil. El difícil (compilar nosotros mismos a partir de las fuentes) es el mejor, porque se aprende y queda mejor y adaptado para nuestro ordenador. También es cierto que nos llevará más tiempo y requiere investigación por si algo sale mal. El otro sistema sería instalar xorg a partir de los paquetes que ofrece Ubuntu u otro.

Camino fácil (el que, como buen español, he elegido): Elegir un repositorio y usar sus paquetes.

Nos vamos a... http://helion.xcyb.org/debian-xcyborg/ (le echamos un vistazo, por si algo nos parece incompatible o algo así). Bien, éste es un repositorio donde podemos encontrar paquetes para debian sid de xorg. Las líneas para el sources.list son éstas.

# binary packages for i386 and amd64 architectures
deb http://helion.xcyb.org/debian-xcyborg unstable main

# sources
deb-src http://helion.xcyb.org/debian-xcyborg unstable main

Puede que de problemas de dependecias y demás. Solución, uso el sistema bautizado \"método Homer Jay para resolver incompatibilidades con paquetes apt-get\" (y si se quiere hacer bien, modificar el /etc/apt/preferences y así nos queda bien, pero el método \"Homer Jay\" funciona). Hacer como root: mv /etc/apt/sources.list /etc/apt/sources.list1. Luego abrir sources.list (está vació, lo hemos movido a sources.list1) y en ese archivo vacío metemos los nuevos repositorios. Hacemos apt-get update y ya está, nos lo instala.

Tras hacer apt-get update, simplemente instalamos xserver-xorg con apt.get (si es necesario apt-cache search y tal). Instalamos también xorg-driver-synaptic, xcompmgr y transset (éstos dos últimos se usarán para las transparencias).

Ahora no se os olvide poner los sources.list como estaban (cp /etc/apt/sources.list1 /etc/apt/sources.list y apt-get update).

¿Lo tenemos ya? Bien, bien, ahora toca ganarse la comida: Vamos a configurarlo: dpkg-reconfigure xserver-xorg.
Bien, saldrán bastantes menús, le damos a autodetectar y todo eso... Nos pedirá la memoria de la tarjeta gráfica, configuración de teclado y demás. Viene en inglés, pero no da excesivos problemas y si todo está correcto en la anterior Xfree será más o menos igual. Siempre podemos abrir otra ventanita con el archivo que teníamos de Xfree (/etc/X11/XF86Config-4) por si no conocemos algún parámetro como la variante de teclado o similar.

Hay otro repositorio por si el citado no funciona, que son los de ubuntu, que al menos estarán disponibles (aunque en este momento son paquetes de una versión inferior, los he probado y no dan problemas, al menos que haya podido notar).

Bien, ya tenemos configurado xorg, ahora desinstalamos Xfree (ya no lo necesitamos). Hacerlo con apt-get opción --purge y así nos libramos de toda esa \"basurilla\" que siempre queda por ahí.

Vale, vale... Esto nos ha creado un archivo llamado xorg.conf en /etc/X11/. Bien, ahora vamos a habilitar transparencias. Esto no es necesario, pero ya que nos hemos tomado la molestia de hacer todo esto... vamos a hacerlo bien, que son sólo cinco minutos (esta frase vale para casi todo en la vida, sexo opuesto incluido). Vamos a xorg.conf y lo editamos (como root, desde luego).
Añadimos la siguiente sección (al final, por ejemplo):
Section \"Extensions\"
Option \"Composite\" \"Enable\"
Option \"RENDER\" \"Enable\"
EndSection

Y ahora, dentro de la sección device donde definimos los \"drivers\" que debe usar nuestro xorg (en mi caso nvidia) añadimos estas dos líneas:
Option \"RenderAccel\" \"true\"
Option \"AllowGLXWithComposite\" \"True\"

Esto sirve para usar la aceleración (renderizado) desde la tarjeta, y que así no nos ocupe tanto procesador (aunque en este primer tutorial no vamos a tocar temas de aceleración de nuestro nuevo sistema). Esta última línea sólo es necesaria en tarjetas nvidia (si no ponemos esto se nos queda \"colgado\").

NOTA: Tras ésto, es posible que tengamos que reinstalar los drivers de nuestra tarjeta gráfica (pero como somos unos fieras lo hacemos sin problema alguno). Yo tengo una NVIDIA, y a partir del script descargado desde la página de NVIDIA se hace sin problemas (se necesita un enlace simbólico a las cabeceras y tal... pero supongo que esto ya lo sabéis).

Camino difícil
Si se elige compilar a partir de las fuentes. Nos vamos a x.org y nada, ya sabéis, luego a \"latest release\". Hay bastantes artículos (ya sabéis, usad google). Bueno, si elegís este camino, creo que sabéis bastante más que yo, así que no diré nada... Hay un artículo bastante bueno sobre instalación de xorg no intrusiva (la verdad es que suena profesional del todo) en http:///blogs.vislab.usyd.edu.au y allí ir al blog de un takl steve y darle a buscar, está chulo (aunque, claro, en inglés).
Desde luego, este camino es el mejor, porque las cosas quedan mejor si las compila uno mismo a mano y no se usan paquetes (o al menos esa es mi opinión).

Paso II: Instalación de núcleo
Tranquilos, que lo que queda no es tan pesado... Nucleo es usado para mover gráficos en 3d y tal... es la base de metisse (escritorio en 3d)
Instalamos wm-icons (apt-get install wm-icons)
Nos bajamos la última versión de nucleo:
http://insitu.lri.fr/~chapuis/software/metisse/nucleo-0.1-20041216.tar.b...
Descomprimimos en la carpeta que queramos, nos vamos a ella y... algo que nunca antes alguien que haya manejado linux ha hecho:
./configure
make
(como root): make install

¡Si es que somos unos pioneros! Con esto y un bizcocho... al paso tres que lo tenemos instalado (como siempre pasa con este método... puede ser que nos falte alguna librería, es cuestión de buscarse un poco la vida, pero con apt lo solucionaremos sin problema).

Paso III: Instalación de metisse

Igual de fácil que antes. Bajamos la última versión de metisse:
http://insitu.lri.fr/~chapuis/software/metisse/metisse-0.3.5.tar.bz2

Descomprimimos... y luego nos metemos en el directorio donde lo hayamos puesto (no repetiré los chistes malos, tranquilidad). Hacer:
./configure
make
(como root): make install

¡Ya está! Nos quedan dos patadas y tendremos kde en tres dimensiones.

NOTA: Se puede habilitar glx (cuando hagamos el ./configure) con --enable-glx o --enable-glx-x86, pero no funciona demasiado bien y en la propia página de metisse no nos lo recomiendan precisamente, pero probadla de todas maneras, luego siempre podréis hacer make uninstall, make clean y volver a compilarlo sin esas opiones.

Paso IV: ¡Arrancamos!

Lo que nos queda, si se han cumplido los pasos anteriores, es bien sencillo. Para arrancar metisse (probar), lo haremos sobre una sesión previa.
Lo primero que tenemos que hacer es iniciar el servidor Xwnc
Xwnc -depth 24 -ac -geometry 1024x768 :1 &
Lo que estamos haciendo:
-depht 24 - significa que le ponemos 24 colores (si nuestra tarjeta gráfica no tira a 24 colores... malo, malo, pero es posible tirar con 16, aunque este sistema chupa muchos recursos)
-geometry 1024x768 :1 -Significa que el servidor se inicia a resolución 1024x768 en el display 1
-El símbolo & del final significa que corremos la aplicación en segundo plano

Una vez arrancado correctamente el Xwnc... Arrancamos metisse con:
metisse-start-fvwm -- -np &

Nos aparecerá sobre nuestro escritorio una sesión de metisse, con la que podremos mover objetos y demás. Las ventanitas tienen ahora efectos 3d...

Como veremos (si nos fijamos, claro está) nos ha creado una carpeta en nuestro directorio personal llamada .fvwm-metisse (está oculta, deberíamos darle a ver archivos ocultos o algo parecido, dependiendo del escritorio usado)... Esta carpeta la vamos a usar el capítulo II del tutorial para modificar los parámetros y crear funciones nuevas para realizar nuestros efectos 3d basándonos en metisse. No olvidemos esto.

Bien, pues poco más nos queda... Cerramos la ventana de metisse y matamos el proceso Xwnc (killall Xwnc)... Nos bajamos ahora un archivo comprimido con mis preferencias para metisse (el que por ahora uso, lo modificaremos personalmente en el capítulo II):
http:///www.icarosistemas.com/metisse_personalizado.tar.gz

Bien, ya lo tenemos... Ahora borramos nuestro recién creado directorio .fvwm-metisse y lo sustituimos por el que acabamos de bajar, que contiene un directorio oculto con el mismo nombre (que lo tengo un poco más personalizado, para nuestros crueles propósitos nos sirve).
La principal modificación realizada en el archivo son los colores, que se ha empleado una especie de gris y que ahora, cuando inciamos metisse, nos inicia automáticamente kde. Esta modificación se hace en el archivo .fvwm-metisse/extra y la línea es...
/usr/bin/./startkde

Si, por ejemplo, en vez de iniciar kde por defecto queremos inciar gnome, modificaremos esta línea para iniciar gnome (/usr/bin/./startgonme) y nos inciará por defecto una sesión con gnome (cosa que no recomiendo porque por mis pruebas, metisse no se lleva bien con aplicaciones gtk-1, según parece).

Pues casi lo tenemos, salimos de la sesión e iniciamos la máquina desde la consola. Diferentes modos: yo como uso kdm, lo hago dándole \"inciar sesión desde consola\", inicio como usuario normal, comando \"su\"... killall kdm. Luego \"exit\" para volver a usuario normal y ahora... Nos quedan tres instrucciones para poder ver nuestro sistema en 3d de manera un tanto deficitaria:
xinit
Ahora iniciamos una sesión en el servidor X. Bien, Nos aparece tan solo una consola, sólo eso y nada más (que dijo el cuervo). En esa consola escribimos...

Xwnc -depth 24 -ac -geometry 1024x768 :1 &

Le damos a enter y...

metisse-start-fvwm -- -np &

Ahora nos incia una versión kde y podremos mover las ventanas con los botones de arriba (por ahora bastante feos, pero útiles). Le damos la vuelta y hacemos el chorra un poco.
Las funciones las explicaremos en el capítulo II. A modo de adelanto...
-Si pulsamos control + Mays + O (tecla \"o\") nos aparece un punto y podremos voltear la vetana de manera curiosa (al menos es divertido).
-Control + Mays + \"s\" o \"z\": Sirve para aplicar un zoom sobre la pantalla que tenga el raton encima (una chorrada, pero más tarde la configuraremos para nuestra barra de tareas en 3d).

Con esto se puede probar, en el capítulo II crearemos una barra de tareas en 3d bastante curiosa (la estoy ultimando mientras escribo estas líneas) y mostraremos como crear efectos a conveniencia.
El sistema es algo lento aún. Dependemos de metisse, y tengamos en cuenta que es un software en desarrollo, en futuras versiones todo correrá mejor y además explicaremos como hacer que todo esto vaya un poco más rápido.
También crearemos una entrada para nuestro adminstrador de sesiones (kdm, gdm, xdm) para poder iniciar sesión kde normal o kde 3d (o gnome).

Espero que sea de vuestro agrado, y cualquier comentario, sugerencia o aportación será bien recibida. Un saludo a todos
www.icarosistemas.com/kde3d.php

Enviado por pionner el 20 Junio, 2005 - 10:44.

Me encantaria ver algunos screenshots :-D

Enviado por caligula el 20 Junio, 2005 - 11:30.

Respuesta a Me encantaria ver algunos screenshots

Estoy en ello, pero no consigo caputar el ***** canal alpha de las narices, y el otro día encontré la forma, jeje, pero se me olvidó guardar la información.
He hecho una captura, pero a la vieja usanza (tipo cuando teníamos spectrum, jeje, en plan cámara apunta a pantalla, no te muevas y zas):

http://www.icarosistemas.com/esdebian.jpg

En breve pondré más

Enviado por khepri el 21 Junio, 2005 - 15:01.

Hola estoy siguiendotu pasos pero cuando le doy a ./configure me sale el siguiente error:

checking for GL/gl.h... yes
checking for glFlush in -lGL... no
configure: error: GL header found, but fail to found libGL (use LDFLAGS?)

que libreria deo instalar para solucionar este problema.. gracias...

Enviado por caligula el 21 Junio, 2005 - 18:16.

Respuesta a Hola estoy siguiendotu pasos pero

En tu caso, probaría con libglib2.0-dev y libglib2.0-data, pero lo veo cuestion de buscar. Te he buscado la solución pero no he visto gran cosa. Aquí tienes un hilo que le pasa lo mismo que a ti (pero antes mira lo de las librerías de desarrollo que te he indicado, si me pasase eso sería lo primero que probaría).

Enviado por Beto el 21 Junio, 2005 - 20:00.

Tiene mu buena pinta, solo me joroba le tema de las Xorg, que me da mucha pereza cambiar las X y tal, por posibles problemas de incompatibilidades y esop.
Algún día lo probaré, que parece que mola :D
Solo quiero comentar una cosilla que es un poquito brutaaa, dijistes que desde el KDM te vas a la consola, y pones "killall kdm". Sobre esop, para apagar los servicios hay que usar '/etc/init.d/kdm stop' Para arrancarlos igual pero con Start, no es recomendable matarlos, por si dejan cosas pendientes :)
Talueee

Enviado por bloguetaire el 4 Julio, 2005 - 13:30.

Por este fenomenal artículo. Apetece probarlo. No dudo que cuando esté disponible para el gran público (ya empaquetado/listo para usar) causará furor.

Dejo un enlace a metisse ya que lo he echao en falta.

Sobre el proyecto que has emprendido, que por cierto, creo que erraste la dirección. Digo será porque ahora mismo me sale una página en blanco.

Ánimo y suerte con el proyecto.

Enviado por teus79 el 15 Julio, 2005 - 16:25.

Falta corregir el escrito. La dirección URL http:///www.icarositemas/kde-3d.php no existe. Creo que debería de ser ...www.icarosistemas.com...

---
Teófilo Oviedo
Technnical Support
Integra S.R.L.
Telef: +595 (21) 424473

Enviado por pupamonk el 14 Octubre, 2005 - 14:45.

Me bajé los paquetes de
#Metisse
deb http://people.debian.org/~smimram/debian unstable main

y siempre tengo el error

#metisse-start-fvwm -wd :1
Start fvwmi with args -d :0.0 -w wnc://127.0.0.1:1?password=no for FvwmAmetista
[FVWM][main]: <<ERROR>> can't open display 127.0.0.1:1

!!!!!!AYUDA!!!!!!

Enviado por pupamonk el 17 Octubre, 2005 - 14:19.

Respuesta a Me bajé los paquetes de

Me autorrespondo:
!Tenía configurada mal la red!
Bien el eth0, pero no el dispositivo en bucle lo, que no aparecía al hacer ifconfig.
Se arregla con ifdown lo; ifup lo.

Celedonio Monje