대시 스크립트를 사용하여 창 교체

대시 스크립트를 사용하여 창 교체

효율성을 위해 창 크기를 조정하고 이동할 수 있는 대시 스크립트를 여러 개 작성했습니다.

구조는 다음과 같습니다. 썸네일처럼 화면 하단에 8개의 창이 한 줄로 쌓여 있습니다. 각 창을 miniportal_1,...,miniportal_8이라고 부릅니다.

이 중 하나를 사용하고 싶을 때 스크립트는 행 위의 크기를 조정하여 화면의 나머지 부분을 차지하고 기본 포털이 됩니다.

더 나은 시각화를 위해 이 컨셉은 전투기 F-35 디스플레이(사진을 보세요)

내가 하고 싶은 일은 이미 기본 포털이 있는 경우 크기가 조정된 미니 포털 창이 이를 대체하고 기본 포털 창도 크기가 조정되어 이전 미니 포털 이미지로 이동하는 것입니다. 간단히 말해서, 미니포털과 포탈창을 교환하고 싶습니다.

내 생각에는 다음과 같이 해야 할 것 같습니다.

1/wmctrl을 사용하여 보이는 모든 창의 ID, 형상 및 좌표를 저장합니다.

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/if 테스트를 사용하여 for 루프를 실행하여 기본 포털 창의 ID를 얻습니다.

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

여기서 If 테스트의 올바른 구문을 찾을 수 없습니다. 나는 이런 일을하고 싶다 :

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

기본 포털 창 ID가 있으면 wmctrl -r을 사용하여 크기를 조정할 수 있습니다.

어떻게 할 수 있는지 아시나요?

답변1

해결책을 찾았습니다. 여기에 예가 있습니다. 포털 창을 다시 마이크로 포털로 이동하여 마이크로 포털 창을 포털로 전환할 수 있는 경우 이미 존재하는 마이크로 포털 창의 ID를 찾으세요.

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

}

관련 정보