Quel environnement de bureau startx exécute-t-il et comment puis-je le changer?

18

De nombreux documents, j'ai lu que startxLXDE démarre sous Raspbian OS. Je suis un peu confus.

Exécutera toujours startxLXDE GUI?

J'ai également vu un exemple d'utilisation de la startlxdecommande. En quoi cette commande est-elle différente et pourquoi startxet startlxdeexécute-t-elle la même interface graphique (LXDE)? Ou peut-être qu'il l'exécute car il s'agit de l'interface graphique par défaut?

Comment puis-je choisir l'interface graphique par défaut si j'en ai plusieurs?

Pourriez-vous s'il vous plaît expliquer plus de détails sur l'interface graphique dans les systèmes Linux?

CuriousGuy
la source

Réponses:

27

startxs'exécute xinitet démarre un serveur X et une session client. La session client est ~/.xinitrcsi présente et autrement /etc/X11/xinit/xinitrc(l'emplacement peut varier entre les distributions). Ce que fait ce script varie selon les distributions. Sur Debian (y compris les dérivés tels que Raspbian), /etc/X11/xinit/xinitrcs'exécute /etc/X11/Xsessionqui à son tour exécute les scripts /etc/X11/Xsession.d. Les scripts Debian cherchent une session utilisateur dans d' autres fichiers ( ~/.xsession, ~/.xsessionrc, ~/.Xsession) et, si aucun paramètre utilisateur est applicable, fonctionne x-session-manager( se replient à x-window-managersi aucun [gestionnaire de session] est installé, retombant à x-terminal-emulatordans le cas peu probable qu'aucun gestionnaire de fenêtres est installée).

Si vous souhaitez contrôler ce qui sera exécuté, vous pouvez créer l'un des fichiers utilisateur, soit ~/.xsessionou ~/.xinitrc. Le fichier ~/.xsessionest également utilisé si vous vous connectez à un gestionnaire d'affichage (c'est-à-dire si vous saisissez votre mot de passe dans une fenêtre GUI). Le fichier ~/.xinitrcest spécifique à xinitet startx. Utiliser ~/.xsessionpasse par là /etc/X11/Xsessiondonc il configure des choses comme les méthodes de saisie, les ressources, les agents de mot de passe, etc. Si vous utilisez .xinitrc, vous devrez tout faire manuellement. Encore une fois, je décris Debian ici, d'autres variantes d'Unix pourraient configurer les choses différemment. L'utilisation de ~/.xinitrcpour spécifier ce qui sera exécuté lorsque vous exécutez startxou xinitest universelle.

Que vous utilisiez ~/.xinitrcou ~/.xsession, ce fichier (généralement un script shell, mais il ne doit pas l'être si vous voulez vraiment utiliser autre chose) doit préparer tout ce qui doit être préparé (par exemple, les paramètres du clavier, les ressources, les applets qui ne sont pas démarrés). par le gestionnaire de fenêtres, etc.), puis exécutez à la fin le programme qui gère la session. Une fois le script terminé, la session se termine. En règle générale, vous utiliseriez execà la fin du script, pour remplacer le script par le gestionnaire de session ou le gestionnaire de fenêtres.

Votre système a probablement /usr/bin/startlxdecomme gestionnaire de session par défaut à l'échelle du système. Sur Debian et dérivés, vous pouvez vérifier les gestionnaires de session disponibles avec

update-alternatives --list x-session-manager

ou obtenez une description plus détaillée indiquant laquelle est à jour

update-alternatives --display x-session-manager

Si LXDE n'était pas la valeur par défaut à l'échelle du système et que vous vouliez en faire la valeur par défaut pour votre compte, vous pouvez utiliser le ~/.xsessionfichier suivant :

#!/bin/sh
exec startlxde

Sur certaines variantes Unix, cela ne fonctionnerait que pour les connexions graphiques, pas pour startx, vous devez donc également créer un identifiant identique ~/.xinitrc. (Ou pas identique: dans ~/.xsession, vous voudrez peut-être faire d'autres choses, car c'est le premier fichier qui est exécuté dans une session graphique; par exemple, vous pouvez placer . ~/.profilevers le haut, pour définir certaines variables d'environnement.)

Si vous souhaitez essayer d'autres environnements comme un seul, vous pouvez spécifier un programme différent à exécuter sur la ligne de commande de startxlui - même. Le startxprogramme a une bizarrerie: vous devez utiliser le chemin d'accès complet au programme.

startx /usr/bin/startkde

La startxcommande vous permet également de spécifier des arguments à transmettre au serveur. Par exemple, si vous souhaitez exécuter plusieurs sessions GUI en même temps, vous pouvez passer un numéro d'affichage différent à chaque fois. Passez les arguments du serveur après --sur la ligne de commande de startx.

startx /usr/bin/startkde -- :1
Gilles 'SO- arrête d'être méchant'
la source
Je suis sur Debian 9. Ma machine démarre sur tty1. À partir de ma connexion, startxla session Xfce4 par défaut démarre. Depuis la connexion utilisateur de ma femme sur tty1 ou tty2. Sa startxcommande est configurée pour exécuter Cinnamon (spécifié dans ~/.xsession). Pour le deuxième serveur X, je n'ai pas besoin de spécifier le $DISPLAYcomme indiqué dans la dernière partie de votre réponse. Bien que cela fonctionne certainement. Il en fait automatiquement le deuxième, $DISPLAYetc. La configuration est cependant excellente. Il n'y a pas de connexion et de déconnexion à une session graphique, juste un raccourci clavier pour changer de profil utilisateur. Merci pour cette réponse utile!
jbrock
10

Non: startxest configurable. Selon la page de manuel :

Pour déterminer le client à exécuter, startxrecherche d'abord un fichier appelé .xinitrcdans le répertoire personnel de l'utilisateur. Si cela n'est pas trouvé, il utilise le fichier xinitrcdans le xinitrépertoire de la bibliothèque.

startxn'est pas la seule façon de démarrer X (comme vous le voyez startlxde). La startxpage de manuel aide à nouveau:

Le script startx est un frontal de xinit (1) qui fournit une interface utilisateur quelque peu plus agréable pour exécuter une seule session du système X Window. Il est souvent exécuté sans argument.

D'autre part, si vous souhaitez choisir une interface graphique (LXDE, KDE, etc.), puis xdmet des sosies tels que kdm, gdmou LightDMsont utilisés pour sélectionner différents types de bureaux. Sur Debian, j'utilise généralement kdm, car cela permet différents types de bureaux. Les conditionneurs gdminterdisent la plupart des types de postes de travail, ce qui le rend inadapté à mes besoins.

xdmutilise un ensemble différent de scripts pour démarrer, par exemple, votre ~/.xsessionscript avec les scripts système. Les sosies peuvent ignorer cela et utiliser leurs propres scripts. Mais c'est un point de départ.

Thomas Dickey
la source
Donc, quelque part dans les fichiers conf, il est écrit pour exécuter LXDE par exemple?
CuriousGuy
.xinitrcest un script qui le rend configurable. Il pourrait exécuter LXDE directement s'il était codé pour ce faire.
Thomas Dickey
1
startlxden'est pas une interface pour xinit, c'est un lanceur pour le gestionnaire de sessions LXDE. Ce n'est pas un remplacement startx, c'est quelque chose que vous pouvez exécuter ~/.xinitrc.
Gilles 'SO- arrête d'être méchant'
Ensuite, il a besoin de documentation. Sérieusement, une bonne réponse pointe l'OP dans le sens de la documentation plutôt que d'essayer de la reformuler (à moins que l'on ait un commentaire à faire sur la documentation, pour mieux la comprendre).
Thomas Dickey