실행중인 응용 프로그램의 창 크기 설정


28

우분투 (xfce 또는 gnome) 내에서 명령 줄을 통해 응용 프로그램을 시작하려고하는데 현재 실행중인 주어진 응용 프로그램의 주어진 창 크기를 설정하는 일반적인 방법이 있는지 궁금합니다.

답변:


18

당신이 같은 것을 설치하면 이것은 더 쉽습니다 xdotool. 그럼 당신은 할 수 있습니다 :

xdotool search --name "window name" windowsize 300 400

"창 이름"을 창 제목에 나타나는 이름 또는 정규 표현식으로 바꾸십시오 (창 클래스 및 기타 다양한 항목으로 검색 할 수도 있음). 창 크기 다음에 나타나는 두 숫자는 각각 너비와 높이입니다. (퍼센트 등을 사용할 수도 있습니다.) man xdotool일단 설치되면 참조하십시오 .

Lucid 또는 이전 버전을 사용하는 경우 xdotool 웹 사이트 를 방문하여 최신 버전을 얻는 것이 좋습니다 .

예를 들어 Firefox의 크기를 조정하려면

xdotool search --name "Mozilla Firefox" windowsize 1024 768

3
장식없이 전체 화면 창 크기를 조정하는 방법이 있습니까 (제목 표시 줄)? 화면에서 정확한 위치를 설정합니까 (예 : x = 0, y = 0)? 최대화 된 mplayer가 800x600 x = 0 y = 0으로 이동 한 다음 몇 분 후에 동일한 전체 화면 모드로 설정되도록 설정하려고합니다. 고마워
피터

15

창 관리자가 Xlib를 지원하는 경우가 있습니다. 이것은 파이썬을 사용하여 창의 크기를 500x300으로 설정합니다.

WIDTH, HEIGHT = 500, 300
import Xlib
import Xlib.display

display = Xlib.display.Display()
root = display.screen().root
windowID = root.get_full_property(display.intern_atom('_NET_ACTIVE_WINDOW'), Xlib.X.AnyPropertyType).value[0]
window = display.create_resource_object('window', windowID)
window.configure(width = WIDTH, height = HEIGHT)
display.sync()

어려운 부분은 창 ID를 얻는 것입니다. 위의 코드에서 활성 창의 ID를 얻었습니다. 다른 ID를 원한다면 다음과 같은 것을 사용하여 각 창의 제목과 제어 PID를 가져 와서 그에 따라 올바른 ID를 선택할 수 있습니다.

windowIDs = root.get_full_property(display.intern_atom('_NET_CLIENT_LIST'), Xlib.X.AnyPropertyType).value
for windowID in windowIDs:
    window = display.create_resource_object('window', windowID)
    name = window.get_wm_name() # Title
    prop = window.get_full_property(display.intern_atom('_NET_WM_PID'), Xlib.X.AnyPropertyType)
    pid = prop.value[0] # PID


내가 할 때 print pid내가 얻을 <Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>... 어떤 제안은 실제 PID를 분리?
khaverim

Nvm. 가능하지 않은 것 같지만을 통해 해결 방법을 수행 할 수 있습니다 name.
khaverim

1
@khaverim 흠. 필자는 API를 마지막으로 작성한 이후 PID로만 사용 된 것으로 생각합니다. 내가 대답을 업데이트, 당신은에 의해 반환 된 값을 먹고 싶어 get_full_property하고 할 .value[0]( value입니다 배열 )
마이클 Mrozek

1
python Xlib는 다음을 통해 설치할 수 있습니다 : sudo apt-get install python-xlib (Ubuntu에서)
Tom

4

XFCE 에만 해당 하는 pyxfce파이썬 언어 를 사용하여 그렇게 할 수 있습니다. Pyxfce는 무엇보다도 창 관리자와 통신 할 수있는 API입니다 . 명령 행에서 이것을 사용하려면 먼저 스크립트를 준비해야합니다.

사용에 따라 X 윈도우 ID (예 : 다른 답변에서 언급 한 python-xlib 또는 xdotools)를 사용하여 X 기반 API를 사용하는 것의 중요성 (wmctrl과 같은)과 같은 윈도우 제목과 일치하는 문자열을 사용하는 다른 것보다 각각의 제목에서 동일한 키워드를 가질 수있는 창 사이의 혼동.


3
#!/bin/bash
#get window pid under mouse
xprop -id $(xwit -current -print | cut -d ":" -f 1) | grep _NET_WM_PID | cut -d "=" -f2 | cut -c 2-

0

wmctrl이 가장 적합하다는 것을 알았습니다. 우분투와 라스베리 안, 그리고 다른 배포판에도 작은 패키지로 제공됩니다.


우리는이 wmctrl을 언급 대답을 하지만, 우리는 쇼가 그것을 사용하는 방법한다는 응답이없는; 사람들이 시연을 통해 답변을 확장하여 사람들이 특정 용도에 맞게 채택 할 수 있습니까? 고맙습니다!
Jeff Schaller

내가 예를 들었다면 분명히 그것을 추가 한 것입니다. 그래도 맨 페이지가 무엇입니까?
Karel Adams
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.