Esiste un semplice comando linux che mi dirà qual è il mio display manager?


Risposte:


46

Sfortunatamente la configurazione differisce per ogni distribuzione:

Debian / Ubuntu

/etc/X11/default-display-manager

RedHat (dovrebbe applicarsi anche a Fedora)

/etc/sysconfig/desktop

OpenSuSe

/etc/sysconfig/displaymanager

1
Eh, perché mi stai dicendo della configurazione ...?
ptrcao,

2
@ptrcao Perché specifica quale display manager stai usando.
Let_Me_Be

1
Supponiamo che non sappia quale sia il mio display manager e che voglio scoprirlo usando il terminale. Come potrei farlo?
ptrcao,

3
@ptrcao Guarderesti quei file. O aprendoli nel tuo editor preferito o semplicemente facendo cat.
Let_Me_Be

1
Ha solo una riga: /usr/bin/xdm- significa che xdm è il mio display manager?
ptrcao,

23

Non c'è. Il display manager non è necessariamente correlato a qualsiasi altra cosa in esecuzione sullo stesso server X. Il display manager viene eseguito prima dell'accesso; è scelto dall'amministratore di sistema. Tutto il resto (gestore di finestre, gestore di sessioni, ambiente desktop, ...) è scelto dall'utente. Non c'è nemmeno bisogno di un display manager: se accedi in modalità testo e avvii la GUI con startx, non è coinvolto nessun display manager.

Puoi controllare quale display manager è quello predefinito sul tuo sistema . Questo darà la risposta giusta solo con alcune ipotesi comuni ma non universali. Se hai eseguito manualmente un gestore diverso per qualsiasi motivo, questo metodo non te lo dirà.

Una buona scommessa è scoprire l'ID del processo del server X: il suo processo genitore è probabilmente un display manager, se ce n'è uno. Ciò richiede che i client siano in esecuzione sullo stesso computer del server X. lsof /tmp/.X11-unix/X${DISPLAY#:}mostrerà il processo del server X (supponendo che i socket X siano attivi /tmp/.X11-unix).

x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)

