Script para encontrar o ambiente de área de trabalho padrão?

3

Suponha que um sistema Linux Ambiente de Área de Trabalho esteja instalado. Quando ligado e as credenciais digitadas, seja qual for o ambiente de área de trabalho iniciado, eu consideraria o ambiente de área de trabalho padrão. O usuário pode escolher outro ambiente de área de trabalho, como o KDE ou o XFCE, mas isso não seria o padrão. O que é um trecho de código agnóstico de distribuição para encontrar o ambiente de desktop padrão ou, melhor ainda, o DE usado pela última vez. O código deve ser executado a partir de uma sessão SSH remota ou do console somente de texto CTRL-ALT-F2.

O ímpeto para esta questão é que recentemente eu enviei por e-mail a saída do nvidia-bug-report.sh para a NVIDIA. O suporte técnico da NVIDIA respondeu dias depois perguntando "Qual SO?", "GNOME ou KDE?", "Qual distribuição?" - todos os metadados que podem ser coletados e catalogados automaticamente por seu próprio script.

Uma vez que o Desktop Environment falhou, o nvidia-bug-report.sh precisa ser executado a partir de um console de texto CTRL-ALT-F2 ou de uma sessão SSH remota. Claramente, nenhum destes tem a variável $ DESKTOP_SESSION. A resposta retornaria um ou mais itens em ordem de confiança de uma lista semelhante a "gnome|kde|mate|cinnamon|lx|xfce|jwm|none" .


Gostariadescriptssemelhantesa" Como posso Obter o nome da distribuição e o número da versão em um script de shell simples? "

    
por rjt 25.10.2013 / 20:34

1 resposta

1

Talvez esse snippet possa ajudar se não houver uma solução confiável:

$ w | awk -vdp=$DISPLAY '($2 ~ dp){gsub(/.*\//, "");print $NF}'

ou talvez:

$ qdbus | grep -oPm1 '(kdm|xfce|gnome)'

Outra abordagem usando o pstree:

$ pstree -H $(pidof X) | grep -oP '(kdm|xfce|gnome)(?=.*?X)'
kdm

E mais um:

$ lsof ~/.xsession-errors | grep -oEm1 '(kde|xfce|gnome)'
kde

ou uma variante:

$ lsof ~/.xsession-errors | awk 'NR==2{print $1;quit}'
startkde
    
por 25.10.2013 / 20:41