Como determinar qual gerenciador de janelas está executando

157

Existe alguma maneira (como um comando ou variável de ambiente) para determinar o que gerenciador de janelas é o que está sendo executado ativamente na sessão atual?

    
por Anonymous 26.10.2011 / 22:39

10 respostas

130

Se você tem wmctrl instalado, a primeira linha de saída do comando

    wmctrl -m

mostrará o nome do gerenciador de janelas. Se você não tiver o wmctrl instalado, use o seguinte comando para instalá-lo:

    sudo apt-get install wmctrl

Observação: man wmctrl (ou seja, a man página para wmctrl ) diz em parte:

% bl0ck_qu0te%

No meu sistema # 23-Ubuntu x86_64 / metacity 2.34.1 genérico do Ubuntu 11.10 / Linux 3.0.0-14-genérico, a primeira linha de saída de wmctrl -m foi: Name: Metacity
enquanto echo $DESKTOP_SESSION mostrou ubuntu-2d e echo $XDG_CURRENT_DESKTOP mostrou Unity .

Em uma nova instalação do Ubuntu 15.10 do software Ubuntu desktop em um laptop antigo, a primeira linha de saída de wmctrl -m foi: Name: Compiz
enquanto os valores de DESKTOP_SESSION e XDG_CURRENT_DESKTOP eram ubuntu e Unity

    
por James Waldby - jwpat7 05.01.2012 / 08:57
86

Nos sistemas Linux, testei as variáveis de ambiente XDG_CURRENT_DESKTOP e GDMSESSION e obtive os seguintes resultados.

% bl0ck_qu0te%

Ubuntu 18.04 (Ubuntu)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu

Ubuntu 18.04 (Ubuntu no Wayland)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu-wayland

Ubuntu 16.04

Unidade (7)

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Ubuntu 14.04

Unidade sendo executada com o Mir

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Nota MIR_SERVER_NAME também é definido

  • MIR_SERVER_NAME=session-$NUMBER

Unity em execução sem o Mir

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

XFCE

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xfce

Ubuntu 12,04

KDE

  • XDG_CURRENT_DESKTOP=
  • GDMSESSION=kde-plasma

Unity 3d

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Unidade 2d

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu-2d

Gnome

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-shell

Gnome Classic

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-classic

Gnome Classic (sem efeitos)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-fallback

Outras distribuições baseadas no Ubuntu

Hortelã 13 (canela)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=cinnamon

Mint 16 (edição do KDE)

  • XDG_CURRENT_DESKTOP=KDE
  • GDMSESSION=default

Hortelã 17 (canela)

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=default

Lubuntu 12,04

  • XDG_CURRENT_DESKTOP=LXDE
  • GDMSESSION=Lubuntu

Wasta 14.04 / 18.04

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=cinnamon

Wasta 14.04 usando a área de trabalho do Gnome.

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome

Ubuntu Mate 18.04

  • XDG_CURRENT_DESKTOP=MATE
  • GDMSESSION=mate

Xubuntu 18.04

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xubuntu
por Tom 10.12.2012 / 21:38
40

No terminal, digite env para ver todas as variáveis de ambiente. Alguns deles são:

XDG_CURRENT_DESKTOP - Informa qual ambiente de área de trabalho você está usando

GDMSESSION - Informa qual opção você selecionou do monitor do lightdm para fazer login.

Para usá-los, vá até o terminal e digite:

echo $XDG_CURRENT_DESKTOP

(Irá produzir, por exemplo, 'unity' se você estiver usando o Unity)

ou

echo $GDMSESSION  

(Irá sair por exemplo 'ubuntu' se você selecionou o ubuntu no login ou 'ubuntu-2d' se você selecionou aquele no login.)

Você tem outras pessoas se observar mais de perto a saída de env , como DESKTOP_SESSION e COMPIZ_CONFIG_PROFILE

Como o que você está procurando é o nome do que o Gerenciador de Janelas está em uso, a única maneira de ver como conseguir isso é procurando na lista de processos. Para fazer isso, existe um comando chamado pgrep ( Wikipedia ). Eu fiz o seguinte para obter o nome desde o parâmetro -l adiciona o ID do processo:

pgrep -l compiz |cut -d " " -f2 desde que o processo está sendo executado pelo mesmo usuário, não há necessidade de prefixar a parte do sudo. Você pode usar isso para criar um script que faça uma ação com base no Gerenciador de Janelas.

Para procurar outros tipos, basta alterar a palavra compiz para outra, como mutter , kwin , etc.

    
por Luis Alvarado 26.10.2011 / 23:57
20

Eu achei o pstree como uma grande ajuda.

Instalação

sudo apt-get install pstree

saída

