Linux(X)で正確なウィンドウ情報(寸法など)を取得する方法は?


22

Linuxで正確なウィンドウ情報を取得するにはどうすればよいですか?私はwmctrlを使用してウィンドウのサイズを取得できることを知っていますが、ウィンドウの実際のサイズはウィンドウの装飾によって異なる場合があります。次の情報と方法が必要です。

* precise window dimensions
* precise available screen space (excluding panels like gnome-panel)
* the ability to set a window to be a certain size, including decorations

これを行う最良の方法は何でしょうか?

前もって感謝します!


Python側にもっと興味があれば、これをプログラミングに関する姉妹サイトStackOverflow.comに移行できます。お知らせください。
グヌーピ

@Gnoupi:ありがとう、しかしこれは実際にはSOからのクロスポストです。ユーザーがここでより良い答えを得るかもしれないと提案したので。元の質問はstackoverflow.com/questions/3233660/…にあります。
メロール

なるほど、分かりました。この場合、質問のpythonの部分は編集できると思います。SUに関する回答は、プログラミングではなく他のコマンドを使用している可能性が高いでしょう。SOに関する質問は、おそらくPythonでそれを行う方法を尋ねることに焦点を当てるべきです。
グヌーピ

回答:


26

役立つかもしれないいくつかのコマンドラインプログラムがあります:

  • xwininfo:装飾を除くウィンドウのサイズと、絶対(画面に対して)および相対(ウィンドウの領域に対して)の位置を取得します。
  • xdpyinfo:これは、スクリーンデバイスに関する情報を、これまでに知りたくない情報よりもはるかに多く提供します。しかし、それは出力のどこかのようなものがあるscreen: #0が続くがdimension: 1024x768

装飾などの情報取得する方法はありますか?
ビクター

6

>正確なウィンドウ寸法

次の例(少なくともsh、bash、およびzshで動作します)は、タイトルのどこかに "KWrite"があるすべてのウィンドウのフレームありとなしのウィンドウジオメトリを印刷します。

windows="$(wmiface findNormalWindows "KWrite" "" "" "" "" "")"
for window in $(echo $windows); do
{
  echo $window
  wmiface framePosition $window
  wmiface frameSize $window
  wmiface windowPosition $window
  wmiface windowSize $window
  echo
} done

>利用可能な正確な画面スペース(gnome-panelなどのパネルを除く)

xrandr

例えば:

xrandr | head -n1 | cut -d, -f2 | cut -d" " -f3-5

私の場合の出力:

4400 x 2560

パネルを除外する方法がわからない-複数のモニターがある場合、それらは仮想画面の真ん中にある可能性があるため、パネルのない画面ジオメトリは「使用可能な画面スペース」よりも複雑になる可能性があります。

>装飾を含む特定のサイズにウィンドウを設定する機能

wmiface setFrameGeometry $window $x $y $width $height

さらに可能なコマンドについては、wmifaceのREADMEをお読みください。


2
wmifaceには、すべての(任意の)ディストリビューションが含まれているわけではありません。:私はここからUbuntuのパッケージを使用してミントにインストールすることができましたkde-apps.org/content/show.php?content=40425 ここで見つけることができます言及したREADME:gitorious.org/wmiface/wmiface/source/...を
slinkp

xwininfo、xdotool、およびxpropの組み合わせを使用して装飾を含む完全なジオメトリを取得する別の方法については、このコメントの2番目の部分unix.stackexchange.com/a/156349/84607を参照してください。
slinkp
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.