명령 행을 통해 창 중앙


19

창을 연 후 화면 중앙에 창을 배치하거나 화면 중앙에 창을 열 수있는 방법이 있습니까?

이것은 명령 행을 사용하여 수행해야합니다.

답변:


33

wmctrl 도구는 EWMH (확장 창 관리자 힌트) 사양에정의 된 거의 모든 기능에 대한 명령 줄 액세스를 제공합니다. 사용할 수있다 하는 데스크탑 및 관리 윈도우의 자세한 목록을 얻기 위해, 예를 들어, 윈도우 매니저에 대한 정보를 얻을 전환 크기 조정 데스크탑, 창을 만들기 위해 전체 화면을 , 항상 위 또는 끈적 하고에 활성화 , 가까운 , 이동 , 크기 조정 , 최대화 최소화 를.

당신은 그것을 설치할 수 있습니다

sudo apt-get install wmctrl

가상 데스크톱 (작업 영역)에 대한 정보는 wmctrl -d

one@onezero:~$ wmctrl -d
0  * DG: 2720x1536  VP: 0,0  WA: 0,24 1360x744  N/A

으로 열린 창을 나열하십시오 wmctrl -l. 이 -G옵션은 창의 형상을 보여줍니다.

one@onezero:~$ wmctrl -l
0x02000004  0 onezero Desktop
0x02e00002  0     N/A DNDCollectionWindow
0x02e00003  0     N/A launcher
0x01e00004  0 onezero cairo-dock
0x02e00004  0     N/A panel
0x04800061  0 onezero Transmission
0x02e0000a  0     N/A Dash
0x03a00044  0 onezero arranging windows from the gnu/linux command line with wmctrl ~ Moving to Freedom - Chromium
0x04400006  0 onezero one@onezero: ~
0x04c000e9  0 onezero Google - Mozilla Firefox

wmctrl -lG

one@onezero:~$ wmctrl -lG
0x02000004  0 0    0    1360 768  onezero Desktop
0x02e00002  0 -1460 -868 1360 768      N/A DNDCollectionWindow
0x02e00003  0 0    24   58   744      N/A launcher
0x01e00004  0 290  653  780  115  onezero cairo-dock
0x02e00004  0 0    0    1360 24       N/A panel
0x04800061  0 408  95   732  500  onezero Transmission
0x02e0000a  0 -1402 -844 1302 744      N/A Dash
0x03a00044  0 0    24   1360 744  onezero Center a window via command line - Ask Ubuntu - Stack Exchange - Chromium
0x04400006  0 127  94   983  434  onezero one@onezero: ~
0x04c000e9  0 5    47   1349 715  onezero Google - Mozilla Firefox

-r 다음에 제목 또는 부분 제목을 참조하여 창을 지정할 수 있습니다. -e 이동 및 크기 조정

wmctrl -r "Mozilla Firefox" -e <G>,<X>,<Y>,<W>,<H>

<G>: Gravity specified as a number. The numbers are defined in the EWMH specification. The value of zero is particularly
     useful, it means "use the default gravity of the window".
<X>,<Y>: Coordinates of new position of the window.
<W>,<H>: New width and height of the window.

따라서 창을 왼쪽 상단으로 옮기고 너비를 1000 픽셀, 높이를 700으로 설정하려면 0,0,0,1000,700을 사용합니다

one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700

여기에 이미지 설명을 입력하십시오

이동 / 크기 조정하기. 이를 위해 -b옵션을 사용하여 먼저 "최대화하지 않는"해결 방법을 사용했습니다

wmctrl -r "Mozilla Firefox"-b add, maximized_vert, maximized_horz

wmctrl -r "Mozilla Firefox"-b 제거, 최대화 _vert, 최대화 _horz

one@onezero:~$ wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz

여기에 이미지 설명을 입력하십시오

1 차 이해해야 할 것들

The -e option expects a list of comma separated integers: "gravity,X,Y,width,height"

여기에 이미지 설명을 입력하십시오

그게 내 화면 해상도이므로 x = 1360 & y = 786

