私はそれが不可能であることをかなり確信しています。GNOMEのようなウィンドウ環境でソフトウェアがこれを処理することを期待し、ソフトウェアメーカーがウィンドウ環境でこれを処理することを期待していることが原因です。
Devilspieは良いアイデアですが、パターンマッチングを行います(つまり、name == 'google-chrome'の場合)。では、2つのブラウザを開くとどうなりますか?彼らは両方とも同じワークスペースに移動しますか?6x3 = 18のワークスペースがあり、それぞれにChromeの特定のインスタンスがあります。これらのプログラムの名前を変更できれば助かります(「google-chrome1」、「google-chrome2」など)。しかし、その方法を見つけることができません。したがって、wmctrlを使用する必要があります。
wmctrlは、ウィンドウタイトルを使用するだけでなく、少し優れたb / cです。ウィンドウIDを使用したり、現在ハイライトされているウィンドウを使用したりすることもできます。ウィンドウIDは、すぐに生成されないため、b / cを取得するのが面倒です。下記参照
gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
その後、geditが終了するまで制御はコマンドラインに戻りません。これを回避するために私たちがしなければならないすべては&
標識を置くことです
gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
しかし現在は、ウィンドウマネージャーがウィンドウを起動する前に、99.999%の時間でコマンドラインに制御が戻り、ウィンドウIDを見つける方法はありません。非常に複雑なループテクニックを設定して、新しいウィンドウが作成されたかどうかをテストし、それが目的のウィンドウであるかどうかを推測する必要があります。
フラグを使用し:ACTIVE:
てアクティブウィンドウを確認することにも同じ問題があり、プログラムの実行が完了するまで待機しません。
wmctrl
とても奇妙なプログラムだと思います。マウスを持たない人や、ワークスペース間でプログラムを物理的にドラッグできない人向けに設計されたようです。