関連するが、より具体的な質問 here を尋ねました。プログラムを起動する場所を指定する方法があるかどうかを知りたいです。基本的に、ログインするたびに起動されるシェルスクリプトを書きたいです。
google-chrome www.gmail.com -workspace=1 -monitor=1
google-chrome www.facebook.com -workspace=1 -monitor=2
google-chrome www.youtube.com -workspace=1 -monitor=3
gedit a.txt b.txt c.txt -workspace=2 -monitor=1
gedit d.txt e.txt f.txt -workspace=2 -monitor=2
gedit g.txt h.txt i.txt -workspace=2 -monitor=3
mplayer Terminator1.mkv -workspace=3 -monitor=1
mplayer Terminator2.mkv -workspace=3 -monitor=2
mplayer Terminator3.mkv -workspace=3 -monitor=3
wmctrl と呼ばれるプログラムがありますが、多くの点で失敗するため、どこから始めてもわからないのです。原理的には簡単で、ウィンドウを指定して移動します。ただし、ウィンドウを指定するのは簡単ではありません。2つのブラウザの名前は両方とも同じ「Google Chrome」です。一意のウィンドウIDを使用できますが、この情報を取得するのは簡単ではありません(わかりませんが、実行時に返されません)。次に、:ACTIVE:
オプションは、最後に起動されたプログラムですが、コマンドラインに制御が戻ったときにウィンドウが起動されるという保証はありません。さらに悪いことに、ワークスペース/モニター内のオプションの座標ではなく、グローバル座標を指定する必要があります。
これが私が現在取っているアプローチです。 wmctrlを使用してウィンドウを移動するスクリプトをGitHubにアップロードしました( here または here を参照)。
以下を使用して、プログラムを起動するディスプレイを決定できます。
$ DISPLAY=":0.1" program_name
一部のプログラムでは、構成ファイルでデフォルトの表示を設定できます。 mplayerはこれらのプログラムの1つです。以下を〜/ .mplayer/configに追加します
display = ":0.1"
最初の表示は0.0です。 2番目のディスプレイは0.1です。 3番目のディスプレイは0.2です。
ソフトウェアセンターからCompizConfig Settings Managerをインストールすることにより、GUIによってプログラムが起動するワークスペースを設定できます。
まず、配置したいプログラムのインスタンスを開きます。
CCSMを実行して[ウィンドウ管理]に移動し、[ウィンドウの配置]をアクティブにして、クリックして[固定ウィンドウの配置]を選択します。
[ビューポートが固定されたウィンドウ]で、[新規]をクリックします。表示されるダイアログで、「+」ボタンをクリックします。次に、次のダイアログで「グラブ」ボタンをクリックし、起動されたプログラムと「追加」をクリックします。次に、ビューポートの値を設定します:X = 1、Y = 1は左上、X = 1、Y = 2は左下、X = 2、Y = 1は右上、X = 2、Y = 2は下正しい。
他に何もしない場合、これはウィンドウクラスに設定されますが、ID、Typeなど、他のオプションもありますが、IDのみが取得できません。