Como posso encontrar qual processo está controlando a janela raiz?

1

Estou tentando fazer com que um xscreensaver seja executado como plano de fundo / papel de parede da minha área de trabalho usando o método descrito aqui: link e o primeiro passo é matar o processo que controla a janela raiz X, mas não tenho idéia do processo que é.

Idealmente eu gostaria de aprender como obter o nome deste programa eu mesmo [incidentalmente ps aux | grep root realmente não ajuda] e a partir daí descobrir como impedir que este programa inicie na inicialização ou afirme o controle da raiz X janela.

No entanto, qualquer um que saiba de antemão qual programa seria em Canela pode me ajudar a resolver o problema e, naturalmente, qualquer informação adicional sobre como parar / desativar este programa ou iniciar / ativar /usr/lib/xscrensaver/glmatrix -root também será bem-vinda.

    
por 0x5f3759df 24.07.2017 / 10:04

2 respostas

3

A janela raiz é uma janela especial do servidor X. Não tem um aplicativo associado.

O wiki se refere indevidamente à janela raiz aqui. O que eles queriam dizer era uma janela que mascara / oculta a janela raiz, como normalmente é encontrada em ambientes de desktop modernos (geralmente chamado de Desktop , e geralmente implementada por um gerenciador de arquivos mostrando o conteúdo de um ~/Desktop pasta).

Esses xscreensaver widgets realmente funcionam atualizando o conteúdo da janela raiz. Portanto, você precisa remover a janela Desktop que a ocultaria e qualquer outra janela exibida na parte superior da janela raiz.

O que você poderia tentar procurar é o id do processo das janelas que registram um "Tipo de Janela" de "Desktop" com o gerenciador de janelas. Você poderia fazer algo como:

xwininfo -tree -root |
  pcregrep -o '^\s+\K0x\S+' |
  xargs -n1 xwininfo -wm -id |
  pcregrep -Mo '(?s)Window type:\s+Desktop.*?Process id: \K\d+' |
  sort -u

( xwininfo -tree para listar todas as janelas, o primeiro pcregrep para extrair o ID da janela, o segundo xwininfo para recuperar as propriedades WM (incluindo o tipo de janela e pid) de cada e depois o segundo pcregrep para extrair o PID dessas janelas Desktop ).

Você também pode executar:

xprop _NET_WM_PID

E clique na área de trabalho. Ou até mesmo:

xkill

E clique na área de trabalho para eliminar essa janela.

Em qualquer caso, note que pode não ser seguro eliminar essa janela / processo, pois pode muito bem ser tratado por algum processo essencial, como o gerenciador de janelas.

No caso de cinnamon , pelo menos em um ambiente de área de trabalho padrão no Linux mint 18.1 canela edition, parece ser nemo (o gerenciador de arquivos canela), portanto, há pouco dano em eliminá-lo.

    
por 24.07.2017 / 12:23
0

Seu título está errado, para encontrar a janela raiz que você pode fazer:

xprop -root | grep PID

Com o -root bandeira você pode omitir o clique na área de trabalho e com grep PID você pode encontrar o PID da sua janela raiz, mesmo quando você usa um WM obscuro. Bem, provavelmente não funcionará com o TWM.

Do meu lado, a saída se parece com tis:

xprop -root | grep PID
I3_PID(CARDINAL) = 3134

Mas esse processo não define seu papel de parede. Você não pode matar o programa que define o seu papel de parede porque ele simplesmente sai da tela. (Você não deve matar o seu gerenciador de janelas, mas não há mal em matar o nemo).

Sugiro que tente desativar o papel de parede em canela:

Thist answer on Perguntas sobre o Linux pode ajudar: System Settings > Backgrounds > Settings > Picture Aspect 'No Picture'

Se isso não funcionar, você precisa desativar a área de trabalho:

man nemo diz:

   --no-desktop
          Do  not  manage  the desktop — ignore the preference
          set in the preferences dialog.

E no i3 faq , você descobrirá que esse comando desativará a janela da área de trabalho do nemo:

gsettings set org.nemo.desktop show-desktop-icons false
    
por 24.07.2017 / 14:39