실행 중인 애플리케이션의 창 크기 설정

실행 중인 애플리케이션의 창 크기 설정

Ubuntu(xfce 또는 gnome)에서 명령줄을 통해 애플리케이션을 시작하려고 하는데 현재 실행 중인 특정 애플리케이션에 대해 특정 창의 크기를 설정하는 보편적인 방법이 있는지 궁금합니다.

답변1

다음과 같은 것을 설치하면 더 쉽게 할 수 있습니다.xdotool. 그러면 다음과 같이 할 수 있습니다:

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

"창 이름"을 창 제목에 나타나는 이름 또는 정규식으로 바꾸십시오(창 클래스 및 기타 다양한 항목으로 검색할 수도 있음). 창 크기 뒤에 나타나는 두 숫자는 너비와 높이입니다. (백분율 등을 사용할 수도 있습니다.) man xdotool설치 후 확인하세요.

Lucid 이전 버전을 사용하고 계시다면 방문을 권장합니다.xdotool 웹사이트그러나 최신 버전을 얻으십시오.

예를 들어 Firefox 크기를 조정하려면 다음을 수행하세요.

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

답변2

창 관리자가 Xlib를 지원하는 경우 있습니다. 여기서 Python은 창 크기를 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

답변3

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

사용 사례에 따라 X 기반 API를 사용하는 것이 중요합니다. 각 제목에 동일한 키워드가 있을 수 있는 창 간에 혼동이 있을 수 없습니다.

답변4

xwindowinfo여기의 몇 가지 팁과 다른 질문을 바탕으로 다음을 사용하여 이 Bash 스크립트를 생각해냈습니다 xdotool.

  • 명령줄에서 치수 정의
  • 창을 선택하세요
  • 선택한 창에 대한 관련 정보를 요약합니다.
  • 대상 창 크기 조정
#!/bin/bash

# Use xwininfo to get the id (and name) of a window (click to select)
# Use xdotool to resize the window to a specific size

if [[ $# -ne 2 ]]; then
    echo "Usage $0 width height"
    exit 0
fi

w=$1
h=$2

echo "Click on the target window"

info=$(xwininfo)

info_id=`echo "$info" | grep 'Window id:'`
info_w=`echo "$info" | grep 'Width:'`
info_h=`echo "$info" | grep 'Height:'`

if [[ "$info_id" =~ ^.+"Window id: "([^[:space:]]+?)" \""(.+)"\""$ ]]; then
    id="${BASH_REMATCH[1]}"
    title="${BASH_REMATCH[2]}"
fi

if [[ "$info_w" =~ "Width: "(.+) ]]; then
    window_w=${BASH_REMATCH[1]}
fi
if [[ "$info_h" =~ "Height: "(.+) ]]; then
    window_h=${BASH_REMATCH[1]}
fi

read -p "Resize \"$title\" ($window_w x $window_h) to $w x $h? [Y / n] " answer

if ! [[ "$answer" == "" || "${answer,,}" == "y" ]]; then
    exit 0
fi

xdotool windowsize $id $w $h

관련 정보