명령줄을 통해 화면에서 응용 프로그램의 창 크기와 위치를 설정하는 방법은 무엇입니까?

명령줄을 통해 화면에서 응용 프로그램의 창 크기와 위치를 설정하는 방법은 무엇입니까?

다음과 같은 쉘 명령을 사용하여 Firefox 창을 특정 크기와 화면 위치로 열도록 하고 싶습니다.

firefox myfile.html size 800x600 location bottom-left

그런 명령이 있나요?

답변1

다음은 답변의 커뮤니티 버전입니다.요괴다음에서 제공하는 예제를 통합한 것입니다.루돌프 올라.


호출된 도구를 사용하여 xdotool창 크기와 위치를 제어할 수 있습니다. 뿐만 아니라 를 bash사용하여 에서 작성하는 모든 스크립트는 xdotool완전히 최대화된 창에서 작동하도록 설정할 수 있으며 mousemoveclick명령을 조작하여 창 크기 및 x:y 좌표를 설정하도록 스크립트할 수 있습니다.

  1. 창 ID 찾기:

    xdotool search --onlyvisible --name firefox
    
  2. 창 크기 설정

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
    
  3. 창 이동

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
    

예를 들어, Firefox의 창 ID가 123인 경우 다음을 수행합니다.

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

왼쪽 하단 위치는 화면 해상도에 따라 결정되어야 합니다.

답변2

내가 아는 한, Firefox는 창을 제어하는 ​​명령을 허용하지 않기 때문에 이는 불가능합니다. 그것은 또한 (대부분) 창 관리자의 책임이므로 이를 수행하는 매개변수가 있을지 의심됩니다. 그러나 다음을 사용하여 창을 제어할 수 있습니다.wmctrl, 하지만 조금 어려울 것입니다.

#!/usr/bin/env bash

firefox -new-instance -new-window "http://www.reddit.org" &

# Process ID of the process we just launched
PID=$!

# Window ID of the process...pray that there's     
# only one window! Otherwise this might break.
# We also need to wait for the process to spawn
# a window.
while [ "$WID" == "" ]; do
        WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
done
# Set the size and location of the window
# See man wmctrl for more info
wmctrl -i -r $WID -e 0,50,50,250,250

이를 수행하는 더 영리한 방법이 있을 수 있으며 Firefox와의 일부 상호 운용성 문제(예: 다른 인스턴스가 실행되지 않음)가 있지만 계속 진행할 수 있습니다.

답변3

이것은 위치 문제를 해결하지 못하지만 최소한 치수를 설정할 수는 있습니다.

firefox -width 200 -height 500

답변4

나는 항상 이것을 한다. 그러나 나는 DevilsPie2를 사용하는데, 그 이유는 그것이 더 강력하기 때문입니다. LUA 스크립팅 언어를 사용하는데 이는 그리 어렵지 않습니다.

다음은 Thunderbird용 루아 스크립트입니다. 이 스크립트가 열리면 맨 왼쪽 모니터(노트북 화면)에서 열려고 합니다.

if (get_window_name()=="Mozilla Thunderbird") then
   pin_window()
   set_window_geometry( 50, 10, 1220, 780 )
end

where 50 = X coordinate (for upper-left corner of the window)
      10 = Y coordinate ( " " )
    1220 = window width
     780 = window height

이를 설정하려면 홈 구성(Ubuntu와 유사한 배포판)에 Devilspie2라는 이름의 디렉터리를 만듭니다(예: /home/$USERNAME/.config/devilspie2).

Thunderbird의 경우 파일 이름은 중요하지 않지만 Thunderbird.lua를 만들었습니다. 원한다면 모든 것을 하나의 스크립트 파일에 넣을 수 있지만 각 응용 프로그램마다 다른 파일 이름을 가지고 있습니다. 로그인할 때 Devilspie2가 자동으로 시작되도록 설정하세요(예: /home/$USERNAME/.config/autostart/devilspie2.desktop).

다음은 Lua 스크립트에 사용할 수 있는 다양한 옵션에 대한 좋은 페이지 링크입니다.https://github.com/gusnan/devilspie2/blob/master/README

참고 사항: 스크립트는 실행 가능하지 않아도 됩니다. 내 것은 664이고 잘 작동합니다. 내가 제어하는 ​​다른 프로그램으로는 openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload 및 yad가 있습니다. pin_window를 사용하여 모든 데스크톱에 표시되도록 하고 응용 프로그램에 따라 다른 명령도 표시합니다.

관련 정보