Command-Line

如何準確找到窗戶尺寸和位置,包括裝飾品?

  • June 29, 2021

我一直在試圖找出一個小腳本中使用的視窗的大小。我目前的技術是wmctrl -lG用來找出尺寸。然而,問題是這樣的:

它給出的 x 和 y 數字用於視窗裝飾的左上角,而高度和寬度僅用於內容區域。這意味著如果視窗裝飾添加 20px 的高度和 2px 的寬度,wmctrl 將報告視窗為 640x480,即使它在螢幕上佔用 660x482。這是一個問題,因為我的腳本下一步將使用該區域來告訴 ffmpeg 記錄螢幕。我想避免在目前設置中對視窗裝飾的大小進行硬編碼。

適合的是獲取視窗裝飾大小的方法,以便我可以使用它們來確定 640x480 內容區域的位置,或者直接獲取內容區域位置的方法,而不是視窗裝飾的位置.

以下腳本將為您提供左上角的螢幕座標和視窗大小(沒有任何裝飾)。. . . xwininfo -id $(xdotool getactivewindow)包含足夠的資訊給你。


#!/bin/bash
# Get the coordinates of the active window's
#    top-left corner, and the window's size.
#    This excludes the window decoration.
 unset x y w h
 eval $(xwininfo -id $(xdotool getactivewindow) |
   sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p" \
          -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \
          -e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \
          -e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" )
 echo -n "$x $y $w $h"
#

引用自:https://unix.stackexchange.com/questions/14159