스크립트를 통해 애플리케이션을 이동하고 크기를 조정하는 방법:

스크립트를 통해 애플리케이션을 이동하고 크기를 조정하는 방법:

이것질문은 제목으로 창의 주소를 지정하고 위치/크기를 조정하는 방법을 보여줍니다.

이제 창의 주소를 지정하는 5가지 옵션이 있습니다.
- 창 ID: 응용 프로그램을 다시 시작할 때 변경 => 쓸모 없음
- 창 제목: 다른 창 제목과 동일 => 쓸모 없음
- 창 네임스페이스: 다른 창 제목과 동일 동일한 네임스페이스 => 쓸모 없음 > 쓸모 없음
- 사용자는 클릭하여 선택할 수 있습니다 => 이 작업의 전체 요점은 단지 게으른 것입니다. 그렇지 않습니까?
- 활성 창을 사용할 것입니다. => 그럴 수도 있지만, 이것이 신뢰할 수 없을 것 같습니다.(?)

내가 하고 싶은 것은 스크립트를 사용하여 여러 응용 프로그램을 열고 그 중 일부는 두 번 이상(동일하거나 가변 제목) 내 데스크톱에 배치하는 것입니다. 복수형에 주목하세요. 그 중 일부는 다른 작업 공간에도 있기를 바랍니다. wmctrl이동과 크기 조정은 모두 할 수 있지만 창 선택은 어떻게 하는지 모르겠습니다.

애플리케이션 실행 후 바로 창 ID를 얻을 수 있는 방법이 있나요? 프로세스 ID를 사용하여 이 작업을 수행할 수 있고 wmctrl실행 중인 모든 응용 프로그램의 PID를 얻을 수 있다는 것을 알고 있습니다. PID를 사용하여 창 주소를 지정할 수 있는 방법이 있습니까?

또는 wmctrl제목 일치를 반대로 수행할 수 있습니까? ( --help첫 번째 일치가 사용된다고 하면 가장 최근에 시작된(마지막으로 가정) 일치를 사용할 수 있습니까?)

답변1

이 해결책은 질문이 거의 마무리되었을 때 나에게 나타났기 때문에 내가 직접 대답해야겠다고 생각했습니다. 이는 안정적으로 작동하지만 더 쉬운 방법이 있을 수 있습니다. 제가 요청하는 내용을 직접적으로 수행할 수 있는 방법이 있다면 자유롭게 다른 답변을 남겨주세요.

스크립트를 통해 애플리케이션을 이동하고 크기를 조정하는 방법:

이 예제 코드는 설명이 필요합니다(주석 포함).

#!/bin/bash
DISPLAY=:0 gnome-calculator & # start app
cpid=$! # get process ID of said app
sleep 1 # give it a second to open the window (adjust to needs)
cwid=$(wmctrl -lp | grep " $cpid " | cut -d " " -f 1) # get window ID
wmctrl -i -r "$cwid" -e "0,3200,572,396,415" # move and resize!
# start the 2nd application...
DISPLAY=:0 sol &
cpid=$!
sleep 1
cwid=$(wmctrl -lp | grep " $cpid " | cut -d " " -f 1)
wmctrl -i -r "$cwid" -b "remove,maximized_vert,maximized_horz" # un-maximize
wmctrl -i -r "$cwid" -t 1 # move to desktop 1 (2nd workspace)
wmctrl -i -r "$cwid" -e "0,1497,525,1342,860"

필요한 만큼 많은 응용 프로그램에 대해 이 과정을 반복하면 이를 사용하여 wmctrl -l응용 프로그램의 현재 형상을 찾아 매개변수에 무엇을 제공할지 알 수 있습니다 -e.

매개변수의 형식은 -e다음과 같습니다 <gravity>,<X_pos>,<Y_pos>,<width>,<height>.

관련 정보