正確なウィンドウサイズと位置(トリムを含む)をどのように知ることができますか?

正確なウィンドウサイズと位置(トリムを含む)をどのように知ることができますか?

私は小さなスクリプトで使用するためにウィンドウのサイズを見つけようとしました。私の現在の技術はwmctrl -lG寸法を調べることです。しかし問題はこうです。

与えられた x と y の数字はウィンドウ装飾の左上隅に適用され、高さと幅はコンテンツ領域にのみ適用されます。つまり、ウィンドウの装飾が高さ20ピクセルと幅2ピクセルを追加すると、画面で660x482を占めますが、wmctrlはウィンドウを640x480と報告します。私のスクリプトの次のステップは、この領域を使用してffmpegに画面を記録するように指示することです。現在の設定でウィンドウ装飾のサイズをハードコードすることを避けたいです。

適切なアプローチは、ウィンドウ装飾のサイズを取得し、それを使用して640x480コンテンツ領域の位置を決定するか、ウィンドウ装飾の代わりにコンテンツ領域の位置を直接インポートすることです。

ベストアンサー1

次のスクリプトは、左上隅の画面座標とウィンドウサイズ(装飾なし)を提供します。 。 。 。 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"
#

おすすめ記事