창을 화면의 왼쪽 절반에 맞추기

one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768

창을 화면의 반쪽에 맞추기

one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768

창을 center of screen1360/4 = 340에 맞추기

one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768

여기에 이미지 설명을 입력하십시오

화면 설정에 따라 조작

추가 도움이 필요한 경우 1 2 3 4


7

현재 활성 창에서 작동합니다

IFS='x' read screenWidth screenHeight < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)

width=$(xdotool getactivewindow getwindowgeometry --shell | head -4 | tail -1 | sed 's/[^0-9]*//')
height=$(xdotool getactivewindow getwindowgeometry --shell | head -5 | tail -1 | sed 's/[^0-9]*//')

newPosX=$((screenWidth/2-width/2))
newPosY=$((screenHeight/2-height/2))

xdotool getactivewindow windowmove "$newPosX" "$newPosY"

이 필요 bash하거나 zsh실행, 일반 sh작동하지 않습니다.
wingedsubmariner

1/2 또는 1/4 화면 바둑판 식으로 배열 된 창 (예 : 창을 오른쪽으로 드래그하면 화면의 오른쪽 절반을 차지함)을 제외하고는 👍 작동합니다. 이 창은 특별 해 보이며, xdotool전화하기 전에 먼저 "정상"창으로 만들기 위해 어떤 작업을 호출 해야하는지 모르겠습니다 windowmove. 아이디어?
Ronan Jouchet

이 askubuntu 스레드 에서 내 문제에 대한 해결책을 찾았습니다 . 전화 관련 wmctrl도, 더 나은 솔루션을 환영합니다. TL; DR : wmctrl -ir "$(xdotool getactivewindow)" -b remove,maximized_vert,maximized_horz최종 xdotool getactivewindow windowmove통화 전에 전화하십시오.
Ronan Jouchet

4

누군가가 코드 스 니펫을 복사 / 붙여 넣기 하여이 작업을 수행하려면 다음이 있습니다.

winname='foo'
IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
read wx wy ww wh < <(wmctrl -lG | grep $winname | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
wmctrl -r $winname -e 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh

foo물론 첫 줄 중앙에 놓으려는 창의 이름으로 바꿉니다 .


설명 (예제 콘솔 세션의 형태로 분류) :

화면 치수 얻기

llama@llama:~$ xdpyinfo | grep dimensions
  dimensions:    1920x1080 pixels (508x285 millimeters)
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*'
1920x1080
x
508x285
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1
1920x1080
llama@llama:~$ IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
llama@llama:~$ echo $sw $sh
1920 1080

창의 지오메트리 정보 얻기

llama@llama:~$ wmctrl -lG | grep foo
0x00a0000c  0 1113 510  722  475  llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]*//;'
  0 1113 510  722  475  llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]*//;'
 1113 510  722  475  llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;'
1143 505  722  475  
llama@llama:~$ read wx wy ww wh < <(wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
llama@llama:~$ echo $wx $wy $ww $wh
1143 505 722 475

창 이동

llama@llama:~$ echo 0,foo,bar,$ww,$wh
0,foo,bar,722,475
llama@llama:~$ echo 0,$(($sw/2)),bar,$ww,$wh                                    
0,960,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),bar,$ww,$wh
0,599,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh
0,599,303,722,475

0

대부분의 응용 프로그램은 시작할 때 --geometry 매개 변수를 준수해야합니다 (일부는 -geometry를 선호하고 첫 번째 것이 작동하지 않으면 두 번째 시도).

gnome-terminal --geometry 80x25+100+100

geometry 매개 변수는 다음 형식을 갖습니다.

WIDTHxHEIGHT+XOFF+YOFF

불필요한 부품은 그대로 둘 수 있습니다.

gnome-terminal --geometry +20+50 #No size, just offsets

상세 사항은:

man X

그런 다음 "/"를 누르고 GEOMETRY SPECIFICATIONS를 검색하십시오.

또는 여기를 참조하십시오 : http://www.cotse.com/dlf/man/xwindows/geometry.htm

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.