miércoles, 7 de noviembre de 2012

Aislar entornos de escritorio en Linux

Es común cuando tienes instalados varios escritorios, que al abrir el menú se muestren mezcladas aplicaciones de varios escritorios. Por ejemplo si tenemos XFCE, GNOME y LXDE estos tendrán por defecto su propio gestor de archivos (Thunar, Nautilus y PCManFM respectivamente).

Existe una forma para no tener mezcladas estas aplicaciones y que estas se muestren sólo en el escritorio que estamos usando, para ello tenemos que editar los ficheros *.desktop que se encuentran en el directorio /usr/share/aplications.



Si queremos por ejemplo que PCManFM se muestre sólo en LXDE editariamos el fichero PCManFM.desktop y añadiremos al final del mismo la siguiente línea:

OnlyShowIn=LXDE;


También existe la posibilidad de no mostrar un determinado icono en un entorno específico, por ejemplo si queremos que el Thunar se muestre en XFCE y LXDE pero no en GNOME, editariramos el fichero Thunar.desktop y añadiríamos la siguiente línea;

NotShowIn=GNOME;


Lo de las aplicaciones mezcladas en el menú de inicio, es sólo parte del problema cuando tienes varios entornos de escritorio instalados, otro de los problemas es las aplicaciones que se arrancan al inicio, por ejemplo quieres que cuando entras en XFCE o LXDE se arranque conky pero no en GNOME

Para ello editaremos los ficheros *.desktop del directorio ~/.config/autostart si el icono no se encuentra en este directorio probablemente se encuentre en /etc/xdg/autostart, en ese caso copia el fichero a ~/.config/autostart. Una vez identificado el fichero lo editamos añadimos las siguientes líneas:

X-GNOME-Autostart-enabled=false

Quedando el fichero:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Version=1.0
Name=Conky
Comment=Start conky display
Exec=conky
X-GNOME-Autostart-enabled=false
NotShowIn=GNOME;KDE;Unity;

2 comentarios:

  1. Gracias.

    Si queremos o necesitamos averiguar qué entorno de escritorio (o gestor de ventanas en su defecto) emplea la distribución de GNU/Linux que estamos utilizando podemos tener en cuenta (bueno, con lo leído arriba y teniendo en cuenta que pueden tenerse varias, supongo que se trata de aquella con la que se ha iniciado sesión) ...

    He probado las mejores opciones que he encontrado por ahí (con alguna adaptación) con a) GNOME bajo Linux Mint instalado; b) GNOME bajo Linux Mint Live USB; c) MATE bajo Linux Mint; d) LXDE bajo Lubuntu; e) JWM bajo Puppy Linux (JWM no es un entorno de escritorio -como los anteriores- sino un gestor de ventanas -de pila concretamente-). Mis resultados:

    1) (regular) Comando (en terminal o consola):
    env | grep DESKTOP_SESSION=
    a)&b) DESKTOP_SESSION=gnome ; c) DESKTOP_SESSION=default.desktop ; d) DESKTOP_SESSION=Lubuntu ; e) (nada)

    2) (regular) Comando (en terminal o consola):
    echo $GDMSESSION
    a)&b) gnome ; c) (nada) ; d) Lubuntu ; e) (nada)

    3) (bien, pero no perfecto) Comando (en terminal o consola):
    pgrep -l "gnome|kde|mate|cinnamon|lxde|xfce|jwm"
    o bien
    ps -A | egrep -i "gnome|kde|mate|cinnamon|lxde|xfce|jwm"
    a)&b) (BIEN) ; c) (BIEN) ; d) (MAL) ; e) (nada) & (BIEN)

    4) (muy bien, pero no perfecto) Programa o aplicación que viene de serie con todos los probados (en distros que no, se podría instalar fácilmente):
    HardInfo
    a) (nada) ; b) GNOME 2.32.0 ; c) MATE ; d) LXDE (Lubuntu) ; e) Unknown (Window Manager: JWM)

    CONCLUSIÓN: Una combinación de HardInfo y del comando ps -A | egrep -i "gnome|kde|mate|cinnamon|lxde|xfce|jwm" probablemente nos dará la respuesta buscada.

    ResponderEliminar
  2. Este comando parece útil:
    ls /usr/bin/*session*
    -> en GNOME devuelve /usr/bin/gnome-session (y más)
    -> en MATE devuelve /usr/bin/mate-session (y más)
    -> en LXDE devuelve /usr/bin/lxsession (y más)
    -> en JWM devuelve /usr/bin/icewm-session (debería ser jwm-session, ¿¡no!?)

    ResponderEliminar