Existe alguma maneira (como um comando ou variável ambiental) de determinar qual gerenciador de janelas é o que está sendo executado ativamente na sessão atual?
fonte
Existe alguma maneira (como um comando ou variável ambiental) de determinar qual gerenciador de janelas é o que está sendo executado ativamente na sessão atual?
Se você wmctrl
instalou, a primeira linha de saída do comando
wmctrl -m
irá mostrar o nome do gerenciador de janelas. Se você não tiver wmctrl
instalado, use o seguinte comando para instalá-lo:
sudo apt-get install wmctrl
Observe man wmctrl
(isto é, a man
página para wmctrl
) diz em parte:
-m Exibe informações sobre o gerenciador de janelas ...
No meu sistema Ubuntu 11.10 / Linux 3.0.0-14-generic # 23-Ubuntu x86_64 / metacity 2.34.1, a primeira linha de saída wmctrl -m
foi: Name: Metacity
enquanto echo $DESKTOP_SESSION
mostrada ubuntu-2d
e echo $XDG_CURRENT_DESKTOP
mostrada Unity
.
Em um novo Ubuntu 15.10 instalação do Ubuntu desktop
software em um laptop antigo, a primeira linha de saída de wmctrl -m
era: Name: Compiz
enquanto os DESKTOP_SESSION
e XDG_CURRENT_DESKTOP
valores foram ubuntu
eUnity
ssh -Y {host} 'wmctrl -m'
retorna alguns valores (por exemplo, "Name: Compiz" e vários N / A), mas faz sentido quessh
haja informações limitadas sobre o gerenciador de janelas.wmctrl -d
(Liste todos os desktops gerenciados pelo gerenciador de janelas) ouwmctrl -l
(Liste as janelas gerenciadas pelo gerenciador de janelas) funcionam bem no Xubuntu Wily com o Window Maker?Em sistemas Linux Eu testei variáveis de ambiente
XDG_CURRENT_DESKTOP
eGDMSESSION
e obteve os seguintes resultados.Ubuntu 18.04 (Ubuntu)
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu
Ubuntu 18.04 (Ubuntu em Wayland)
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu-wayland
Ubuntu 16.04
Unidade (7)
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Ubuntu 14.04
Unidade rodando com Mir
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Nota MIR_SERVER_NAME também está definido
MIR_SERVER_NAME=session-$NUMBER
Unidade rodando sem Mir
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
XFCE
XDG_CURRENT_DESKTOP=XFCE
GDMSESSION=xfce
Ubuntu 12.04
KDE
XDG_CURRENT_DESKTOP=
GDMSESSION=kde-plasma
Unidade 3d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Unidade 2d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu-2d
Gnomo
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 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
fonte
No tipo de terminal,
env
para ver todas as variáveis de ambiente. Alguns deles são:XDG_CURRENT_DESKTOP - Informa qual ambiente de desktop você está usando
GDMSESSION - Informa qual opção você selecionou no greet lightdm para efetuar login.
Para usá-los, vá para o terminal e digite:
(Produzirá, por exemplo, 'unity' se você estiver usando o Unity)
ou
(Produzirá, por exemplo, 'ubuntu' se você selecionou o ubuntu no logon ou 'ubuntu-2d' se você selecionou aquele no logon.)
Você tem outros se você olhar mais de perto a saída de
env
como DESKTOP_SESSION e COMPIZ_CONFIG_PROFILEComo o que você está procurando é o nome do que o Window Manager está em uso, a única maneira de ver como obter isso é consultando a lista de processos. Para fazer isso, existe um comando chamado
pgrep
( Wikipedia ). Fiz o seguinte para obter o nome, pois o parâmetro -l adiciona o ID do processo:pgrep -l compiz |cut -d " " -f2
como o processo está sendo executado pelo mesmo usuário, não há necessidade de prefixar a parte sudo. Você pode usar isso para criar um script que executa uma ação baseada no Gerenciador de Janelas.Para procurar outros tipos, basta alterar a palavra
compiz
a outro comomutter
,kwin
, etc ..fonte
$XDG_CURRENT_DESKTOP
é o ambiente de desktop atual, NÃO o gerenciador de janelas.Eu achei
pstree
uma grande ajuda.Instalação
resultado
Isto é o que eu tenho.
fonte
fonte
)
no final.xprop -root -notype
exibe todas as propriedades da janela raiz (e omite tipos para facilitar a análise), a saída é enviada paraawk
via pipe; 2. aawk
instrução$1=="_NET[blah]CK:"{print $5}'
compara a primeira coluna de cada linha da entrada que ela passou pelo pipe com uma determinada string e, se encontrar a correspondência, executa o código entre parênteses, que imprime a quinta coluna dessa linha - o mesmo acontece (inteiramente por acidente, Aposto que) é o ID do átomo "_NET_SUPPORTING_WM_CHECK"; 3. esse ID é usado novamente para obter as propriedades do Windows Manager comxprop -id
Eu também testei com o KDE e minha conclusão é:
a) Maneira gráfica, com HardInfo: a resposta está normalmente em "Sistema operacional"> "Ambiente de área de trabalho", mas, caso contrário, você pode procurar em "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 instalado (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).fonte
gnome-...
processos (e um hit kde comkdevtmpfs
)Nenhuma das opções acima realmente funcionou para mim, eu só queria saber se o Gnome estava sendo executado como minha sessão atual da área de trabalho.
Isto é o que funcionou, abra um terminal
(para verificar qual sabor ou versão eu tinha instalado na minha máquina UBUNTU)
(inicia qual sessão / ambiente de área de trabalho atualmente em uso)
(para descobrir qual versão do gnome está instalada)
fonte
Ou em uma linha:
fonte
Isso é possível com o dbus e o Accounts Service (ambos por padrão no Ubuntu).
Vale ressaltar que eu testei isso com o login através do lightdm (que é a tela gráfica de login), ele detectou uma área de trabalho clássica como o blackbox e, obviamente, o Unity. Eu suspeito que esse é um valor do que o usuário seleciona na tela de login como sessão, por isso é um pouco mais fácil usar essa verificação de processos
fonte
Roteiro
O script a seguir resultou como a melhor resposta a uma semelhante pergunta que eu postei sobre a unix.se . Também funciona muito bem com o Unity e o LXDE.
fonte
Você pode usar a ferramenta chamada
inxi
. Pode ser obtido nos repositórios do Ubuntu por:sudo apt install inxi
ou no github: https://github.com/smxi/inxi
Basta executar o comando da seguinte maneira:
Observe a
Desktop: i3
parte. No meu caso, o gerenciador de janelas que eu uso éi3
.A opção
-S
exibe informações do sistema ex
adiciona informações sobre o gerenciador de janelas.fonte
Só consigo pensar em procurar gerenciadores de janelas conhecidos nos processos em execução. Costumava haver uma chave no gconf que foi configurada para o gerenciador de janelas preferido, mas está obsoleta desde o Gnome 2.12.
Então, se isso é para um propósito de programação, sugiro que você pesquise todos os gerenciadores de janelas linux; alguns populares são:
Você precisaria executar uma verificação para cada um com o comando
pgrep -l $WINDOW_MANAGER
, onde$WINDOW_MANAGER
é o nome do gerenciador de janelas que deseja verificar. Opgrep
comando verifica se há processos em execução.Não tenho 100% de certeza se o Gnome Shell é considerado um gerenciador de janelas; o restante dos gerenciadores de janelas que obtive de uma lista no
/usr/bin/gnome-wm
script. Na verdade, esse script deve ser utilizável (desde que está presente em uma instalação limpa), mas, no meu caso, ele tenta executar ocompiz
que não é o meu gerenciador de janelas padrão (não está na minha sessão do Gnome).EDITAR:
Bem, o comentário de @Anarci parece ser mais preciso. No meu caso, mostrou
gnome-shell
.fonte
pgrep -l "compiz|metacity|mutter|kwin|sawfish|fluxbox|openbox|xmonad"
$DISPLAY
o ambiente).