logo linux

Crea tu propio entorno de escritorio

Hoy os traemos un nuevo artículo de Linux Voice (número 18) que explica cómo crear un entorno de escritorio aprovechando parte de la vasta base de software que ya hay disponible. Más allá de los pasos para construir un entorno, descubrirás qué se esconde bajo el capó de cualquier escritorio.


Crea tu propio entorno de escritorio

¿Qué hacer si KDE, Gnome y Xfce no te terminan de agradar? ¡Creas tu propio entorno de escritorio, faltaría más!

¿Qué es lo mejor de Linux? ¿La seguridad, la estabilidad, el rendimiento o la libertad? Hace un gran trabajo en todas esas áreas pero otra características que remarcaríamos sería su modularidad. Como sistema operativo fuertemente influenciado por Unix, GNU/Linux está diseñado para ser fácil de separar (y, si todo va bien, fácil de unir de nuevo). La mayoría de partes del sistema están hechas de componentes más pequeños que se pueden quitar o sustituir, lo cual es una de las razones por la que tenemos tantas distribuciones Linux.

Esta modularidad añade complejidad constantemente. Pero también proporciona confiabilidad ya que los componentes están diseñados para funcionar independientemente y, si uno deja de hacerlo, las otras partes (idealmente) seguirán funcionando. Así que puedes reemplazar Bash por otro shell o cambiar a una biblioteca SSL alternativa o incluso sustituir todo el sistema init (como hemos visto con la migración de la mayoría de distribuciones a Systemd).

Pero, ¿qué pasa con los entornos de escritorio? ¿No son KDE, Gnome y Xfce proyectos monolíticos gigantescos? En realidad no. Están construidos de programas más pequeños y bibliotecas que son altamente dependientes los unos de los otros, pero es posible eliminar por completo ciertos componentes o reemplazarlos con alternativas. Y llevando esto aún más lejos, es posible crear un entorno de escritorio desde cero, haciendo una selección de programas, uniéndolos y haciendo que se ejecuten a la vez.

Crear un entorno de escritorio desde cero resulta una gran experiencia de aprendizaje, por lo que eso es lo que haremos a lo largo de las siguientes páginas. Serás capaz de elegir los componentes que encajen en tu proceso de trabajo y el resultado final será considerablemente más ligero y rápido que los pesos pesados de Gnome y KDE. Además podrás alardear con tus amigos en la siguiente reunión de usuarios de Linux de que no tienes un entorno de escritorio genérico preempaquetado sino que has creado tu propia configuración personalizada y has subido de nivel en el viaje del aprendizaje de Linux.

¿Qué es un entorno de escritorio?

Pon a andar tu escritorio habitual y echa un vistazo a tu alrededor: seguramente haya paneles, áreas de notificación, barras de título de ventanas y otros adornos. Esas son las cosas que proporciona un entorno de escritorio (de ahora en adelante EE), pero si miramos más a fondo, podemos encontrar otras funciones. El EE también maneja los atajos de teclado para cambiar entre aplicaciones y cerrarlas además de los fondos de escritorio, applets (como los monitores de CPU) y vistosos efectos de ventana.

Esas características se proporcionan por un puñado de programas. En Xfce, por ejemplo, al ejecutar ps ax | grep xfce en un terminal, se muestran todos los procesos que tienen «xfce» en sus nombres (y hay unos cuantos). La mayoría de los nombres son evidentes, así que puedes ver que xfce4 panel proporciona los paneles que se encuentran en los bordes de la pantalla mientras que xfce4-power manager monitoriza la batería y gestiona los eventos de gestión de energía (como cerrar la tapa del ordenador).

Podría ser tentador crear algún tipo de escritorio híbrido increíblemente grandioso usando componentes individuales de cada escritorio y mezclándolos, pero el resultado final no sería demasiado bonito. Los programas de cada EE están diseñados para funcionar juntos por lo que si usas un panel de KDE, un gestor de energía de Xfce y un gestor de ventanas de Gnome, acabarás con bibliotecas y otros procesos cargados de cada EE por lo que será como estar ejecutando los tres a la vez, tragándose tus bancos de memoria RAM.

No gracias. Lo que haremos es elegir componentes pequeños y con bajo consumo de memoria que no dependan de nada más pero funcionen bien juntos. Como de costumbre en el software libre, hay un gran abanico en el que elegir, así que echemos un vistazo a los principales contendientes.

Eligiendo un gestor de ventanas

Incluso si estuviéramos usando programas individuales e independientes para crear nuestro entorno de escritorio personalizado, hay algunos estándares en el X Windows System (la base de la capa gráfica del escritorio) que asegura que juntos, estos funcionan correctamente. Antes de nada, echemos un vistazo a algunas opciones disponibles.

