web-dev-qa-db-fra.com

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

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

Est-ce que startx exécutera toujours l'interface graphique LXDE?

J'ai également vu un exemple d'utilisation de la commande startlxde. En quoi cette commande est-elle différente et pourquoi startx et startlxde exécutent 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?

18
CuriousGuy

startx exécute xinit qui démarre un serveur X et une session client. La session client est ~/.xinitrc Si elle est présente, sinon /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/xinitrc Exécute /etc/X11/Xsession Qui à son tour exécute des scripts dans /etc/X11/Xsession.d. Les scripts Debian recherchent une session utilisateur dans d'autres fichiers (~/.xsession, ~/.xsessionrc, ~/.Xsession) Et, si aucun paramètre utilisateur n'est applicable, exécute x-session-manager ( retomber à x-window-manager si aucun [gestionnaire de sessions] n'est installé, retomber à x-terminal-emulator dans le cas peu probable où aucun gestionnaire de fenêtres n'est installé).

Si vous souhaitez contrôler ce qui sera exécuté, vous pouvez créer l'un des fichiers utilisateur, soit ~/.xsession Ou ~/.xinitrc. Le fichier ~/.xsession Est également utilisé si vous vous connectez sur un gestionnaire d'affichage (c'est-à-dire si vous tapez votre mot de passe dans une fenêtre GUI). Le fichier ~/.xinitrc Est spécifique à xinit et startx. L'utilisation de ~/.xsession Passe par /etc/X11/Xsession Afin de configurer des éléments comme les méthodes de saisie, les ressources, les agents de mot de passe, etc. Si vous utilisez .xinitrc, Vous devrez effectuer toutes ces opérations manuellement. Encore une fois, je décris Debian ici, d'autres variantes d'Unix pourraient configurer les choses différemment. L'utilisation de ~/.xinitrc Pour spécifier ce qui sera exécuté lorsque vous exécutez startx ou xinit est universelle.

Que vous utilisiez ~/.xinitrc Ou ~/.xsession, Ce fichier (généralement un script Shell, mais il ne doit pas nécessairement 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ées par le gestionnaire de fenêtres, etc.), puis à la fin, exécutez 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 sessions ou le gestionnaire de fenêtres.

Votre système a probablement /usr/bin/startlxde Comme 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 pourriez utiliser le fichier ~/.xsession Suivant:

#!/bin/sh
exec startlxde

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

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

startx /usr/bin/startkde

La commande startx 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

Non: startx est configurable. Selon le page de manuel :

Pour déterminer le client à exécuter, startx recherche d'abord un fichier appelé .xinitrc dans le répertoire personnel de l'utilisateur. S'il n'est pas trouvé, il utilise le fichier xinitrc dans le répertoire de la bibliothèque xinit.

startx n'est pas le seul moyen de démarrer X (comme vous le voyez dans startlxde). La page de manuel startx aide à nouveau:

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

En revanche, si vous souhaitez choisir une interface graphique (LXDE, KDE, etc.), alors xdm et des sosies tels que kdm, gdm ou LightDM sont utilisés pour sélectionner différents types de bureaux. Sur Debian, j'utilise généralement kdm, car cela autorise différents types de bureaux. Les conditionneurs pour gdm interdisent la plupart des types de bureau, ce qui le rend impropre à mes besoins.

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

10
Thomas Dickey