Infelizmente, a configuração é diferente para cada distribuição:
Debian / Ubuntu
/etc/X11/default-display-manager
RedHat (também deve ser aplicado ao Fedora)
/etc/sysconfig/desktop
OpenSuSe
/etc/sysconfig/displaymanager
Existe um comando linux simples que me dirá qual é o meu gerenciador de exibição?
Estou usando o Xfce. Os diferentes ambientes de área de trabalho geralmente são afiliados a diferentes gerenciadores de exibição?
Infelizmente, a configuração é diferente para cada distribuição:
Debian / Ubuntu
/etc/X11/default-display-manager
RedHat (também deve ser aplicado ao Fedora)
/etc/sysconfig/desktop
OpenSuSe
/etc/sysconfig/displaymanager
Não há. O gerenciador de exibição não está necessariamente relacionado a qualquer outra coisa que esteja sendo executada no mesmo servidor X. O gerenciador de exibição é executado antes de você efetuar login; é escolhido pelo administrador do sistema. Todo o resto (gerenciador de janelas, gerenciador de sessão, ambiente de desktop,…) é escolhido pelo usuário. Não precisa nem ter um gerenciador de exibição: se você entrar no modo de texto e iniciar a GUI com startx
, nenhum gerenciador de exibição está envolvido.
Você pode verificar qual gerenciador de exibição é o padrão em seu sistema . Isso só dará a resposta correta sob algumas suposições comuns, mas não universais. Se você executou manualmente um gerente diferente por qualquer motivo, esse método não lhe dirá.
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 (supondo que os soquetes X estejam em /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 opção -F
significa um formato de saída que pode ser analisado por máquina e ''
significa imprimir somente o PID, com a letra p
antes.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 chama ps
para mostrar informações sobre esse processo pai.
Algumas distribuições permitem instalar vários gerenciadores de exibição. Haverá apenas um único funcionando, a menos que você tenha um sistema de múltiplos-pratos. Para listar todos os pacotes gerenciadores 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}'
se você estiver usando a distribuição baseada em systemd . Esse comando fornecerá o nome do gerenciador de exibição atualmente ativo porque você pode ter mais de um gerenciador de exibição instalado.
cat /etc/systemd/system/display-manager.service | grep '/usr/bin'
OUTPUT será como
ExecStart=/usr/bin/mdm
Parece que estou usando o gerenciador de exibição de hortelã.
O nome do gerenciador de exibição deve estar em DESKTOP_SESSION
echo $DESKTOP_SESSION
retorna "gnome" para mim.
EDITAR
Você está certo. Eles estão indo e voltando em que em XFCEs bugzilla por isso provavelmente não é muito confiável.
Se você estiver usando o systemd, então
systemctl status display-manager
Exibe o nome e o status do serviço do gerenciador de exibição ativo em sua máquina.
Como @Gilles disse, o gerenciador de exibição iniciará seu ambiente de área de trabalho.
De acordo com o Debian Wiki , a maioria deles termina com dm
, apenas a 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, para ter 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$"
Em alguns casos, o wmctrl poderia ajudar. Este utilitário é compatível com muitos gerenciadores de janelas.
wmcrt -m
deve exibir o nome do gerenciador de janelas usado atualmente.
Como já mencionado, há muita confusão neste tópico. A pergunta original é o gerenciador de exibição, não o gerenciador de área de trabalho ou o gerenciador de janelas. Atualmente, estou executando o Xfwm4, que é o gerenciador de janelas Xfce, e o lxdm, que é um leve gerenciador de exibição X11 (do LXDE, não do Xfce). Você deve ser capaz de ver qual gerenciador de exibição está usando via htop. Você provavelmente já descobriu a resposta nos últimos 4 anos:)
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 junto com a versão ASCII do logotipo de distribuição Linux do sistema
Instalar via gerenciador de pacotes
sudo apt-get install screenfetch
(supondo que você esteja nas variantes do Debian)
e apenas execute %código% No seu terminal
Link do projeto link
O X é altamente modular, por isso, se você realmente quisesse, sim, 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ê pegar o gnome, o metacity costumava ser o gerenciador de janelas, mas agora ele foi substituído pelo Mutter.
O problema da mixagem está nos ambientes de desktop modernos, o desktop e o gerenciador de janelas estão altamente ligados uns aos outros. Muita mistura pode acabar em menos funcionalidades.
Como mencionado, o $ DESKTOP_SESSION funciona, mas se você quiser perguntar ao seu servidor X11, você pode fazer isso:
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"
Qual 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ê pergunta pela 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).
lshw -c video | grep 'configuration'