Como descubro o nome da janela do conteúdo de internet de tela cheia (por exemplo, Flash)?

1

--- O contexto ---

Estou usando o Openbox para criar um espaço de trabalho / área de trabalho dedicado para meu navegador - o navegador só abre nesse espaço de trabalho e qualquer outra janela criada nele é expulsa para um espaço de trabalho diferente.

Isso funciona para a maioria da minha navegação, mas com conteúdo compatível com tela cheia, como streaming de vídeos ou aplicativos Flash, a mudança para o modo de tela cheia cria uma nova janela para o conteúdo ser reproduzido ... então o Openbox inicia o espaço de trabalho dedicado. Ou seja, quando eu sair do modo de tela cheia, estou no meu espaço de trabalho de desordem aleatória, em vez de voltar ao meu navegador.

Eu preciso escrever uma exceção para que o Openbox permita que o conteúdo de tela cheia permaneça no espaço de trabalho dedicado.

--- O problema ---

Gostaria de usar xprop (ou apenas wmctrl -l ) para obter algumas informações na janela em que o conteúdo da tela inteira é reproduzido, mas a janela fecha automaticamente assim que perde o foco (tanto quanto eu posso diga) então eu não posso simplesmente mudar para o meu terminal e fazê-lo manualmente. Eu preciso de alguma maneira para registrar as informações em segundo plano. Idealmente, eu gostaria de algum tipo de monitor de fundo que registra o nome de todas as janelas abertas.

Existe uma maneira relativamente simples de escrever isso? Tenho certeza de que poderia encontrar um pacote de software de monitoramento que pudesse fazer isso, mas parece um exagero para o que eu preciso.

EDIT para adicionar resposta: Apenas usando um temporizador ( sleep 10; xprop ) como sugerido por Gilles trabalhou. Para referência futura, a linha relevante foi _OB_APP_CLASS(UTF8_STRING) = "Plugin-container"

    
por chro 24.12.2015 / 11:42

1 resposta

2

Um programa que monitora a criação de janelas não vem à mente, mas você não precisa disso.

Você pode executar wmctrl -l em um loop ou em um timer (por exemplo, sleep 10; wmctrl -l ) e, em seguida, iniciar o aplicativo de tela inteira e registrar suas propriedades de janela. Se você quiser mais informações, você pode fazer algo como

sleep 10; xprop

Após 10 segundos, o cursor do mouse mudará; O clique deve fazer com que xprop exiba informações sobre a janela em primeiro plano.

Como alternativa, use xdotool (novamente em um temporizador ou em um loop) e seus recursos de correspondência de janela para encontrar o ID da janela, por exemplo, xdotool --pid se a janela de tela cheia estiver em um processo pré-existente ou xdotool getwindowfocus ou getactivewindow para obter o ID da janela que possui o foco. Observe que a janela de primeiro plano talvez não tenha o foco de entrada (alguns aplicativos de tela inteira exibem uma janela de tela inteira adicional em primeiro plano, mas mantêm o foco na janela "normal"; você pode obter a janela em algum local da tela , ou simplesmente xdotool getmouselocation para uma janela de tela inteira (para uma configuração de vários monitores, se o cursor do mouse já estiver no monitor direito).

Como alternativa, no Linux, alterne para um console de texto (por exemplo, Ctrl + Alt + F1 ), efetue login, execute export DISPLAY=:0 e, em seguida, você pode acessar a GUI (executar xprop , xdotool etc.). Com algumas configurações você pode precisar para definir XAUTHORITY .

    
por 25.12.2015 / 16:28