1

ウィンドウの最大サイズ (つまり、画面のサイズから画面の端にあるパネルを引いたもの) を bash スクリプトで取得しようとしています。私は Kubuntu を使用していますが、それがどの Linux システムでも機能するなら、それは素晴らしいことです。

現在、私の解決策は、 wmctrl を介してアクティブ ウィンドウを最大化することです。

wmctrl -r :ACTIVE: -b add,maximized_horz,maximized_vert

xwininfo のおかげでウィンドウのサイズを取得します。

xwininfo -id $(xdotool getactivewindow)

残念ながら、ウィンドウのサイズはわかりませんが、ウィンドウのサイズとその境界線です(境界線を削除すると、期待値が得られます)。

だから私の質問は:

1 - ウィンドウの境界線を削除するコマンドはありますか? (私は手動で行う方法しか知りません)

2 - これを行うためのより良い方法はありますか? (ウィンドウを最大化せずに実行できれば、それは素晴らしいことです)

よろしくお願いいたします。

4

3 に答える 3

3

私がボーダーと呼んでいたのは実際にはタイトルバーであることに気付きました...使用するxwininfo -statsと、実際にボーダーの幅が得られます(私の場合は0)。タイトル バーの高さ (ウィンドウを最大化した後) は、[絶対左上] フィールドで取得されます。以下は、予想される高さを示しています。

eval $(xwininfo -id $(xdotool getactivewindow) | sed -n -e "s/^  Height: \+\([0-9]\+\).*/Height=\1/p" -e "s/^  Absolute upper-left Y:  \+\([0-9]\+\).*/HeightTitleBar=\1/p")
Height=$(($Height+$HeightTitleBar))

ご協力いただきありがとうございます !

于 2013-08-30T09:21:48.567 に答える
1

これにより、高さ、幅、境界線の幅が取得されます。

{ read __ WIDTH; read __ HEIGHT; read __ __ BORDER_WIDTH; } < <(xwininfo -id "$(xdotool getactivewindow)" | grep -o -e 'Height:.*' -e 'Width:.*' -e 'Border width:.*')
echo "Height: $HEIGHT, Width: $WIDTH, Border width: $BORDER_WIDTH"

これで、$HEIGHT、$WIDTH、$BORDER_WIDTH ができました。算術式でそれらを再計算することができます: http://tldp.org/LDP/abs/html/arithexp.html

于 2013-08-29T17:21:41.377 に答える