이 질문이 중복된 것으로 알고 있습니다.
명령줄을 통해 화면에서 응용 프로그램의 창 크기와 위치를 설정하는 방법은 무엇입니까?
명령줄에서 최대화된 창 크기 조정
첫 번째 링크를 통해 문제를 해결할 수 있었습니다. 하지만 저는 Bash 언어를 배우려고 하는데 다음 스크립트에 어떤 문제가 있는지 알고 싶습니다.
#!/bin/bash
xfce4-settings-manager & sleep 0.1
xwininfo -name "xfce4-settings-manager" | grep xwininfo: | awk {'printf$4'}
wmctrl -i -r $1 -b add,maximized_vert,maximized_horz &
스크립트를 실행한 후 "xwininfo"가 애플리케이션에 대해 다른 ID 값을 사용하는지 확인합니다. 이유를 모르겠습니다. 누구든지 이 문제를 해결하도록 도와줄 수 있나요?
미리 감사드립니다.
답변1
당신이 찾고 있는 도구는악마의 세력(버전 1이든 2이든 완전히 다른 구성 언어를 사용합니다.) 이 사이트에는 다음과 같은 많은 예가 있습니다.1 2 삼 4.
스크립트에 문제가 있는 것으로 확인되었습니다제프 샬러주석에서: 출력이 추출되는 행은 xwininfo
호출을 삽입하지 않습니다 wmctrl
. 스크립트에서 명령 출력을 사용하려면 다음을 사용하십시오.명령 대체.
windowid=$(xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}')
wmctrl -i -r "$windowid" -b add,maximized_vert,maximized_horz &
줄이 너무 길어지는 것을 방지하기 위해 중간 변수를 사용했지만 모든 작업을 인라인으로 수행할 수도 있습니다.
wmctrl -i -r "$(xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}')" -b add,maximized_vert,maximized_horz &
또한 grep 및 awk 호출을 결합하여 단일 도구를 사용하는 것이 더 쉽다는 것을 알았습니다.
xwininfo
조회 창 ID를 사용할 필요는 없습니다 . wmctrl
창 이름만 전달하면 됩니다.
wmctrl -r "xfce4-settings-manager" -b add,maximized_vert,maximized_horz &
답변2
당신이 원하기 때문에 :
두 번째 행의 결과는 세 번째 행의 $1에 의해 검색됩니다.
당신은 할 수 있습니다:
#!/bin/bash
xfce4-settings-manager & sleep 0.1
wid=$(xwininfo -name "xfce4-settings-manager" | grep xwininfo: | awk {'printf$4'})
wmctrl -i -r "$wid" -b add,maximized_vert,maximized_horz &
그러나 다른 버전을 제안할 수 있다면(X 모니터 앞에 있지 않기 때문에 테스트되지 않았습니다):
#!/bin/bash
xfce4-settings-manager &
while ! pgrep xfce4-settings-manager > /dev/null
do
:
done
wid=$(xwininfo -name "xfce4-settings-manager" | awk '/xwininfo:/ { print $4 }')
wmctrl -i -r "$wid" -b add,maximized_vert,maximized_horz
다양성:
- wmctrl이 백그라운드에 있어야 하는지 확실하지 않아서 제거했습니다.
&
- awk는 "grep"할 수 있기 때문에 awk와 grep을 결합했습니다.
- 프로세스를 찾도록 요청하는 루프로 변경 했습니다
sleep 0.1
(xfce4-settings-manager
해당 기간 동안 시작된다고 가정).pgrep
답변3
답변 감사합니다. 위의 설명에서 @Gilles와 @Jeff가 설명한 작업을 시도했지만 스크립트가 작동하지 않습니다. 첫 번째 메시지에서 언급한 것과 동일한 문제입니다.
무슨 일이 일어나고 있는지 한 줄씩 설명하겠습니다.
- 이 스크립트는 "xfce4-settings-manager"를 시작합니다.
USER@PC:~$ xfce4-settings-manager 및 절전 0.1;
[3]9825
"xfce4-settings-manager" 창의 값이 필요합니다. 이 예에서는 결과를 출력하고 싶습니다. 대본에는 Giles와 Jeff가 말한 대로 썼습니다.
USER@PC:~$ xwininfo -name "xfce4-settings-manager" | USER@PC:~$ xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}' 0x5400001
마지막 명령에 창 값(0x5400001)을 포함시켰는데 창이 최대화되지 않았습니다.
USER@PC:~$ wmctrl -i -r 0x5400001 -b 추가,maximized_vert,maximized_horz
[4]9852
- "xwininfo" 명령을 실행하고 "xfce4-settings-manager" 창을 선택했는데 결과는 다음과 같습니다.
사용자@PC:~$ xwininfo
xwininfo: 창에서 마우스를 클릭하여 정보를 알고 싶은 창을 선택하세요.
xwininfo: 창 ID: 0x5800003 "설정"
절대 왼쪽 위 모서리 X: 343
절대 왼쪽 위 모서리 Y: 286
상대 왼쪽 위 모서리 X: 5
상대 왼쪽 상단 모서리 Y: 19
폭: 680
신장: 195
깊이: 24
시각적: 0x20
시각적 등급: 트루 컬러
테두리 너비: 0
클래스: 입력 및 출력
컬러맵: 0x22(설치됨)
비트 중력 상태: NorthWestGravity
창 중력 상태: NorthWestGravity
백업 저장소 상태: 쓸모 없음
저장 상태: 아니요
지도 상태: IsViewable
리디렉션 상태 무시: 아니요
코너킥: +343+286 -343+286 -343-287 +343-287
-기하학적 크기 680x195+338+267
[2] xfce4-settings-manager 완료
[4]+ wmctrl -i -r 0x5400001 -b 추가, 최대화_vert, 최대화_horz 완료
"xfce4-settings-manager"의 창 값은 명령줄에서 값을 검색하는지 아니면 커서를 사용하여 창을 선택하는지(0x5400001 및 0x5800003)에 따라 다릅니다.
어떤 아이디어가 있나요?
답변4
evince
창 제목은 PDF 파일 제목과 동일하며 텍스트 증거가 없습니다. 따라서 또 다른 방법은 잠시 기다린 다음( sleep 0.4
증거이면 충분함) wmctrl -l
목록의 마지막 창을 최대화하는 것입니다(예: 마지막 항목이 추가됨) 다음과 같이 표시됩니다.
evince file.pdf & sleep 0.4; wmctrl -i -r "$(wmctrl -l | tail -1 | fgrep -o '^\S+')" -b add,maximized_vert,maximized_horz
이는 모든 애플리케이션에 적용되지만 다음 버전으로 업그레이드하기 전에 충분한 시간을 기다려야 합니다.wmctrl