Existe um comando linux simples que me diga qual é o meu gerenciador de exibição?
Estou usando o Xfce. Os diferentes ambientes de desktop geralmente são afiliados a diferentes gerenciadores de exibição?
Existe um comando linux simples que me diga qual é o meu gerenciador de exibição?
Estou usando o Xfce. Os diferentes ambientes de desktop geralmente são afiliados a diferentes gerenciadores de exibição?
Respostas:
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
cat
.
/usr/bin/xdm
- isso significa que xdm é meu gerenciador de exibição?
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 -F
opção significa um formato de saída analisável pela máquina e ''
significa imprimir apenas o PID, com a letra p
antes 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 ps
para 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}'
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ã.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (E, estritamente falando, já /usr/bin
que não contém nenhum caractere especial do shell, você não precisa citá-lo - mas não dói.)
cat <file> | grep <searchterm>
vez da segunda grep <searchterm> <file>
quando grepping.
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.
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.
$DESKTOP_SESSION
está unknown
.
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$"
lightdm
. A solução RedHat / Fedora da resposta superior não funcionou, a configuração parece ter mudado.
Em alguns casos, o wmctrl pode 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 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 :)
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
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).
_NET_SUPPORTING_WM_CHECK
fornece 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.