Estou tentando configurar um "terminal como papel de parede da área de trabalho" no Openbox, conforme descrito aqui
O Openbox tem a possibilidade de definir <layer>below</layer>
, para que a janela seja executada como plano de fundo da área de trabalho e não seja exibida pela barra de status e não seja afetada por "minimizar janelas". Então, em vez de exibir uma imagem inútil como papel de parede, na verdade tenho um terminal.
O terminal real que estou executando como plano de fundo é terminator
, acabei de criar um link simbólico terminator-wallpaper-1a
e terminator-wallpaper-1b
, que são apenas links simbólicos para o binário do terminador. Só para que os nomes sejam diferentes, e eu possa distingui-los.
Eu tenho configuração de monitor duplo e quero papel de parede do terminador em cada monitor.
A propriedade da janela openbox é definida por devilspie
:
(if
(matches (application_name) "terminator-wallpaper")
(begin
(wintype "desktop")
)
)
E então, eu tenho isso na minha configuração do openbox, para que cada papel de parede vá para o monitor/desktop correspondente:
<application name="terminator-wallpaper-1a">
<focus>yes</focus>
<layer>below</layer>
<desktop>1</desktop>
<position>
<y>0</y>
<x>0</x>
<monitor>1</monitor>
</position>
<skip_taskbar>yes</skip_taskbar>
<maximized>true</maximized>
</application>
<application name="terminator-wallpaper-1b">
<focus>yes</focus>
<layer>below</layer>
<desktop>1</desktop>
<position>
<y>0</y>
<x>0</x>
<monitor>2</monitor>
</position>
<skip_taskbar>yes</skip_taskbar>
<maximized>true</maximized>
</application>
Por fim, é assim que eu começo a coisa toda:
devilspie &
terminator-wallpaper-1a -b &
terminator-wallpaper-1b -b &
xdotool set_desktop 0
xdotool search --class 'Terminator-wallpaper-1a' windowunmap --sync windowmap windowsize %1 1920 1180
xdotool search --class 'Terminator-wallpaper-1b' windowunmap --sync windowmap windowsize %1 1920 1180
Tudo funciona bem e, quando minimizo todas as outras janelas, vejo meus papéis de parede do terminador. Mas apenas um deles é realmente utilizável. ou seja, focado ou ativo. O outro não consigo digitar. Mesmo quando clico com o mouse, os cursores ainda estão inativos, de modo que a janela nunca fica focada.
Como posso consertar isso ?
SOLUÇÃO:
após exaustiva solução de problemas com o usuário @intika, identificamos o problema. A adição do seguinte trecho à seção <mouse>
no arquivo de configuração do openbox corrigiu o problema:
<context name="Desktop">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
</context>
Apenas uma janela/aplicativo pode ter o foco por vez.
Na sua configuração do openbox, ambos os aplicativos/papel de parede têm o foco, mas tecnicamente isso não é possível, então o openbox mitiga sua configuração dando foco a apenas um aplicativo (não pode fazer de outra forma).
Existem muitas possibilidades para corrigir esse problema, elas evoluem em torno da implementação de uma maneira de mudar o foco para a área de trabalho/aplicativo/papel de parede da primeira ou segunda tela
Possível solução 1:
Você pode tentar definir o valor do foco para nenhum ou remover a linha de foco todos juntos e, em seguida, testar a mudança do foco com um clique do mouse
Possível solução 2:
Use o local do mouse para definir o foco, aqui está o wiki do openbox para o assunto, primeiro remova a entrada de foco para ambos os aplicativos de papel de parede e adicione o seguinte à configuração do openbox na seção principal, conforme
<focus></focus>
descrito na documentação vinculadaObserve que isso afetará suas outras janelas também ...
Você também pode tentar usar
followMouse
na seção de aplicativos, mas não acho que isso seja tratado pelo openboxPossível solução 2:
Use xdotool com um atalho de teclado ou então para mudar o foco, na verdade você pode atribuir um atalho de teclado a um comando como o abaixo, também esta solução também exige que você corrija sua configuração removendo / editando o dual
<focus>yes</focus>
O mesmo que xdotool, wmctrl também pode ser usado para o assunto:
Observação:
Nota 2:
Existem muitas outras soluções possíveis, você pode comentar a resposta e eu a editarei de acordo ;)