起動したアプリケーションが同じデスクトップ上に留まらない

起動したアプリケーションが同じデスクトップ上に留まらない

読み込み時間が長いアプリケーション (NetBeans、Eclipse など) では、プロセスが別のデスクトップで開始された場合でも、現在のデスクトップに「ジャンプ」するのはなぜですか?

デスクトップ 3 に移動してアプリケーションを起動し、待機中にデスクトップ 2 に移動すると、アプリケーションが読み込まれるとデスクトップ 2 で起動します。これを変更する方法はありますか?

答え1

これはかなり複雑な問題です。

ウィンドウ マネージャー (WM) は、だれが想像したでしょうが、ウィンドウを管理することになっています。これには、ウィンドウの位置、寸法、デスクトップ、装飾の有無などが含まれますが、これらに限定されません。WM の一部ではないのは、アプリケーションの起動です。WM は、そのプロセスが生成するウィンドウのみを認識し、管理します。それで、何が起こるのでしょうか。

  • デスクトップ2に切り替える
  • NetBeansを起動する
    • スプラッシュスクリーンはデスクトップ2に装飾のないウィンドウとして作成されます。
  • デスクトップ 3 に切り替える
    • NetBeans スプラッシュスクリーンはデスクトップ 2 のままです
  • NetBeansが完了し、最終的にメインウィンドウが作成されます。これは完全に新しいウィンドウであるため、現在のデスクトップに送信されます。

この場合の問題は、ウィンドウマネージャがまったく認識していない(または無知である、よくわからない)ことです。誰がウィンドウが属する場所。2 つの可能性があります。

次の機能を実行するウィンドウ マネージャーを探します...

  1. ...親プロセスによるウィンドウのグループ化をサポート
  2. ...すべてのウィンドウにルールを定義できます

または、次のようなヘルパーアプリケーションを入手しますデビルズパイウィンドウルールを定義できます。

答え2

compiz を使用する場合 (はい、12.04 でも使用できます ;) )、をインストールしてcompizconfig-settings-managerからサブメニューに移動して、アプリケーションとデスクトップのクラス (名前) を選択するPlace Windows新しいものを追加してみてください。Fixed Window tab

そうでなければ、マウスコントロールこれにより、アプリケーションを起動し、デスクトップの 1 つに強制的に移動できるようになります。

関連情報