Existe um comando linux simples que me diga qual é o meu gerenciador de exibição?


Respostas:


46

Infelizmente, a configuração difere para cada distribuição:

Debian / Ubuntu

/etc/X11/default-display-manager

RedHat (também deve se aplicar ao Fedora)

/etc/sysconfig/desktop

OpenSuSe

/etc/sysconfig/displaymanager

11
Por que você está me falando sobre configuração ...?
ptrcao 9/09/11

2
@ptrcao Porque especifica qual gerenciador de exibição você está usando.
Let_Me_Be 9/09/11

11
Suponha que eu não saiba o que é meu gerenciador de exibição e quero descobrir usando o terminal. Como eu faria isso?
ptrcao 9/09/11

3
@ptrcao Você procuraria nesses arquivos. Ou abri-los em seu editor favorito ou apenas fazer cat.
Let_Me_Be 9/09/11

11
Ele possui apenas uma linha: /usr/bin/xdm- isso significa que xdm é meu gerenciador de exibição?
ptrcao 9/09/11

23

Não existe. O gerenciador de exibição não está necessariamente relacionado a qualquer outra coisa em execução no mesmo servidor X. O gerenciador de exibição é executado antes de você efetuar o login; é escolhido pelo administrador do sistema. Todo o resto (gerenciador de janelas, gerenciador de sessões, ambiente de desktop,…) é escolhido pelo usuário. Nem é preciso haver um gerenciador de exibição: se você efetuar login no modo de texto e iniciar a GUI startx, nenhum gerenciador de exibição estará envolvido.

Você pode verificar qual gerenciador de exibição é o padrão no seu sistema . Isso só dará a resposta certa sob algumas suposições comuns, mas não universais. Se você executou manualmente um gerente diferente por qualquer motivo, esse método não informa.

