troca de janelas com script de traço

1

Escrevi vários scripts de traço que redimensionam e movem janelas para melhor eficiência.

A estrutura é a seguinte: Eu tenho uma linha de 8 janelas que estão empilhadas na parte inferior da minha tela, como miniaturas, se você quiser. Vamos chamar cada uma dessas janelas miniportal_1, ..., miniportal_8

Quando eu quero trabalhar com um deles, um script redimensiona-o acima da linha, de modo que ele ocupe a parte restante da tela e se torne mainportal

Para melhor visualização, o conceito é inspirado nas exibições do caça a jato F-35 ( Veja a imagem )

O que eu quero fazer é que, se já houver um presente mainportal, a janela miniportal que eu redimensiono o substituirá, mas também que a janela mainportal seja redimensionada e movida para a antiga imagem miniportal. Então, em suma, eu quero trocar as janelas miniportal e do portal.

Acho que preciso fazer algo assim:

1 / armazena o ID, geometria e coordenadas de todas as janelas visíveis usando wmctrl

visible_windows_ID_array=wmctrl -l -G | awk '{print S1}'
visible_windows_geometry=same but with different awk option
visible_windows_coordinates= same but with different awk option

2 / Faça um loop for com um teste if para obter o ID da janela mainportal

for((i=0;i<${#get_visible_windows_ID_array[@]}; i++ )) do

e é aí que não consigo encontrar a sintaxe correta para o teste If. Eu quero fazer algo assim:

if visible_windows_geometry[i]= mainportal geometry  && visible_windows_coordinates[i]= mainportal coordinates then
get visible_windows_ID[i]
fi
done

Quando tiver o ID da janela mainportal, posso usar wmctrl -r para redimensioná-lo.

Alguma ideia de como eu poderia fazer isso?

    
por Ogami musashi 13.01.2016 / 18:08

1 resposta

0

Encontrada a solução, aqui está um exemplo de encontrar o ID de uma janela miniportal já presente, caso você possa mover uma janela do portal de volta para a miniportal e, portanto, alternar a janela miniportal para o portal.

function getportalwindowID {
IFS=$'\n'
W=5
H=6
X=3
Y=4
ID=1
windowsID=($(wmctrl -l -G | awk -v ID=$ID  '{print $ID}'))
windowsgeometry_w=($(wmctrl -l -G | awk -v W=$W  '{print $W}'))
windowsgeometry_h=($(wmctrl -l -G | awk -v H=$H  '{print $H}'))
windowscoordinates_x=($(wmctrl -l -G | awk -v X=$X  '{print $X}'))
windowscoordinates_y=($(wmctrl -l -G | awk -v Y=$Y  '{print $Y}'))


for ((i=0; i<${#windowsID[*]}; i++));
do
if [ ${windowsgeometry_h[i]} = 180 ] && [ ${windowsgeometry_w[i]} = 320 ] && [ ${windowscoordinates_x[i]} = $(($activescreendisthorizontal+ 0)) ] && [ ${windowscoordinates_y[i]} = 1260 ]; then

portalwindowid=${windowsID[i]}

echo $portalwindowid

fi

done

}
    
por 14.01.2016 / 15:23