Gibt es einen einfachen Linux-Befehl, der mir sagt, was mein Display-Manager ist?
Ich benutze Xfce. Sind verschiedene Desktop-Umgebungen normalerweise mit verschiedenen Display-Managern verbunden?
Gibt es einen einfachen Linux-Befehl, der mir sagt, was mein Display-Manager ist?
Ich benutze Xfce. Sind verschiedene Desktop-Umgebungen normalerweise mit verschiedenen Display-Managern verbunden?
Antworten:
Leider unterscheidet sich die Konfiguration für jede Distribution:
Debian / Ubuntu
/etc/X11/default-display-manager
RedHat (sollte auch für Fedora gelten)
/etc/sysconfig/desktop
OpenSuSe
/etc/sysconfig/displaymanager
cat
.
/usr/bin/xdm
- Bedeutet das, dass xdm mein Display-Manager ist?
Gibt es nicht Der Anzeigemanager ist nicht unbedingt mit etwas anderem verbunden, das auf demselben X-Server ausgeführt wird. Der Anzeigemanager wird ausgeführt, bevor Sie sich anmelden. Es wird vom Systemadministrator ausgewählt. Alles andere (Fenstermanager, Sitzungsmanager, Desktop-Umgebung, ...) wird vom Benutzer ausgewählt. Es muss nicht einmal ein Display-Manager vorhanden sein: Wenn Sie sich im Textmodus anmelden und die GUI mit starten startx
, ist kein Display-Manager beteiligt.
Sie können überprüfen, welcher Anzeigemanager der Standard in Ihrem System ist . Dies wird nur unter einigen allgemeinen, aber nicht universellen Annahmen die richtige Antwort geben. Wenn Sie aus irgendeinem Grund manuell einen anderen Manager ausgeführt haben, werden Sie bei dieser Methode nicht darauf hingewiesen.
Eine gute Wette ist es, die Prozess-ID des X-Servers herauszufinden: Der übergeordnete Prozess ist wahrscheinlich ein Display-Manager, falls vorhanden. Dies setzt voraus, dass Ihre Clients auf demselben Computer wie der X-Server ausgeführt werden. lsof /tmp/.X11-unix/X${DISPLAY#:}
zeigt den X-Server-Prozess an (vorausgesetzt, die X-Sockets sind aktiv /tmp/.X11-unix
).
x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)
(Erklärung: lsof -F ''
druckt die Ausgabe wie p1234
. Die -F
Option bedeutet ein maschinenparsbares Ausgabeformat und ''
bedeutet, dass nur die PID mit dem Buchstaben p
davor gedruckt wird. Entfernt x=${x#p}
den Anfangsbuchstaben p
. Die letzte Zeile erhält die PID des übergeordneten Elements des X-Servers ( ps -o ppid -p $x
) und Aufrufe ps
, um Informationen zu diesem übergeordneten Prozess anzuzeigen.)
Bei einigen Distributionen können mehrere Display Manager installiert werden. Es wird jedoch nur ein einziges System ausgeführt, es sei denn, Sie haben ein Multiseat-System. So listen Sie alle installierten Display Manager-Pakete unter Debian und Derivaten auf:
aptitude -F %p search '~i ~P^x-display-manager$'
oder
</var/lib/dpkg/status awk '
/^Package: / {package = $2}
/^Provides: .*x-display-manager/ {print package}'
Wenn Sie eine systembasierte Distribution verwenden. Dieser Befehl gibt den Namen des derzeit konfigurierten Display Managers an, da möglicherweise mehr als ein Display Manager installiert ist.
grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
OUTPUT wird ungefähr so sein
ExecStart=/usr/bin/mdm
Es sieht so aus, als würde ich den Minz-Display-Manager verwenden.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (Und genau genommen, da /usr/bin
es keine speziellen Zeichen für die Shell gibt, müssen Sie es nicht zitieren - aber es tut nicht weh.)
cat <file> | grep <searchterm>
die zweite grep <searchterm> <file>
Zeichenfolge.
Der Name des Display Managers sollte in DESKTOP_SESSION stehen
echo $DESKTOP_SESSION
gibt "gnome" für mich zurück.
BEARBEITEN
Sie haben recht. Sie gehen auf XFCEs Bugzilla hin und her, also ist es wahrscheinlich nicht sehr zuverlässig.
$DESKTOP_SESSION
ist unknown
.
Wie @Gilles bereits sagte, startet der Display-Manager Ihre Desktop-Umgebung.
Nach Angaben des Debian-Wikis enden diese meistens mit dm
, einzige Ausnahme ist slim
.
Dies sollte also für die meisten Bedürfnisse der Menschen ausreichen:
ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$
Oder um sicherzugehen, dass es als übergeordneter Prozess existiert und nicht gegabelt wird (außer vom Init-System):
ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$"
lightdm
. Die RedHat / Fedora-Lösung von der obersten Antwort hat nicht funktioniert, die Konfiguration scheint sich verschoben zu haben.
In einigen Fällen könnte wmctrl helfen. Dieses Dienstprogramm ist mit vielen Windows-Managern kompatibel.
wmcrt -m
sollte den Namen des aktuell verwendeten Fenstermanagers anzeigen.
Wie bereits erwähnt, gibt es in diesem Thread viel Verwirrung. Die ursprüngliche Frage ist, welcher Display Manager, nicht Desktop Manager oder Window Manager. Ich verwende derzeit Xfwm4, das Xfce-Fenstermanager ist, und lxdm, das leichter X11-Displaymanager ist (von LXDE, nicht Xfce). Sie sollten in der Lage sein zu sehen, welchen Anzeigemanager Sie über htop verwenden. Sie haben die Antwort in den letzten 4 Jahren wahrscheinlich schon lange entdeckt :)
Sie können dies über ein Drittanbieter-Skript namens screenfetch tun
Screenfetch ist ein für Linux verfügbares Bash-Skript, das neben der ASCII-Version des Linux-Distributionslogos des Systems Systeminformationen anzeigt
Installation über den Paketmanager
sudo apt-get install screenfetch
(vorausgesetzt, Sie verwenden Debian-Varianten)
und laufen
screenfetch
Sie einfach
in Ihrem Terminal
Projektlink https://github.com/KittyKatt/screenFetch
X ist sehr modular aufgebaut. Wenn Sie es wirklich wollten, können Sie Desktop-Umgebungen und Windows-Manager kombinieren. Schließlich ist ein Fenstermanager nur eine Möglichkeit, Fenster zu malen (das ist die einfache Ansicht).
Wenn Sie also Gnome nehmen, war Metacity früher der Windows-Manager, aber jetzt wurde er von Mutter ersetzt.
Das Problem beim Mischen liegt in modernen Desktop-Umgebungen. Desktop und Window Manager sind eng miteinander verbunden. Zu viel Mischen kann zu weniger Funktionalität führen.
Wie bereits erwähnt, funktioniert $ DESKTOP_SESSION, aber wenn Sie Ihren X11-Server fragen möchten, können Sie Folgendes tun:
xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME
Welches zerfällt in
xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"
Welches bekommt die ID des Fensters vom Fenstermanager erstellt. In den technischen Daten heißt es (http://standards.freedesktop.org/wm-spec/1.3/ar01s03.html):
_NET_SUPPORTING_WM_CHECK, WINDOW/32
The Window Manager MUST set this property on the root window to be the ID
of a child window created by himself, to indicate that a compliant window
manager is active.
Und dann fragen Sie nach der WM_NAME-Eigenschaft des Fensters.
WM_NAME ist:
The WM_NAME property is an uninterpreted string that the client wants the
window manager to display in association with the window (for example, in
a window headline bar).
_NET_SUPPORTING_WM_CHECK
Gibt Informationen über den Fenstermanager, nicht über den Anzeigemanager. Es funktioniert nicht immer; Auf meinem System ist diese Eigenschaft auf eine Fenster-ID festgelegt, das betreffende Fenster hat jedoch keinen Namen.