Uma boa aposta é descobrir o ID do processo do servidor X: seu processo pai provavelmente é um gerenciador de exibição, se houver um. Isso requer que seus clientes estejam executando na mesma máquina que o servidor X. lsof /tmp/.X11-unix/X${DISPLAY#:}mostrará o processo do servidor X (assumindo que os soquetes X estejam ativos /tmp/.X11-unix).

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

(Explicação: lsof -F ''imprime a saída como p1234. A -Fopção significa um formato de saída analisável pela máquina e ''significa imprimir apenas o PID, com a letra pantes dela. x=${x#p}Retira a letra inicial p. A última linha obtém o PID do pai do servidor X ( ps -o ppid -p $x) e chamadas pspara mostrar informações sobre esse processo pai.)

Algumas distribuições permitem a instalação de vários gerenciadores de exibição. Só haverá um único em execução, a menos que você tenha um sistema de vários lugares. Para listar todos os pacotes do gerenciador de exibição instalados no Debian e derivados:

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

ou

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

18

Se você estiver usando a distribuição baseada em systemd . Este comando fornecerá o nome do gerenciador de exibição configurado atualmente, porque você pode ter mais de um gerenciador de exibição instalado.

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

OUTPUT será algo como

ExecStart=/usr/bin/mdm

Parece que estou usando o gerenciador de exibição de hortelã.


3
Você apresentou um exemplo clássico de um uso inútil de gato - é perfeitamente aceitável e até preferível dizer grep '/usr/bin' /etc/systemd/system/display-manager.service. (E, estritamente falando, já /usr/binque não contém nenhum caractere especial do shell, você não precisa citá-lo - mas não dói.)
G-Man diz 'Reinstate Monica'

6
'uso inútil de gato' é sempre um tanto relativo. Prefiro editar a última string em cat <file> | grep <searchterm>vez da segunda grep <searchterm> <file>quando grepping.
sjas

11
Essa resposta deve ser a primeira que você vê, já que a maioria dos usuários que hoje tem esse tipo de pergunta está executando distribuições baseadas em systemd. Obrigado. Isso me ajudou.
Adergaard

3
@allsyed meu arquivo não possui / usr / bin, possui / usr / sbin. Linux-Mint 18
Prvt_Yadav

2
No meu caso (Centos 7) eu tenho que escrever | grep '/ usr / sbin'
Davide

16

Se você estiver usando o systemd, então

systemctl status display-manager

Irá exibir o nome e o status do serviço gerenciador de exibição ativo em sua máquina.


Com o Debian 9, este é o único que funcionou para mim. Os outros métodos systemd não retornaram nada.
mickeyf 03/07

10

O nome do gerente de exibição deve estar em DESKTOP_SESSION

echo $DESKTOP_SESSION

retorna "gnome" para mim.

EDIT
Você está certo. Eles estão indo e voltando sobre isso no bugzilla dos XFCEs, então provavelmente não é muito confiável.


@frabjous: E o gdm e o kdm? Eles também são gerentes de exibição ou apenas gerenciadores de login?
ptrcao 9/09/11

Devo ter excluído acidentalmente o comentário frabjous 'acima, porque lembro que ele comentou que o Gnome é um ambiente de área de trabalho, não um gerenciador de exibição. Esta discussão é abundam com a confusão ...
ptrcao

Isso fornece informações sobre ... a sessão da área de trabalho, que provavelmente é a mesma coisa que seu ambiente de área de trabalho, mas pode ser outra coisa se você não estiver usando um ambiente de área de trabalho ou tiver uma configuração peculiar. Na máquina em que estou escrevendo isso, $DESKTOP_SESSIONestá unknown.
Gilles 'SO- stop be evil'

+1, echo $ DESKTOP_SESSION também retorna o gnome para mim ... mas talvez isso funcione apenas para o gnome?
Trevor Boyd Smith

Se funcionar apenas para o gnome, este comando ajudará você a deduzir "sim, você possui o Gnome ou não, não o possui". Quando a pergunta quer descobrir mais do que isso.
Trevor Boyd Smith

2

Como o @Gilles disse, o gerenciador de telas iniciará seu ambiente de desktop.

De acordo com o Debian Wiki , a maioria termina com dm, apenas uma exceção slim.

Portanto, isso deve ser suficiente para a maioria das necessidades das pessoas:

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

Ou, com certeza, ele existe como um processo pai e não é bifurcado (exceto no sistema init):

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

11
Esta é a única solução aqui que funcionou para mim. Descobri que meu Fedora 23 mínimo com o complemento LXDE (não o LXDE Spin) está sendo executado lightdm. A solução RedHat / Fedora da resposta superior não funcionou, a configuração parece ter mudado.
21716 Daniel Saner


0

Como já mencionado, há muita confusão neste segmento. A pergunta original é o gerenciador de exibição, não o gerenciador de desktop ou o gerenciador de janelas. Atualmente, estou executando o Xfwm4, que é o gerenciador de janelas do Xfce, e o lxdm, o gerenciador de exibição leve do X11 (do LXDE, não do Xfce). Você poderá ver qual gerenciador de exibição está usando via htop. Você provavelmente já descobriu a resposta há 4 anos :)


Na verdade, nunca desistiu ... De fato, desistiu completamente do Linux e passou para o lado obscuro: D
ptrcao

0

Você pode fazer isso por meio de um script de terceiros chamado screenfetch

Screenfetch é um script bash disponível para Linux que exibe informações do sistema ao lado da versão ASCII da distribuição Linux. Logo do sistema

Instale via gerenciador de pacotes sudo apt-get install screenfetch(assumindo que você esteja nas variantes do Debian)

e apenas corra screenfetch no seu terminal

Link do projeto https://github.com/KittyKatt/screenFetch


-1

O X é altamente modular, portanto, se você realmente quisesse, sim, você poderia misturar ambientes de desktop e gerenciadores de janelas. Afinal, um gerenciador de janelas é apenas uma maneira de pintar janelas (essa é a visão simples).

Então, se você usa o gnome, a metacidade costumava ser o gerenciador de janelas, mas agora foi substituída pelo Mutter.

O problema da mixagem está em ambientes modernos de desktop, o gerenciador de desktop e janela está altamente ligado um ao outro. Muita mistura pode acabar com menos funcionalidades.

Como mencionado, $ DESKTOP_SESSION funciona, mas se você quiser perguntar ao seu servidor X11, poderá fazer o seguinte:

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

Que se decompõe em

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

Que obtém o ID da janela criada pelo gerenciador de janelas. As especificações dizem (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 então você pede a propriedade WM_NAME da referida janela.

WM_NAME sendo:

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 é o gerenciador de janelas do Xfce. É o mesmo que um gerente de exibição?
ptrcao 9/09/11

@ Mathieu Você está falando sobre gerenciadores de janelas, não sobre gerenciadores de exibição.
Let_Me_Be 9/09/11

@Let_Me_Be True, mas na maioria das vezes, o seu gerenciador de janelas está vinculado ao seu gerenciador de exibição ... Com que frequência você usa o gerenciador de janelas gnome com o kde e vice-versa? E ele realmente funciona porque gdm / kdm / whatever permitir que você selecione o seu gerenciador de exibição, ou seja, a leitura do arquivo de configuração como você mencionou não funciona se você não usar o padrão fornecido ...
Mathieu

_NET_SUPPORTING_WM_CHECKfornece informações sobre o gerenciador de janelas, não sobre o gerenciador de exibição. Nem sempre funciona; no meu sistema, essa propriedade é definida como um ID da janela, mas a janela em questão não tem um nome.
Gilles 'SO- stop be evil'

@ Mathieu Isso depende das distribuições. Geralmente, quando você instala uma versão KDE da distribuição, você obtém o KDM e, quando uma versão gnome, o GDM. Mas o que você verá cada vez mais é o suporte oficial para apenas um gerenciador de exibição (geralmente uma variante mais leve que o GDM / KDM).
Let_Me_Be

-2
lshw -c video | grep 'configuration'

3
Um pouco de explicação seria legal.
Php1
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.