¿Qué entorno de escritorio ejecuta startx y cómo puedo cambiarlo?

18

De muchos documentos, leí que startxestá iniciando LXDE en Raspbian OS. Estoy un poco confundida.

Siempre se startxejecutará LXDE GUI?

También he visto ejemplos con el uso del startlxdecomando. ¿Cómo es ese comando diferente y por qué startxy startlxdeestán ejecutando la misma GUI (LXDE)? ¿O tal vez lo ejecuta porque es la GUI predeterminada?

¿Cómo puedo elegir la GUI predeterminada si tengo varias?

¿Podría explicar más detalles sobre la GUI en sistemas Linux?

Curioso
fuente

Respuestas:

27

startxse ejecuta, lo xinitque inicia un servidor X y una sesión de cliente. La sesión del cliente es ~/.xinitrcsi está presente, y de lo contrario /etc/X11/xinit/xinitrc(la ubicación puede variar entre las distribuciones). Lo que hace este script varía entre distribuciones. En Debian (incluidos derivados como Raspbian), se /etc/X11/xinit/xinitrcejecuta , /etc/X11/Xsessionque a su vez ejecuta scripts /etc/X11/Xsession.d. Los scripts Debian buscan una sesión de usuario en otros archivos ( ~/.xsession, ~/.xsessionrc, ~/.Xsession) y, si no hay ajuste de usuario es aplicable, carreras x-session-manager(cayendo de nuevo a x-window-managersi se ha instalado ningún [gestor de sesiones], cayendo de nuevo a x-terminal-emulatoren el caso poco probable de que ningún gestor de ventanas es instalado).

Si desea controlar lo que se ejecuta, puede crear uno de los archivos de usuario, ya sea ~/.xsessiono ~/.xinitrc. El archivo ~/.xsessiontambién se usa si inicia sesión en un administrador de pantalla (es decir, si escribe su contraseña en una ventana GUI). El archivo ~/.xinitrces específico de xinity startx. El uso ~/.xsessionpasa por /etc/X11/Xsessionlo que configura cosas como métodos de entrada, recursos, agentes de contraseña, etc. Si lo usa .xinitrc, tendrá que hacer todo esto manualmente. Una vez más, estoy describiendo Debian aquí, otras variantes de Unix podrían configurar las cosas de manera diferente. El uso de ~/.xinitrcpara especificar qué se ejecuta cuando se ejecuta startxo xinites universal.

Ya sea que use ~/.xinitrco ~/.xsession, este archivo (generalmente un script de shell, pero no tiene que ser así si realmente quiere usar otra cosa) debe preparar lo que sea necesario (por ejemplo, configuración del teclado, recursos, applets que no se inician por el administrador de ventanas, etc.), y luego al final ejecute el programa que administra la sesión. Cuando finaliza el script, la sesión finaliza. Por lo general, se usaría execal final del script para reemplazar el script por el administrador de sesión o el administrador de ventana.

Es probable que su sistema tenga /usr/bin/startlxdecomo administrador de sesión predeterminado en todo el sistema. En Debian y derivados, puede consultar los administradores de sesión disponibles con

update-alternatives --list x-session-manager

u obtener una descripción más detallada que indique cuál es actual con

update-alternatives --display x-session-manager

Si LXDE no era el valor predeterminado de todo el sistema y deseaba establecerlo como predeterminado para su cuenta, podría usar el siguiente ~/.xsessionarchivo:

#!/bin/sh
exec startlxde

En algunas variantes de Unix, eso solo se ejecutaría para inicios de sesión gráficos, no para startx, por lo que también necesitaría crear uno idéntico ~/.xinitrc. (O no idéntico: en ~/.xsession, es posible que desee hacer otras cosas, porque ese es el primer archivo que se ejecuta en una sesión gráfica; por ejemplo, puede colocar . ~/.profilecerca de la parte superior, para establecer algunas variables de entorno).

Si desea probar otros entornos de forma única, puede especificar un programa diferente para ejecutar en la línea de comando de startxsí mismo. El startxprograma tiene una peculiaridad: debe utilizar la ruta completa al programa.

startx /usr/bin/startkde

El startxcomando también le permite especificar argumentos para pasar al servidor. Por ejemplo, si desea ejecutar varias sesiones de GUI al mismo tiempo, puede pasar un número de pantalla diferente cada vez. Pase los argumentos del servidor después --en la línea de comandos de startx.

startx /usr/bin/startkde -- :1
Gilles 'SO- deja de ser malvado'
fuente
Estoy en Debian 9. Mi máquina arranca en tty1. Desde mi inicio de sesión, se startxinicia la sesión Xfce4 predeterminada. Desde el inicio de sesión de usuario de mi esposa en tty1 o tty2. Su startxcomando está configurado para ejecutar Cinnamon (especificado en ~/.xsession). Para el segundo servidor X no tengo que especificar lo $DISPLAYque se indica en la última parte de su respuesta. Aunque eso ciertamente funciona. Lo convierte automáticamente en el segundo, $DISPLAYetc. Sin embargo, la configuración es excelente. No hay que iniciar y cerrar sesión en una sesión gráfica, solo un atajo de teclado para cambiar los perfiles de usuario. ¡Gracias por esta útil respuesta!
jbrock
10

No: startxes configurable. Según la página del manual :

Para determinar el cliente a ejecutar, startxprimero busca un archivo llamado .xinitrcen el directorio de inicio del usuario. Si no se encuentra, utiliza el archivo xinitrcen el xinitdirectorio de la biblioteca.

startxNo es la única forma de iniciar X (como se ve desde startlxde). La startxpágina del manual ayuda nuevamente:

El script startx es un front-end para xinit (1) que proporciona una interfaz de usuario algo más agradable para ejecutar una sola sesión del sistema X Window. A menudo se ejecuta sin argumentos.

Por otro lado, si desea elegir una GUI (LXDE, KDE, etc.), entonces, xdmy similares kdm, gdmo LightDMse utilizan para seleccionar diferentes tipos de escritorio. En Debian generalmente uso kdm, porque eso permite diferentes tipos de escritorio. Los empaquetadores para gdmno permiten la mayoría de los tipos de escritorio, lo que lo hace inadecuado para mis necesidades.

xdmutiliza un conjunto diferente de secuencias de comandos para comenzar, por ejemplo, su ~/.xsessionsecuencia de comandos junto con las secuencias de comandos del sistema. Los que se parecen pueden ignorar esto y usar sus propios scripts. Pero es un punto de partida.

Thomas Dickey
fuente
Entonces, ¿en algún lugar de los archivos conf está escrito para ejecutar LXDE, por ejemplo?
CuriousGuy
.xinitrces un script que lo hace configurable. Podría ejecutar LXDE directamente si está codificado para hacer esto.
Thomas Dickey
1
startlxdeno es una interfaz para xinit, es un iniciador para el administrador de sesión LXDE. No es un reemplazo startx, es algo en lo que puedes ejecutar ~/.xinitrc.
Gilles 'SO- deja de ser malvado'
Entonces necesita algo de documentación. En serio, una buena respuesta apunta el OP en la dirección de la documentación en lugar de intentar reformularla (a menos que uno tenga algún comentario que hacer sobre la documentación, para darle un mejor sentido).
Thomas Dickey