(Spiegazione: lsof -F ''stampa l'output come p1234. L' -Fopzione indica un formato di output analizzabile dalla macchina e ''significa stampare solo il PID, con la lettera pprima di esso. x=${x#p}Toglie la lettera iniziale p. L'ultima riga ottiene il PID del padre del server X ( ps -o ppid -p $x) e chiama psper mostrare informazioni su quel processo genitore.)

Alcune distribuzioni consentono l'installazione di più display manager. Ce ne sarà solo uno in esecuzione a meno che tu non abbia un sistema multiseat. Per elencare tutti i pacchetti di display manager installati in Debian e derivati:

aptitude -F %p search '~i ~P^x-display-manager$'

o

</var/lib/dpkg/status awk '
    /^Package: / {package = $2}
    /^Provides: .*x-display-manager/ {print package}'

18

Se si utilizza la distribuzione basata su systemd . Questo comando fornirà il nome del gestore di visualizzazione attualmente configurato poiché è possibile che sia installato più di un gestore di visualizzazione.

grep '/usr/s\?bin' /etc/systemd/system/display-manager.service

OUTPUT sarà qualcosa di simile

ExecStart=/usr/bin/mdm

Sembra che sto usando il display manager di zecca.


3
Hai presentato un classico esempio di uso inutile del gatto : è perfettamente accettabile e persino preferibile dirlo grep '/usr/bin' /etc/systemd/system/display-manager.service. (E, a rigor di termini, dal momento /usr/binche non contiene personaggi speciali per la shell, non è necessario citarlo - ma non fa male.)
G-Man dice 'Reinstate Monica'

6
L '"uso inutile del gatto" è sempre piuttosto relativo. Preferisco modificare l'ultima stringa di cat <file> | grep <searchterm>anziché la seconda di grep <searchterm> <file>quando si esegue il grepping.
sabato

1
Questa risposta dovrebbe essere la prima che vedi, dato che la maggior parte degli utenti che hanno questo tipo di domande oggi eseguono distribuzioni basate su systemd. Grazie. Mi ha aiutato
Adergaard,

3
@allsyed il mio file non ha / usr / bin ha / usr / sbin. Linux-Mint 18
Prvt_Yadav,

2
Nel mio caso (Centos 7) devo scrivere | grep '/ usr / sbin'
Davide

16

Se stai usando systemd, allora

systemctl status display-manager

Visualizzerà il nome e lo stato del servizio di gestione display attivo sul tuo computer.


Con Debian 9, questo è l'unico che ha funzionato per me. Gli altri metodi systemd non hanno restituito nulla.
mickeyf_supports_Monica

10

Il nome del gestore display dovrebbe essere in DESKTOP_SESSION

echo $DESKTOP_SESSION

restituisce "gnome" per me.

EDIT
Hai ragione. Lo faranno avanti e indietro su bugzilla degli XFCE, quindi probabilmente non è molto affidabile.


@frabjous: che dire di gdm e kdm? Sono anche display manager o solo login manager?
ptrcao,

Devo aver cancellato accidentalmente il commento di frabjous appena sopra perché ricordo che ha notato che Gnome è un ambiente desktop, non un display manager. Questa discussione è
piena di

Questo fornisce informazioni su ... la sessione desktop, che probabilmente sarà la stessa cosa del tuo ambiente desktop, ma potrebbe essere qualcos'altro se non stai usando un ambiente desktop o hai una configurazione particolare. Sulla macchina dove sto scrivendo questo, $DESKTOP_SESSIONè unknown.
Gilles 'SO- smetti di essere malvagio' il

+1, echo $ DESKTOP_SESSION restituisce anche gnome a me ... ma forse questo funziona solo per gnome?
Trevor Boyd Smith,

Se funziona solo con gnome, questo comando ti aiuterà solo a dedurre "si hai Gnome o no non hai gnome". Quando la domanda vuole scoprire di più.
Trevor Boyd Smith,

2

Come ha detto @Gilles, il display manager avvierà il tuo ambiente desktop.

Secondo il Debian Wiki , principalmente questi finiscono con dm, l'unica eccezione è slim.

Quindi questo dovrebbe bastare per la maggior parte delle esigenze delle persone:

ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$

O per essere sicuro, esiste come processo parent e non viene biforcato (tranne che dal sistema init):

ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$" 

1
Questa è l'unica soluzione qui che ha funzionato per me. Ho scoperto che il mio Fedora 23 minimal con il componente aggiuntivo LXDE (non LXDE Spin) è in esecuzione lightdm. La soluzione RedHat / Fedora dalla risposta migliore non ha funzionato, la configurazione sembra essersi spostata.
Daniel Saner,


0

Come già accennato, c'è molta confusione in questo thread. La domanda originale è quale display manager, non desktop manager o window manager. Attualmente sto eseguendo Xfwm4 che è Xfce window manager e lxdm che è un leggero display manager X11 (da LXDE, non Xfce). Dovresti essere in grado di vedere quale display manager stai utilizzando tramite htop. Probabilmente da tempo hai scoperto la risposta negli ultimi 4 anni :)


In realtà non lo ha mai fatto ... In effetti ha rinunciato del tutto a Linux e è passato al lato oscuro: D
ptrcao,

0

Puoi farlo tramite uno script di terze parti chiamato screenfetch

Screenfetch è uno script bash disponibile per Linux che visualizza le informazioni di sistema insieme alla versione ASCII del logo di distribuzione Linux del sistema

Installa tramite gestore pacchetti sudo apt-get install screenfetch(supponendo che tu sia nelle varianti Debian)

e corri screenfetch nel tuo terminale

Link al progetto https://github.com/KittyKatt/screenFetch


-1

X è altamente modulare, quindi se lo volevi davvero, sì, potresti mescolare ambienti desktop e gestori di windows. Dopotutto un gestore di finestre è solo un modo per dipingere finestre (questa è la vista semplice).

Quindi se prendi gnome, metacity era il gestore di windows ma ora è stato sostituito da Mutter.

Il problema con il mixaggio è nei moderni ambienti desktop, desktop e window manager sono fortemente legati l'uno all'altro. Troppa miscelazione potrebbe finire con meno funzionalità.

Come già detto $ DESKTOP_SESSION funziona, ma se vuoi chiedere al tuo server X11, puoi farlo:

xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME

Che si decompone in

xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"

Che ottiene l'id della finestra creata dal gestore delle finestre. Le specifiche dicono (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.

E poi chiedi la proprietà WM_NAME di detta finestra.

WM_NAME essendo:

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). 

@frabjous: Xfwm4 è il gestore di finestre Xfce. È lo stesso di un display manager?
ptrcao,

@Mathieu Stai parlando di gestori di finestre, non di gestori di display.
Let_Me_Be

@Let_Me_Be Vero, ma la maggior parte delle volte, il tuo window manager è legato al tuo display manager ... Quanto spesso usi gnome window manager con kde e viceversa? E funziona davvero perché gdm / kdm / qualunque cosa ti permetta di selezionare il tuo display manager, il che significa che leggere il file di configurazione come hai menzionato non funziona se non usi il valore predefinito fornito ...
Mathieu

_NET_SUPPORTING_WM_CHECKfornisce informazioni sul gestore finestre, non sul gestore display. Non funziona nemmeno sempre; sul mio sistema, quella proprietà è impostata su un ID finestra ma la finestra in questione non ha un nome.
Gilles 'SO- smetti di essere malvagio' il

@Mathieu Dipende dalle distribuzioni. Di solito quando installi una versione KDE della distribuzione, ottieni KDM e quando una versione gnome, ottieni GDM. Ma le cose che vedrai sempre di più sono il supporto ufficiale per un solo display manager (di solito una variante più leggera di GDM / KDM).
Let_Me_Be

-2
lshw -c video | grep 'configuration'

3
Un po 'di spiegazione sarebbe carino.
phk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.