Welche Desktop-Umgebung wird von startx ausgeführt und wie kann ich diese ändern?

18

Aus vielen Dokumenten habe ich gelesen, dass startxLXDE unter Raspbian OS gestartet wird. Ich bin ein bisschen durcheinander.

Läuft immer startxLXDE GUI?

Auch ich habe ein Beispiel mit dem startlxdeBefehl gesehen. Wie wird dieser Befehl anders und warum startxund startlxdeläuft den gleichen GUI (LXDE)? Oder läuft es vielleicht, weil es die Standard-GUI ist?

Wie kann ich die Standard-GUI auswählen, wenn ich mehrere habe?

Könnten Sie bitte weitere Details zur Benutzeroberfläche in Linux-Systemen erläutern?

CuriousGuy
quelle

Antworten:

27

startxläuft, xinitwodurch ein X-Server und eine Client-Sitzung gestartet werden. Die Clientsitzung ist ~/.xinitrcvorhanden und ansonsten /etc/X11/xinit/xinitrc(der Speicherort kann zwischen den Verteilungen variieren). Was dieses Skript tut, variiert zwischen den Distributionen. Läuft unter Debian (einschließlich Derivaten wie Raspbian), /etc/X11/xinit/xinitrcin /etc/X11/Xsessiondem wiederum Skripte ausgeführt werden /etc/X11/Xsession.d. Der Debian - Skripte sucht nach einer Benutzersitzung in anderen Dateien ( ~/.xsession, ~/.xsessionrc, ~/.Xsession) und, falls keine Benutzereinstellung anwendbar ist, läuft x-session-manager(fallen zurück , x-window-managerwenn kein [Session - Manager] installiert ist, zurück zu fallen , x-terminal-emulatorin dem unwahrscheinlichen Fall , dass kein Fenstermanager ist Eingerichtet).

Wenn Sie steuern möchten, was ausgeführt wird, können Sie entweder ~/.xsessionoder eine der Benutzerdateien erstellen ~/.xinitrc. Die Datei ~/.xsessionwird auch verwendet, wenn Sie sich in einem Anzeigemanager anmelden (dh wenn Sie Ihr Kennwort in einem GUI-Fenster eingeben). Die Datei ~/.xinitrcist spezifisch für xinitund startx. Mit ~/.xsessiongehen Sie durch /etc/X11/Xsession, um Dinge wie Eingabemethoden, Ressourcen, Passwortagenten usw. einzurichten. Wenn Sie verwenden .xinitrc, müssen Sie all diese manuell ausführen. Noch einmal, ich beschreibe Debian hier, andere Unix-Varianten könnten die Dinge anders einrichten. Die Verwendung von, ~/.xinitrcum anzugeben, was ausgeführt wird, wenn Sie ausgeführt werden, startxoder xinituniversell.

Unabhängig davon, ob Sie ~/.xinitrcoder verwenden ~/.xsession, muss diese Datei (normalerweise ein Shell-Skript, aber nicht, wenn Sie wirklich etwas anderes verwenden möchten) alles vorbereiten, was vorbereitet werden muss (z. B. Tastatureinstellungen, Ressourcen, nicht gestartete Applets) durch den Fenstermanager usw.) und führen Sie am Ende das Programm aus, das die Sitzung verwaltet. Wenn das Skript endet, wird die Sitzung beendet. Normalerweise verwenden Sie execam Ende des Skripts, um das Skript durch den Sitzungs- oder Fenstermanager zu ersetzen.

Ihr System verfügt vermutlich über /usr/bin/startlxdeden systemweiten Standardsitzungsmanager. Unter Debian und Derivaten können Sie die verfügbaren Sitzungsmanager mit überprüfen

update-alternatives --list x-session-manager

Oder Sie erhalten eine ausführlichere Beschreibung, aus der hervorgeht, mit welcher Version Sie aktuell sind

update-alternatives --display x-session-manager

Wenn LXDE nicht die systemweite Standardeinstellung war und Sie es als Standardeinstellung für Ihr Konto festlegen wollten, können Sie die folgende ~/.xsessionDatei verwenden:

#!/bin/sh
exec startlxde