Isso é o que eu consegui.

 ├─lightdm─┬─Xorg───2*[{Xorg}]
 │         ├─lightdm─┬─gnome-session─┬─bluetooth-apple───2*[{bluetooth-apple}]
 │         │         │               ├─compiz─┬─sh───gtk-window-deco───2*[{gtk-window-deco}]
 │         │         │               │        └─5*[{compiz}]
 │         │         │               ├─deja-dup-monito───2*[{deja-dup-monito}]
 │         │         │               ├─gnome-fallback-───2*[{gnome-fallback-}]
 │         │         │               ├─gnome-screensav───2*[{gnome-screensav}]
 │         │         │               ├─gnome-settings-───2*[{gnome-settings-}]
 │         │         │               ├─nautilus───2*[{nautilus}]
 │         │         │               ├─nm-applet───2*[{nm-applet}]
 │         │         │               ├─polkit-gnome-au───2*[{polkit-gnome-au}]
 │         │         │               ├─ssh-agent
 │         │         │               ├─telepathy-indic───2*[{telepathy-indic}]
 │         │         │               ├─update-notifier───2*[{update-notifier}]
 │         │         │               ├─vino-server───2*[{vino-server}]
 │         │         │               ├─zeitgeist-datah───{zeitgeist-datah}
 │         │         │               └─3*[{gnome-session}]
 │         │         └─{lightdm}
 │         └─2*[{lightdm}]
    
por Sridhar-Sarnobat 22.04.2014 / 06:59
8
xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t 
    
por ruario 15.05.2014 / 08:19
3

Eu tenho testado também com o KDE e minha conclusão é:

a) Forma gráfica, com HardInfo: a resposta é normalmente em "Sistema Operacional" > "Desktop Environment", mas se não, você pode olhar para "variáveis de ambiente". O HardInfo está pronto com todas as distribuições testadas, exceto a do KDE, mas pode ser fácil e rapidamente instalada (apenas 2 pacotes no Linux Mint 13).

b) Linha de comando, com este comando: ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm" . O item que aparece em mais linhas deve ser a resposta (se houver um empate, o item com "sessão" deve ser a solução).

    
por Msedfi 16.04.2013 / 00:51
1

Nenhuma das opções acima funcionou para mim, eu só queria saber se o Gnome estava sendo executado como a minha atual sessão de desktop.

Isso é o que funcionou, abra um terminal

lsb_release -a

(para verificar qual sabor ou versão eu tinha instalado na minha máquina UBUNTU)

ls /usr/bin/*session

(lança o ambiente de desktop / sessão de desktop atualmente em uso)

gnome-shell --version 

(para descobrir qual versão do gnome está instalada)

    
por NanuBuria 07.07.2017 / 18:26
-1

O script a seguir resultou como a melhor resposta para uma pergunta similar que eu postei no unix.se . Também funciona muito bem com o Unity e o LXDE.

if [ "$XDG_CURRENT_DESKTOP" = '' ]
then
  desktop=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*//')
else
  desktop=$XDG_CURRENT_DESKTOP
fi

desktop=${desktop,,}  # convert to lower case
echo "$desktop"
    
por Serge Stroobandt 24.02.2014 / 18:42
-1

Isso é possível com o dbus e o Serviço de Contas (ambos por padrão no Ubuntu).

$ qdbus --system org.freedesktop.Accounts \                                                                
> /org/freedesktop/Accounts/User1000 \                                                                                     
> org.freedesktop.Accounts.User.XSession                                                                                   
ubuntu
Vale notar que eu testei isso com o login através do lightdm (que é a tela gráfica de login), ele detectou um desktop clássico como o blackbox e obviamente detecta o Unity. Eu suspeito que este é um valor de que usuário seleciona na tela de login como sessão, é por isso que é um pouco mais fácil de usar que a verificação de processos

    
por Sergiy Kolodyazhnyy 03.04.2016 / 09:54
-3

Eu só posso pensar em verificar os gerenciadores de janelas conhecidos nos processos em execução. Costumava haver uma chave no gconf que estava configurada para o gerenciador de janelas preferido, mas foi descontinuado desde o Gnome 2.12.

Então, se isso é para um propósito de programação, sugiro que você pesquise por todos os gerenciadores de janelas do Linux; alguns populares são:

  • gnome-shell *
  • compiz
  • metacity
  • murmurar
  • sawfish

Você teria que executar uma verificação para cada um com o comando pgrep -l $WINDOW_MANAGER , onde $WINDOW_MANAGER é o nome do gerenciador de janelas que você deseja verificar. O comando pgrep verifica os processos em execução.

Eu não tenho 100% de certeza se o Gnome Shell é considerado um gerenciador de janelas; o restante dos gerenciadores de janelas que recebi de uma lista no script /usr/bin/gnome-wm . Este script, de fato, deve ser usável (já que está presente em uma instalação limpa), mas no meu caso ele tenta executar compiz , que não é meu gerenciador de janelas padrão (não na minha sessão do Gnome).

EDITAR:

Bem, o comentário de @Anarci parece ser mais preciso. No meu caso, mostrei gnome-shell .

    
por Severo Raz 26.10.2011 / 23:32