web-dev-qa-db-ja.com

実行中のアプリケーションのウィンドウディメンションの設定

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

29
Jamie

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

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

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

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

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

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

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

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

使用方法によっては、XウィンドウID(python-xlibやxdotoolsなど)を使用してXベースのAPIを使用することと、ウィンドウタイトルに一致する文字列を使用する他のもの(wmctrlなど)を使用することの重要性は、それぞれのタイトルに同じキーワードが含まれている可能性があるウィンドウ間の混乱。

4
Benjamin
#!/bin/bash
#get window pid under mouse
xprop -id $(xwit -current -print | cut -d ":" -f 1) | grep _NET_WM_PID | cut -d "=" -f2 | cut -c 2-
3
Wilton lazary

Wmctrlが自分に最も適していることがわかりました。 Ubuntu用とRaspbian用の小さめのパッケージとして利用でき、他のディストリビューションでも利用できる可能性があります。

0
Karel Adams