Bei einigen Unix-Varianten würde dies nur für grafische Anmeldungen und nicht für Anmeldungen ausgeführt startx, sodass Sie auch eine identische erstellen müssten ~/.xinitrc. (Oder nicht identisch: In ~/.xsessionmöchten Sie möglicherweise andere Aktionen ausführen, da dies die erste Datei ist, die in einer grafischen Sitzung ausgeführt wird. Beispielsweise können Sie sie ganz . ~/.profileoben platzieren, um einige Umgebungsvariablen festzulegen.)

Wenn Sie andere Umgebungen einmal ausprobieren möchten, können Sie ein anderes Programm angeben, das in der Befehlszeile von startxselbst ausgeführt werden soll. Das startxProgramm hat eine Besonderheit: Sie müssen den vollständigen Pfad zum Programm verwenden.

startx /usr/bin/startkde

Mit dem startxBefehl können Sie auch Argumente angeben, die an den Server übergeben werden sollen. Wenn Sie beispielsweise mehrere GUI-Sitzungen gleichzeitig ausführen möchten, können Sie jedes Mal eine andere Anzeigenummer übergeben. Übergeben Sie die Serverargumente nach --in der Befehlszeile von startx.

startx /usr/bin/startkde -- :1
Gilles 'SO - hör auf böse zu sein'
quelle
Ich bin auf Debian 9. Meine Maschine bootet auf tty1. startxWenn ich angemeldet bin, wird die Standard-Xfce4-Sitzung gestartet. Vom Benutzer-Login meiner Frau auf tty1 oder tty2. Ihr startxBefehl lautet Cinnamon (angegeben in ~/.xsession). Für den zweiten X-Server muss ich nicht angeben, $DISPLAYwie im letzten Teil Ihrer Antwort vermerkt. Obwohl das sicherlich funktioniert. Es macht es automatisch zum zweiten $DISPLAYusw. Das Setup ist jedoch großartig. Es gibt kein An- und Abmelden bei einer grafischen Sitzung, nur eine Tastenkombination zum Wechseln von Benutzerprofilen. Danke für diese hilfreiche Antwort!
Jbrock
10

Nein: startxist konfigurierbar. Laut Handbuchseite :

Um den auszuführenden Client zu bestimmen, suchen Sie startxzunächst nach einer Datei, die .xinitrcim Ausgangsverzeichnis des Benutzers aufgerufen wird . Wird dies nicht gefunden, wird die Datei xinitrcim xinitBibliotheksverzeichnis verwendet.

startxist nicht die einzige Möglichkeit, X zu starten (wie Sie sehen startlxde). Die startxManualpage hilft wieder:

Das Startx-Skript ist ein Front-End für xinit (1) , das eine etwas schönere Benutzeroberfläche zum Ausführen einer einzelnen Sitzung des X Window-Systems bietet. Es wird oft ohne Argumente ausgeführt.

Auf der anderen Seite, wenn Sie eine GUI (LXDE, KDE, usw.), dann wählen mögen xdmund MTW-ähnliche Fahrzeuge wie kdm, gdmoder LightDMsind für die Auswahl verschiedene Desktop - Typen verwendet. Unter Debian verwende ich im Allgemeinen kdm, weil das verschiedene Desktoptypen erlaubt. Die Packager gdmverbieten die meisten Desktoptypen, was es für meine Anforderungen ungeeignet macht.

xdmverwendet einen anderen Satz von Skripten, um z. B. Ihr ~/.xsessionSkript zusammen mit Systemskripten zu starten . Die Doppelgänger ignorieren dies möglicherweise und verwenden ihre eigenen Skripte. Aber es ist ein Ausgangspunkt.

Thomas Dickey
quelle
Also, irgendwo in den conf-Dateien ist es geschrieben, um zum Beispiel LXDE auszuführen?
CuriousGuy
.xinitrcist ein Skript, das es konfigurierbar macht. Es könnte LXDE direkt ausführen, wenn dies codiert wird.
Thomas Dickey
1
startlxdeist kein Frontend für xinit, sondern ein Startprogramm für den LXDE-Sitzungsmanager. Es ist kein Ersatz für startx, es ist etwas, was Sie ausführen können ~/.xinitrc.
Gilles 'SO - hör auf böse zu sein'
Dann braucht es eine Dokumentation. Im Ernst, eine gute Antwort weist das OP in die Richtung der Dokumentation, anstatt zu versuchen, sie neu zu formulieren (es sei denn, man muss Kommentare zu der Dokumentation machen, um einen besseren Sinn daraus zu ziehen).
Thomas Dickey