実行中のアプリケーションのウィンドウサイズの設定


28

Ubuntu(xfceまたはgnome)内でコマンドライン経由でアプリケーションを起動しようとしていますが、現在実行中の特定のアプリの特定のウィンドウのサイズを設定する一般的な方法があるかどうか疑問に思っていましたか?

回答:


18

のようなものをインストールすれば、これは簡単ですxdotool。その後、次のことができます。

xdotool search --name "window name" windowsize 300 400

「ウィンドウ名」をウィンドウタイトルに表示される名前または正規表現に置き換えます(ウィンドウクラスやその他のさまざまな項目でも検索できます)。windowsizeの後に表示される2つの数字は、それぞれ幅と高さです。(パーセントなどを使用することもできます)man xdotoolインストールされていることを確認してください。

ただし、Lucid以前を使用している場合は、xdotool Webサイトにアクセスして新しいバージョンを入手することをお勧めします。

たとえば、Firefoxのサイズを変更するには:

xdotool search --name "Mozilla Firefox" windowsize 1024 768

3
装飾なしでフルスクリーンウィンドウのサイズを変更する方法はありますか(タイトルバー)?そして、画面上の正確な位置を設定します(x = 0、y = 0など)?最大化されたmplayerが800x600 x = 0 y = 0になり、数分後に同じフルスクリーンモードになるようにこれを設定しようとしています。おかげで
ピーター

15

ウィンドウマネージャが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

Xlibはこちらから入手できます:sourceforge.net/projects/python-xlib/
source

私がprint pid得るとき<Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>...実際のPIDを分離するための提案はありますか?
khaverim

Nvm。可能とは思えませんが、を使用して回避策を実行できますname
-khaverim

1
@khaverimうーん。前回PIDを書いたときからこのAPIは変わったと思います。私は答えを更新し、あなたがによって返された値を取りたいget_full_propertyと行う.value[0]valueある配列は
マイケル・Mrozek

1
python Xlibは次の方法でインストールできます:sudo apt-get install python-xlib(Ubuntu上)
Tom

4

XFCE固有のpyxfceがあり、Python言語を使用してそれを行うことができます。Pyxfceは、特にウィンドウマネージャーと通信できるAPIです。これをコマンドラインから使用するには、最初にスクリプトを準備する必要があります。

用途によっては、XウィンドウID(別の回答で言及されているpython-xlibやxdotoolsなど)を使用するXベースのAPIと、ウィンドウタイトルに一致する文字列(wmctrlなど)を使用する他のAPIを使用することの重要性はありませんウィンドウ間の混乱。それぞれのタイトルに同じキーワードが含まれている場合があります。



0

wmctrlが私に最も適していることがわかりました。UbuntuやRaspbian向けの小さなパッケージとして、また他のディストリビューション向けにも入手可能です。


我々は持っているwmctrlに言及答えを、私たちは、ショーはそれを使用する方法という回答がありません。デモで答えを広げて、人々がそれを受け取って特定の用途に適応できるようにすることができますか?ありがとうございました!
ジェフシャラー

手元に手本があれば、確かに追加しました。それでも、それはマンページの目的ではありませんか?
カレルアダムス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.