私は何年もの間 Linux でプログラミングを行ってきましたが、表示に関する知識はあまりありません。ここで、どのウィンドウ (おそらく私のプロセスによって作成されたウィンドウではない) がユーザーによってフォーカスされているかを監視し、移動やサイズ変更などの簡単な操作を行う別のプロセスを作成するよう求められます。
出来ますか?それを達成するための一般的な方法はありますか?誰かが私が調べることができるヒントを教えてもらえますか? ありがとう!
私は何年もの間 Linux でプログラミングを行ってきましたが、表示に関する知識はあまりありません。ここで、どのウィンドウ (おそらく私のプロセスによって作成されたウィンドウではない) がユーザーによってフォーカスされているかを監視し、移動やサイズ変更などの簡単な操作を行う別のプロセスを作成するよう求められます。
出来ますか?それを達成するための一般的な方法はありますか?誰かが私が調べることができるヒントを教えてもらえますか? ありがとう!
xdotoolを使用します。キーストローク、マウスアクション、アクティブなウィンドウの検索などをエミュレートできます。
例: (最大化されていない) ターミナル ウィンドウでこのコマンドを実行すると、10 ピクセル下と右にジャンプします。
xdotool windowmove --relative $(xdotool getwindowfocus) 10 10
ほとんどのディストリビューションで利用できるはずです。つまりsudo apt-get install xdotool
、他のパッケージ マネージャーでも同様です。
基本的に、すべてを行う XWindow システムです。ただし、単純なユーティリティを使用して多くのことを制御できます。たとえば、VLC ウィンドウのタイトルを変更したい場合は、次のようにできます。
# this will ask me to point to a window and I will point to VLC player
$ xwininfo -all | grep 'xwininfo: Window id:'
xwininfo: Window id: 0x2000011 (has no name)
これは、私0x2000011
のシステムで実行されている VLC Player のウィンドウ ID です。このウィンドウを使用して、プロパティを取得または設定できます。これを行うには、xprop
ユーティリティを使用できます。
for p in _NET_WM_VISIBLE_NAME _NET_WM_NAME; \
do xprop -id 0x2000011 -format $p 8s -set $p "MyVLC"; done
これにより、VLC Player のウィンドウ タイトルがMyVLCに変更されます。
これはxdotool
舞台裏でも行われていることですが、これらのコマンドはかなり低レベルであり、デフォルトでインストールされる可能性が非常に高いです。
参考文献: