Crea tu propio escritorio

Una de las posibilidades que ofrece Linux es alta capacidad de configuración. ¿Por qué no usar estas capacidades para crear tu propio escritorio?

He probado Unity, Gnome, KDE, LXQt,… y a todos se les encuentra una pega. En mi caso es el tiempo que tardan en iniciar la sesión. Se me ocurrió entonces intentar crear mi propio escritorio eliminando estos fallos. Elegiré el tema, los efectos, el fondo de escritorio y eliminaré todo lo que preveo que no usaré.

En el resto del artículo parto de un Ubuntu 15.10 con Unity instalado. Veréis que sólo se van a necesitar instalar 3 paquetes adicionales (con sus dependencias).

Las bases de un escritorio

En X11 los escritorios constan de varios elementos, pero los mínimos son:

  • Un gestor de ventanas
  • Un gestor de la sesión

El gestor de ventanas se encarga de poder colocar las ventanas, moverlas, decorarlas,… Hay muchos OpenBox, Kwin, fvwm, icewm,… En este caso me voy a decantar por gtk-window-decorator que viene por defecto con Unity. Le voy a añadir Compiz para tener efectos gráficos en el escritorio.

También se necesita un gestor de la sesión. Para el X11 (realmente para LightDM) es un programa que se arranca al iniciar la sesión de trabajo y al morir le indica a X11 que ya puede cerrar la sesión. Hay que fijarse que esta filosofía es muy simple por lo que se podría poner cualquier programa como gestor de la sesión. Al cerrarse este programa la sesión terminaría.

Muchos escritorios simples (Openbox, Icewm) ponen como gestor de la sesión al propio gestor de ventanas y se ahorran un programa más en ejecución.

En mi caso voy a usar tint2 como gestor de la sesión. ¡Tint2 es sólo una barra de tareas! Cuando la barra de tareas se cierre, la sesión termina.

En un escritorio real hay más programas, como por ejemplo barras de tareas, gestor del Bluetooth, gestor de la red, fondo de escritorio,… Ahora se comprende el porqué de las tardanzas de KDE o Gnome en iniciar la sesión.

El archivo de inicio de sesión

Ahora nos ensuciamos las manos con los scripts. En el directorio /usr/share/xsessions se encuentran los archivos que indican los escritorios disponibles. Vamos a crear el nuestro:

Ejecutamos:

sudo gedit /usr/share/xsessions/miescritorio.desktop

En el editor que aparece copiamos:

[Desktop Entry]
Name=Mi Escritorio
Comment=Se inicia sesión en mi escritorio
Exec=/usr/local/bin/miescritorio.sh
Icon=
Type=Application
DesktopNames=MiEscritorio

Cerramos la sesión y en LightDM vemos los escritorios disponibles. Para verlos se hace clic en el icono que hay justo al lado del usuario:
light-dm-inicio-sesion-1
Ahí ya podemos ver el nuevo escritorio:
light-dm-inicio-sesion-2
Por ahora no hace nada. Ahora toca escribir el script de inicio de sesión.

Script de inicio de sesión mínimo

Si nos fijamos en el archivo que se ha creado antes, aparece una línea:

Exec=/usr/local/bin/miescritorio.sh

Es el primer programa que se va a ejecutar en cuanto el usuario inicie la sesión. En nuestro caso va a ser un script. En este script se van a escribir los programas que se desea ejecutar al inicio de la sesión. Por ahora sólo voy a poner el gestor de ventanas y la barra de tareas. Como ejemplo voy a instalar como gestor de ventanas a compiz con gtk-window-decorator. También voy a instalar tint2 y compizconfig-settings-manager para poder controlar los efectos de escritorio:

sudo apt-get install tint2 compizconfig-settings-manager

Ahora se escribe el script. Ejecutamos:

sudo gedit /usr/local/bin/miescritorio.sh

En él escribimos:

#!/bin/bash

# Se inicia el demonio dbus
dbus-launch &

# Se arranca la decoracion de ventanas
gtk-window-decorator &
# Se arranca compiz
compiz --replace ccp &

gnome-terminal &

# Se inicia tint2
tint2

Ahora le damos permisos de ejecución:

sudo chmod +x /usr/local/bin/miescritorio.sh

Como se puede ver el primer programa que se arranca es “dbus-launch”. DBus es un mecanismo de comunicación entre aplicaciones que se ha hecho imprescindible. Después de arranca compiz, un terminal y finalmente tint2.

Se arranca un terminal al inicio de la sesión (sólo porque es una herramienta que uso mucho). Pero podríamos arrancar otras. Por ejemplo, si usas el equipo para navegar, puedes arrancar Firefox por defecto.

Fijaros que tint2 es el único programa que no tiene un & al final. El símbolo & significa lanzar en segundo plano, por lo que el único programa en primer plano será tint2. Si tint2 se cierra, se cierra el escritorio. Se podría reemplazar tint2 por Cairo-dock que es mucho más impresionante.

Se podría haber usado Openbox en lugar de compiz. En este caso, hay que reemplazar las líneas de “gtk-window-decorator” y “compiz –replace ccp” por: “openbox &”

Por ahora, si arrancásemos este escritorio, no nos dejaría hacer mucho. Compiz necesita una configuración adicional. Se ejecuta el programa de configuración de compiz:

ccsm

Nos aparecerá una ventana:
ccsm

Como mínimo debemos activar:

  • En el apartado Gestión de ventanas: Cambiar tamaño, Mover ventana y también recomiendo activar Grid y Static Application Switcher
  • En el apartado Efectos: Decoración de ventanas y también recomiendo Animations

Luego nos meteremos más con la configuración de compiz que da mucho juego.

Ahora sí, arrancamos con nuestro nuevo escritorio:
mi-escritorio-1

El primer arranque

Cuando accedamos a nuestro escritorio, notaremos una serie de cosas:

  1. El escritorio carga muy rápido (claro estamos con lo mínimo)
  2. Las aplicaciones salen con temas terriblemente feos
  3. No podemos gestionar la red (claro hemos arrancado lo mínimo). Más adelante arrancaremos nm-applet
  4. No podemos apagar el equipo si no es dando al botón de apagar del ordenador

Si en el terminal escribimos:

killall tint2

Mataremos el proceso tint2 y se cerrará la sesión.

Cambiar el tema de las aplicaciones

Antes hablábamos del gestor de sesión, entre otras tareas es el encargado de ponerle el tema a las aplicaciones. Realmente el tema se cambia una vez en la vida (depende de lo aburridos que estemos) y de premio nos quedamos con una aplicación que consume RAM para decirle al resto de aplicaciones que usen tal tema. Se puede decir por línea de comandos el tema y nos ahorramos esa aplicación a costa de tener que reiniciar sesión cada vez que se cambie el tema. El archivo que vamos a tocar es “.profile”:

gedit ~/.profile

Se le añaden las siguientes líneas para poner el tema Ambiance:

# Se indican los temas de decoración
# GTK3
export GTK_THEME=Ambiance
# GTK2
export GTK2_RC_FILES=/usr/share/themes/Ambiance/gtk-2.0/gtkrc

Si se reinicia la sesión en nuestro escritorio, ahora las aplicaciones lucirán bonitas.

En el directorio /usr/share/themes, están disponibles los temas de las aplicaciones, se pueden instalar más desde los repositorios y los hay muy impresionantes.

Si en lugar del tema Ambiance, que es el que se ha puesto, se desea el tema Radiance, sólo hay que cambiar Ambiance por Radiance en las líneas anteriores:

# Se indican los temas de decoración
# GTK3
export GTK_THEME=Radiance
# GTK2
export GTK2_RC_FILES=/usr/share/themes/Radiance/gtk-2.0/gtkrc

Qt toma los temas directamente de la configuración de GTK, por lo que no tenemos que preocuparnos por más.

¿Y cómo lo apago o suspendo?

Tint2 no viene con un botón de apagar. Por cierto, tint2 se puede configurar con la aplicación:

tint2conf

Aquí podemos añadir las aplicaciones que necesitemos al lanzador.

Si estamos usando Ubuntu 15.10 o 15.04, ya tenemos systemd disponible. Para apagar el equipo en la línea de comandos habría que escribir:

systemctl poweroff

Para suspender:

systemctl suspend

Pero mejor sería tener un botón para estas tareas. ¿No?

Vamos a crear nuestro propio lanzador. Ejecutamos:

sudo gedit /usr/local/share/applications/apagar.desktop

Aquí escribimos:

[Desktop Entry]
Name=Apagar
Comment=Apagar el equipo
Exec=apagar.sh
StartupNotify=true
Terminal=true
Type=Application
Icon=/usr/share/icons/Humanity/actions/24/application-exit.svg

Ahora escribimos el script que nos va a permitir apagar:

sudo gedit /usr/local/bin/apagar.sh

Allí tecleamos:

#!/bin/bash
zenity --question --text="¿Desea apagar?" --default-cancel

if [[ $? -eq 0 ]]; then
    systemctl poweroff
fi

Y le damos permisos de ejecución:

sudo chmod +x /usr/local/bin/apagar.sh

Ahora ya tenemos una nueva aplicación que se puede añadir a tint2 para apagar.

Para suspender, se puede hacer algo similar cambiando el comando poweroff por suspend, pero he encontrado más útil, cambiar el comportamiento del botón de apagado.

Gestión de energía con systemd

A partir de la versión 15.04 de Ubuntu systemd es la aplicación por defecto para controlar muchas cosas. Entre ellas la gestión de energía. Como ya se ha visto se puede apagar el ordenador con un simple:

systemctl poweroff

Pero no sólo eso, se pueden cambiar los comportamientos de los botones de encendido, la acción de cerrar la tapa del portátil para apagar o suspender el equipo (o que no suceda nada).

Para ello hay que ir al archivo /etc/systemd/logind.conf

Ahí aparecen una serie de líneas comentadas con las acciones por defecto y otras con las acciones modificadas. Para cambiar, por ejemplo, el comportamiento del botón de encendido, hay que descomentar la línea:

#HandlePowerKey=poweroff

Y cambiarla por:

HandlePowerKey=suspend

Se ejecuta en un terminal, para que los cambios tengan efecto:

systemctl restart systemd-logind.service

En el caso de un portátil también es interesante cambiar el valor de “HandleLidSwitch” a “suspend”. HandleLidSwitch controla la acción al cerrar la tapa del portátil, así al cerrar la tapa, el sistema entraría en suspensión.

En la wiki de Arch hay un artículo muy bueno explicando los posibles valores y la configuración:

https://wiki.archlinux.org/index.php/Power_management_%28Espa%C3%B1ol%29

Más aplicaciones útiles

Hasta ahora se ha iniciado con lo mínimo, por lo que el consumo de RAM será mínimo y el arranque muy rápido, pero… hay cosas que se necesitan controlar, como puede ser el volumen, el brillo de pantalla, la red,…

Para controlar la red se usa el programa nm-applet. Lo vamos a añadir a las aplicaciones que se arrancan al inicio de la sesión:
Ejecutamos:

sudo gedit /usr/local/bin/miescritorio.sh

En él escribimos:

#!/bin/bash

# Se inicia el demonio dbus
dbus-launch &

# Se arranca la decoracion de ventanas
gtk-window-decorator &
# Se arranca compiz
compiz --replace ccp &

gnome-terminal &

# Gestor de la red
nm-applet &

# Se inicia tint2
tint2

Al reiniciar la sesión, tendremos ya el icono de control de la red.

¿Y la batería del portátil? Tint2 tiene un monitor del estado de la batería, por lo que se puede activar. Sólo hay que ejecutar la aplicación tint2conf e ir al apartado correspondiente.

¿Y el sonido? Se pueden subir y bajar con los comandos:

amixer -D pulse sset Master 5%+ # Sube el volumen un 5%
amixer -D pulse sset Master 5%- # Baja el volumen un 5%

Más adelante les vamos a asociar una tecla.

¿Y el brillo? Se pueden subir y bajar con los comandos:

xbacklight -inc 10 # Sube el brillo un 5%
xbacklight -dec 5  # Baja el brillo un 5%

Más adelante también les vamos a asociar una tecla.

Arrancando aplicaciones por combinaciones de teclas

Antes se hablaba del control del volumen o del brillo. Para estos comandos lo más cómodo es asociarles una combinación de teclas. Podemos configurar compiz para que ejecute comandos al realizar ciertas combinaciones de teclas. Por ejemplo, es prácticamente universal en Linux que la combinación de teclas ctl+alt+t abre un terminal.

Para añadir la combinación de teclas ctl+atl+t a compiz se hace lo siguiente:

Se ejecuta en un terminal:

ccsm

En el apartado General, se activa “Comandos” y se hace clic sobre “Comandos” para ver la configuración:
ccsm-comandos-1

Como se puede ver en la imagen, hay varias pestañas. En la pestaña “comandos” podemos introducir los programas que deseamos ejecutar. Por ejemplo, en la “Línea de comandos 1” he introducido “gnome-terminal”.

Ahora hay que asociar a cada comando la combinación de teclas deseada, para ello se va a la pestaña “Combinaciones de teclas”. Para la línea de “Ejecutar comando 1” hacemos clic en el botón que pone desactivado, lo activamos e introducimos la combinación de teclas que deseamos usar (ctl+alt+t para el terminal).

Ya está. A partir de ahora, al pulsar ctl+alt+t se abre el terminal.

Ya que estamos aquí se pueden añadir teclas para subir o bajar el brillo de la pantalla o el volumen mediante los comandos que se han visto anteriormente.

Si seguimos investigando las pestañas, se puede incluso iniciar aplicaciones al tocar las esquinas del escritorio.

Seguimos con compiz

Los efectos que se han activado de compiz son los mínimos para que el sistema funcione, pero hay efectos que nos pueden resultar útiles como el cubo de escritorio o los cambiadores de aplicaciones.

Si instalamos el paquete:

sudo apt-get install compiz-plugins-extra

Tenemos disponibles más efectos.

Pero vamos a estudiar los efectos que tenemos. Si ejecutamos ccsm y vamos al apartado “Efectos”, se puede activar la opción de “Animations”. Este efecto controla las animaciones al maximizar o minimizar una ventana. Si entramos en la configuración de “Animations” se pueden cambiar las animaciones asociadas a diversos efectos del escritorio. Por ejemplo, si se visitan las pestañas “Minimize Animation” y “Unminimize Animation” y se cambia la animación por “Magic Lamp”, tendremos el típico efecto de las ventanas que se deshacen como gelatina al minimizar o desminimizar.

En el apartado “Gestión de ventanas” tenemos disponibles varios cambiadores de aplicaciones. Yo suelo usar “Static Application switcher” que se activa al usar la combinación de teclas alt+tab. Al entrar en la configuración de “Static Application switcher” se pueden cambiar la teclas por defecto.

Hay otros cambiadores de aplicaciones, pero se recomienda tener sólo uno activado.

Los fondos de pantalla

No hemos tocado todavía el tema de los fondos de pantalla. Por defecto, tendremos un fondo de pantalla horrible que habrá asignado LightDM. Los podemos controlar con la aplicación nitrogen:

sudo apt-get install nitrogen

Nitrogen carga el fondo de pantalla y se cierra por lo que no consume muchos recursos. Lo vamos a configurar para que cargue al azar una imagen de un directorio que le indiquemos. Por ejemplo, podríamos tener las típicas fotos familiares, que nos gustan, pero que no tenemos tiempo para ver.

El script en cuestión es:

# Se cambia el fondo de escritorio a partir del directorio indicado
directorio=/usr/share/backgrounds
imagen=`find "$directorio" -name '*.jpg' | sort --random-sort | head -1`
nitrogen "$imagen" --set-scaled

En directorio le podemos decir la ruta de la que sacar las imágenes. En el ejemplo se obtienen de los fondos por defecto /usr/share/backgrounds.

Sólo tenemos que añadir estas líneas a nuestro inicio de sesión:

sudo gedit /usr/local/bin/miescritorio.sh

En mi caso quedaría:

#!/bin/bash

# Se inicia el demonio dbus
dbus-launch &

# Se arranca la decoracion de ventanas
gtk-window-decorator &
# Se arranca compiz
compiz --replace ccp &

gnome-terminal &

# Gestor de la red
nm-applet &

# Se cambia el fondo de escritorio a partir del directorio indicado
directorio=/usr/share/backgrounds
imagen=`find "$directorio" -name '*.jpg' | sort --random-sort | head -1`
nitrogen "$imagen" --set-scaled

# Se inicia tint2
tint2

Hay que fijarse que todas las modificaciones se añaden siempre antes de tint2, que es nuestro gestor de la sesión.

¿Algo más?

Aunque he puesto mucho texto, todo se limita a introducir nuestro escritorio en xsessions y hacer un script que lo arranque.

He usado compiz y tint2. Pero se podría aligerar más usando sólo Openbox. Icemwm incluye su propia barra de tareas y se pueden hacer escritorios realmente ligeros. Podríamos coger piezas de KDE y mezclarlas con Xfce. Podríamos usar Cairo-dock en lugar de tint2. Podríamos crear un escritorio sólo para cargar juegos en que eliminamos del arranque todos los programas innecesarios para esa tarea. Podríamos crear un escritorio que no permita modificar nada para equipos expuestos al público (un cibercafé por ejemplo)…

En la imaginación está el límite.

Anuncios
Esta entrada fue publicada en Software. Guarda el enlace permanente.

2 respuestas a Crea tu propio escritorio

  1. Pingback: Crea tu propio escritorio | PlanetaLibre

  2. Reblogueó esto en BLOG DEL PROYECTO TIC – TACy comentado:
    Para esos detallistas amantes de GNU/Linux que les gusto personalizar mucho a mano su Entorno de Escritorio, este sencillo tutorial tipo “Hazlo tu mismo desde Cero”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s