우분투 (xfce 또는 gnome) 내에서 명령 줄을 통해 응용 프로그램을 시작하려고하는데 현재 실행중인 주어진 응용 프로그램의 주어진 창 크기를 설정하는 일반적인 방법이 있는지 궁금합니다.
답변
당신이 같은 것을 설치하면 이것은 더 쉽습니다 xdotool
. 그럼 당신은 할 수 있습니다 :
xdotool search --name "window name" windowsize 300 400
“창 이름”을 창 제목에 나타나는 이름 또는 정규 표현식으로 바꾸십시오 (창 클래스 및 기타 다양한 항목으로 검색 할 수도 있음). 창 크기 다음에 나타나는 두 숫자는 각각 너비와 높이입니다. (퍼센트 등을 사용할 수도 있습니다.) man xdotool
일단 설치되면 참조하십시오 .
Lucid 또는 이전 버전을 사용하는 경우 xdotool 웹 사이트 를 방문하여 최신 버전을 얻는 것이 좋습니다 .
예를 들어 Firefox의 크기를 조정하려면
xdotool search --name "Mozilla Firefox" windowsize 1024 768
답변
창 관리자가 Xlib를 지원하는 경우가 있습니다. 이것은 파이썬을 사용하여 창의 크기를 500×300으로 설정합니다.
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
답변
XFCE 에만 해당 하는 pyxfce 는 파이썬 언어 를 사용하여 그렇게 할 수 있습니다. Pyxfce는 무엇보다도 창 관리자와 통신 할 수있는 API입니다 . 명령 행에서 이것을 사용하려면 먼저 스크립트를 준비해야합니다.
사용에 따라 X 윈도우 ID (예 : 다른 답변에서 언급 한 python-xlib 또는 xdotools)를 사용하여 X 기반 API를 사용하는 것의 중요성 (wmctrl과 같은)과 같은 윈도우 제목과 일치하는 문자열을 사용하는 다른 것보다 각각의 제목에서 동일한 키워드를 가질 수있는 창 사이의 혼동.
답변
#!/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-
답변
wmctrl이 가장 적합하다는 것을 알았습니다. 우분투와 라스베리 안, 그리고 다른 배포판에도 작은 패키지로 제공됩니다.