Ubuntu / Gnome:特定のワークスペースでアプリケーションを開く


10

特定のワークスペースで開くようにアプリケーションに指示するにはどうすればよいですか?


より詳しい情報:

ワークスペース2にC ++ IDEを、ワークスペース3にJava IDEを、ワークスペース4に電子メール、ブラウザー、その他を配置したいと思います。ログイン時に実行するシェルスクリプトも使用します。

#!/bin/bash
gnome-terminal & # WS 1
netbeans-6-9-1 & # WS2
qtcreator-2-0-1 & # WS 3
firefox & # WS 4
thunderbird & # WS 4

もちろん現在はすべて現在のワークスペースで開いています...各コマンドを開始するワークスペースを指定する方法はありますか?

前もって感謝します!


1
これらのプログラムを常に実行している場合、最も簡単で最も簡単な方法は、必要な場所にすべてをロードし、「ログアウト時にアプリケーションを記憶する」ことです
Unfundednut

1
@MrStatic:提案に感謝しますが、他の理由でシェルスクリプトに含める必要があります。そのため、「ログアウト時にアプリケーションを記憶する」ことができません
bguiz

回答:


4

devilspieを使用して、どのワークスペースにどのウィンドウを配置するかに関するルールを設定できます。

正確な例については、ドキュメントを参照してください。

しかし、MrStaticも良い提案をしています。最初にそれを試してください、あなたはあなたのシェルスクリプトを必要としないかもしれません。

シェルスクリプトで使用できるコマンドにする必要がある場合は、wmctrlを参照してください


提案をありがとう、チェックしてみます-私はまだCLIのみのソリューションを優れたソリューションであると考えています。
bguiz

4
wmctrlを試してください。上記の回答にリンクを追加しました。
ミケル、2011年

7

私はwmctrlツールを試してみましたが、私にとってうまくいった最も簡単な解決策は、次のコマンドでウィンドウを移動することです:

wmctrl -r <WindowName> -t <WorkspaceNumber>

ワークスペース番号は0から始まることに注意してください。最後に、次のコマンドを使用して好みのワークスペースに移動できます。

wmctrl -s <WorkspaceNumber>

1

この基本構造をスクリプトで使用して、特定のアプリケーションのセットを特定のワークスペースで開きます。この例では、ターミナルを開いてワークスペース1に移動します...

cd
gnome-terminal
until wmctrl -l | grep -q "me@mypc ~"; 
do
    sleep 0.1
done
wmctrl -r "me@mypc ~" -t 1

このコードについて少し説明をいただければ幸いです。なぜcdで始まるのですか?までに何を期待していますか?「me @ myspc〜」はウィンドウ名ですか?
wranvaud

0

wmctrlをインストールする

sudo apt install wmctrl

スクリプトを作成します(この例では、2番目のワークスペース(-t 1)にthunderbird ):

#!/bin/sh
(thunderbird &)  & sleep 5 && 
sh -c "wmctrl -i -r `wmctrl -l | grep Thunderbird` -t 1"

wmctrlでアプリケーション名を知るには、端末をテーピングして表示できます。

wmctrl -l

スクリプトの正しい名前に置き換えます。

大文字でやり直してください(「サンダーバード」ではなく「サンダーバード」)!!

3Dワークスペース(-t 2)でのFirefoxの他の例:

#!/bin/sh
(firefox &)  & sleep 5 && 
sh -c "wmctrl -i -r `wmctrl -l | grep Firefox` -t 2"

シナモンと一緒にDebain 10に取り組みます。しかし、すべてのために働くはずです


-1

私はそれが不可能であることをかなり確信しています。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とても奇妙なプログラムだと思います。マウスを持たない人や、ワークスペース間でプログラムを物理的にドラッグできない人向けに設計されたようです。


OPは、ブラウザはワークスペース4に進むと述べました。セッション起動スクリプトの実行後に他のワークスペースでブラウザーを開くことができるようにする必要がある場合、そのスクリプトの最後のコマンドがスリープ状態になる可能性があります。pkill devilspie。
ミケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.