애플리케이션 시작 시 애플리케이션을 최대화하는 스크립트

애플리케이션 시작 시 애플리케이션을 최대화하는 스크립트

이 질문이 중복된 것으로 알고 있습니다.
명령줄을 통해 화면에서 응용 프로그램의 창 크기와 위치를 설정하는 방법은 무엇입니까?
명령줄에서 최대화된 창 크기 조정

첫 번째 링크를 통해 문제를 해결할 수 있었습니다. 하지만 저는 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가 설명한 작업을 시도했지만 스크립트가 작동하지 않습니다. 첫 번째 메시지에서 언급한 것과 동일한 문제입니다.

무슨 일이 일어나고 있는지 한 줄씩 설명하겠습니다.

  1. 이 스크립트는 "xfce4-settings-manager"를 시작합니다.

    USER@PC:~$ xfce4-settings-manager 및 절전 0.1;

[3]9825

  1. "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

  2. 마지막 명령에 창 값(0x5400001)을 포함시켰는데 창이 최대화되지 않았습니다.

    USER@PC:~$ wmctrl -i -r 0x5400001 -b 추가,maximized_vert,maximized_horz

[4]9852

  1. "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

관련 정보