Esiste un semplice comando linux che mi dirà qual è il mio display manager?
Sto usando Xfce. I diversi ambienti desktop sono generalmente affiliati con diversi display manager?
Esiste un semplice comando linux che mi dirà qual è il mio display manager?
Sto usando Xfce. I diversi ambienti desktop sono generalmente affiliati con diversi display manager?
Risposte:
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
cat
.
/usr/bin/xdm
- significa che xdm è il mio display manager?
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' -F
opzione indica un formato di output analizzabile dalla macchina e ''
significa stampare solo il PID, con la lettera p
prima 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 ps
per 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}'
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.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (E, a rigor di termini, dal momento /usr/bin
che non contiene personaggi speciali per la shell, non è necessario citarlo - ma non fa male.)
cat <file> | grep <searchterm>
anziché la seconda di grep <searchterm> <file>
quando si esegue il grepping.
Se stai usando systemd, allora
systemctl status display-manager
Visualizzerà il nome e lo stato del servizio di gestione display attivo sul tuo computer.
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.
$DESKTOP_SESSION
è unknown
.
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$"
lightdm
. La soluzione RedHat / Fedora dalla risposta migliore non ha funzionato, la configurazione sembra essersi spostata.
In alcuni casi, wmctrl potrebbe aiutare. Questa utility è compatibile con molti gestori di windows.
wmcrt -m
dovrebbe visualizzare il nome del gestore finestre attualmente utilizzato.
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 :)
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
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).
_NET_SUPPORTING_WM_CHECK
fornisce 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.