Openbox (www.openbox.org)

Diseñado para ser pequeño y rápido, podría decirse que Openbox es el mejor gestor de ventanas independiente. Es perfectamente posible usarlo por sí mismo pero habitualmente se combina con otras herramientas. Coge LXDE por ejemplo: es un entorno de escritorio ligero que usa Openbox como gestor de ventanas y es el escritorio de la popular distribución Lubuntu. Openbox es también el gestor de ventanas por defecto en el ahora difunto CrunchBang y también ArchBang. Es incluso posible usar Openbox dentro de Gnome o KDE. Openbox está disponible en los repositorios de la casi todas las grandes distribuciones y se puede iniciar desde un script con el comando openbox (como veremos más adelante).

i3 (http://i3wm.org)

Mientras Openbox es el tradicional gestor de ventanas que se maneja con el ratón, i3 se usa con atajos de teclado. Esto lo hace un poco más complicado para empezar con él ya que tienes que dedicar algún tiempo a la documentación para hacerte con su uso, pero una vez que has memorizado las teclas, te puedes enganchar a él. i3 es popular entre los programadores que quieren mantener sus manos en el teclado (y no andar buscando el ratón).

Además, i3 es un gestos de ventanas en mosaico. En vez de ser un gestor de ventanas tradicional donde tienes las ventanas dispersas por la pantalla, algunas superpuestas a otras, en i3 organizas las ventanas en distintos tamaños de cuadro (áreas) en la pantalla. Así que en una pantalla panorámica, podrías tener Firefox ocupando exactamente la mitad izquierda, con dos terminales ocupando las secciones superior e inferior de la mitad derecha. Si tienes una pantalla grande, descubrirá que la filosofía del mosaico funciona francamente bien.

cairo linux voice
El dock de Cairo viene cargado de bonitos efectos e imita bastante bien a Mac OS X
Awesome (http://awesome.naquadah.org)

Awesome es otro gestor de ventanas ligero que está diseñado para su uso con el teclado en mente. Otro propósito es ser compatible con varios estándares X y es extensible a través del lenguaje de scripting Lua. Los desarrolladores lo describen como un «framework para gestor de ventanas» (en otras palabras, una base con la que puedes construir un gestor de ventanas más potente con personalizaciones Lua y otros add-ons).

JWM (www.joewing.net/projects/jwm)

JWM está escrito en C plano y usa la base de bibliotecas de X por lo que tiene muy pocas dependencias y es fácil de compilar. Está diseñado para usarse en ordenadores viejos con memoria RAM limitada pero es una buena opción cuando tan solo quieres algo que te saque del apuro. JWM incluye su propio panel pero podrías querer algo más configurable y bonito como veremos en un momento…

¡Escribe tu propio gestor de ventanas!

Si ninguno de los gestores de ventanas que hemos visto te llama la atención, siempre te puedes arremangar, dar candela a un editor de texto y escribir el tuyo propio. Esta no es la tarea de programación más sencilla del mundo (pero tampoco es especialmente complicada cuando entiendes cómo funciona el X Window System (alias X)). Esencialmente, X es la capa que hace de intermediario entre tus programas gráficos y tu tarjeta gráfica. Proporciona un nivel de abstracción por lo que un programa (o conjunto de herramientas gráficas como GTK) pueden decirle a X: «dibuja una linea de A a B» y X hace el trabajo duro.

Ahora bien, puedes usar X sin un gestor de ventanas aunque no llegará demasiado lejos. Si consigues ejecutar un programa, este aparecerá en la esquina superior izquierda con su tamaño por defecto, y no serás capaz de mover o redimensionar su ventana. En X, un gestor de ventanas es como cualquier otro programa pero añade barras de título y operaciones con el teclado en las ventanas para que puedas moverlas.

Puedes encontrar una excelente introducción al funcionamiento interno de los gestores de ventanas X en http://tinyurl.com/writeawm y si quieres inspirarte en código, echa un vistazo a https://github.com/mackstann/tinywm. Este es un gestor de ventanas «ridículamente diminuto» que proporciona todas las funciones básicas (mover, redimensionar, traer ventanas al frente) en una 200 lineas de C comentado, por lo que puedes desplazarte por el código y ver cómo funciona todo. No hace gran cosa pero te muestra cómo realizar las operaciones más importantes.

gestor de ventanas linux voice
El X Window System proporciona una capa de abstracción entre la tarjeta gráfica y tu aplicación (está ahí para hacer la vida más fácil)

Paneles, gestores de archivos y extras

Una vez que has elegido un gestor de ventanas, querrás aderezarlo con algunos extras como un bonito panel (para ejecutar y gestionar programas) además de con un gestor de archivos. Si eres un usuario de Linux con experiencia, puedes encontrarte cómodo haciendo todo el trabajo con los archivos desde el terminal, pero veremos un par de opciones.

Cairo-Dock (http://glx-dock.org)

Cairo-Dock ofrece un panel que se parece al dock de Mac OS X (al menos, antes del achatamiento que vino con 10.10 (Yosemite)). Su modo «plano 3D» tiene un aspecto espléndido con iconos suaves sobre una bandeja de cristal y cuando pasas el cursor del ratón sobre los iconos, crecen ligeramente. Haciendo clic con el botón derecho en un icono, puedes personalizarlo o puede elegir el submenú omnipresente de Cairo que te permite configurar el panel en su conjunto. Por defecto, Cairo-Dock ofrece iconos para la mayoría de los programas FOSS (mostrándolos cuando los tienes instalados): Firefox, Thunderbird, etcétera.

Si vas a probar tu escritorio personalizado en una máquina virtual, ten en cuenta que en el primer arranque, Cairo-Dock preguntará si quieres usar OpenGL. Esto resulta útil en hardware real y hace los efectos del dock más suaves pero dentro de VirtualBox puede causar problemas, así que es mejor dejarlo desactivado.

Docky (http://wiki.go-docky.com)

Docky es muy similar a Cairo-Dock aunque usa el lenguaje Mono que añade un poco de complejidad. Pero también está muy pulido, es elegante y es capaz de aparentar al anteriormente mencionado aspecto de OS X. Docky está disponible en todas las grandes distribuciones y después de la instalación puedes iniciarlo con tan solo teclear docky en la consola. Su configuración por defecto es mínima: verás un icono de un ancla para configurar Docky junto a iconos de programas en ejecución. De todas formas puedes convertir estos iconos en lanzadores haciendo clic con el botón derecho y luego eligiendo engancharlo al dock. Después se quedarán ahí incluso si los programas no se están ejecutando.

PCManFM (http://wiki.lxde.org/en/PCManFM)

Los gestores de archivos están hasta en la sopa en el mundo de Linux y la mayoría ofrecen muy pocas funciones. PCManFM, usado en el escritorio LXDE, es uno de los más notables: es más ligero que los pesos pesados usados en Gnome y KDE pero aún así es capaz de hacer el 99% de cosas que necesitas. Además no intentan estar demasiado a la vanguardia con su diseño, optando por un esquema familiar con el que cualquiera puede hacerse muy rápido. También está presente en bastantes lugares y está disponible en todas las grandes distribuciones Linux.

XFE (http://roland65.free.fr/xfe)

No está relacionado con Xfce. Más bien es un gestor de archivos muy ligero que usa la colección de herramientas gráficas Fox (www.fox-toolkit.org). Sus desarrolladores lo describen como el «gestor de archivos que eligen todos los adictos del pensamiento ligero de Unix» y, aunque no ofrece gran cosa en cuando a funciones sobre otras opciones de bajo consumo, tiene un beneficio: todavía está en desarrollo. En consecuencia, no es difícil de compilar o de encontrar en distribuciones Linux corrientes.

xfe linux voice
XFE es un pequeño y sólido gestor de archivos que no tiene un aspecto demasiado ostentoso pero que hace el trabajo
Extras: compositor, fondo y más

Es posible sacar brillo a algunos gestores de ventanas que hemos mencionado (como Openbox) usando temas, pero si lo que realmente quieres es babear, merece la pena añadir un gestor de composiciones. Este habilita efectos como sombras y sutiles animaciones cuando la ventana aparece y uno de los mejores de Compton (https://github.com/chjj/compton). Es realmente fácil de usar: tan solo tienes que iniciar tu gestor de ventanas y entonces inicias Compton para encender los efectos especiales.

Otra cosa a considerar es el fondo de escritorio. La mayoría de los gestores de ventanas ligeros no ofrecen una forma de hacer esto directamente por lo que necesitarás encontrar otra herramienta para hacerlo. Una especialmente útil para este propósito es Feh (http://feh.finalrewind.org), un visor de imágenes controlado desde la linea de comandos que puede establecer la imagen «root de la ventana». Sí, este es otro uso de «root» en el dialecto Unix  junto a usuario super-administrador y máximo nivel del sistema de archivos. En términos X, la ventana root es, efectivamente, el fondo así que puedes aplicar una imagen a este para establecer un fondo de escritorio.

Juntándolo todo

En fin, ¡hagamos la parte divertida! Ahora vamos a convertir esta colección de componentes en un entorno de escritorio completamente funcional. En este caso, usaremos Openbox como gestor de ventanas, Docky como panel, PCManFM como gestor de archivos y pondremos un poco de Compton y Feh para hacer que luzca mejor.

Como todos estos son programas separados, necesitamos crear un script para ejecutarlos en el orden correcto. Crea un archivo de texto en /usr/local/bin/mydesk como root. Ej:

sudo nano -w /usr/local/bin/mydesk

Introduce el siguiente contenido y usa Ctrl+O para guardar seguido de Ctrl+X para salir del editor Nano.

#!/bin/sh docky & pcmanfm & feh --bg-fill /home/user/desktop.jpg compton -c -
shadow-exclude ‘n:e:Docky’ & openbox

También necesitarás hacer este archivo ejecutable con sudo chmod +x /usr/local/bin/mydesk. Este script inicia un puñado de programas empezando por Docky y PCManFM. El símbolo & después de todos esos programa dice que queremos ejecutarlos en segundo plano para que así el script no tenga que esperar a que se cierre cada uno de ellos. Con Feh querrás cambiar la localización de la imagen de escritorio para que coincida con una imagen de tu directorio personal y fíjate que la linea Compton excluye dibujar sombras en las ventanas Docky (porque esta ya tiene sus propios efectos especiales).

Ahora bien, en una sesión de escritorio normal de Linux, no podemos ejecutar este script sin más y esperar que todo funcione porque ya tenemos un gestor de ventanas, panel y otras cosas en funcionamiento. En vez de eso, necesitamos decirle al gestor de sesiones (la pantalla donde introduces tu nombre de usuario y contraseña) que nuestro script inicia su propio entorno de escritorio al que llamaremos MyDesk. Como root, crea el archivo de texto /usr/share/xsessions/mydesk.desktop con el siguiente contenido:

[Desktop Entry] Name=MyDesk Comment=Escritorio personalizado
Exec=/usr/local/bin/mydesk TryExec=/usr/local/bin/mydesk Type=XSession

Ahora cierra la sesión de tu escritorio actual y en la pantalla de inicio de sesión elige MyDesk como tu sesión. Introduce tu nombre de usuario y contraseña et voilà: ¡tu entorno de escritorio personalizado aparecerá! Mira la captura de pantalla del ejemplo: en este caso hemos hecho clic en el icono del ancla en abajo a la izquierda, hemos elegido «Pane Mode» en las opciones (para hacer que use todo el ancho de la pantalla) y hemos aplicado el tema Matte. También hemos añadido un intercambiador de espacio de trabajo (Docklet) en la parte izquierda.

login linux voice
Una vez que has creado un script de arranque y el archivo .desktop para tu sesión, aparecerá en el gestor de sesiones

El momento de las pruebas

Fíjate en que Docky no incluye un menú de «inicio» de programas tradicional: en su lugar, puedes hacer clic con el botón derecho en el escritorio y elegir Terminal para abrir una ventana de linea de comandos. Introduce el programa que quieras añadir al panel (ej. Firefox) y cuando el programa se inicie, su icono aparecerá en el panel. Hazle clic con el botón derecho y elige «Pin» para dejar el lanzador ahí incluso cuando el programa no está iniciado. Y para cerrar la sesión de tu entorno personalizado, haz clic con el botón derecho en cualquier sitio del escritorio y elige «Salir».

¡Y eso es solo el comienzo! Esto es un mero ejemplo de un escritorio que puedes crear. Podrías intentar ejecutar cairo-dock & en vez de docky & en el script /usr/local/bin/mydesk para probar otro dock o cambiar el gestor de ventanas. Es importante que el gestor de ventanas esté en la última linea del script y no termine con el símbolo &, así cuando salgas del gestor de ventanas, también saldrá toda la sesión y te devolverá a la pantalla de inicio de sesión.

Diviértete experimentando con diferentes combinaciones de gestores de ventanas, paneles, gestores de archivos y otras herramientas, y si creas algo espectacular, pásate por nuestros foros en http://forums.linuxvoice.com y comparte al mundo tu capturas de pantalla. Quien sabe, quizás haya toda una edición de Ubuntu basada en torno a tu escritorio algún día…

escritorio linux voice
¡Y aquí está nuestro escritorio personalizar en toda su gloria! Openbox, Docky, PCManFM y Compton haciendo un buen trabajo juntos

El artículo original se puede consultar en el número 18 de la revista y en su página web.