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
답변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