プログラムウィンドウを別のウィンドウの前面に表示するシェルコマンド?


12

すでに開始されたプログラムをgnomeで別のプログラムの前に表示するためのシェルコマンドはありますか?

つまり:

GeditとNautilusが起動します。ノーチラスはバックグラウンドにあり、Geditはフォアグラウンドにあります。

シェルコマンドでNautilusを前面に表示するにはどうすればよいですか?


回答:


14

注意:


確かに、私が作曲しているのと同じように投稿を編集してください... :()
frabjous

wmctrl -lでウィンドウ名を見つけることができます。名前は最後のダッシュの後のテキストです:<ウィンドウID> <デスクトップID> <クライアントマシン> <ウィンドウタイトル>
jorfus

8

別のオプションはxdotoolです。

xdotool search --class Nautilus windowactivate


2
私のために失敗するXGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
Tino

おそらくここのバグ-私の経験では--classnameまたは--name(既知の場合)は--classが機能しない場合でも機能することがあります。
2016年

私の場合、からのIDを使用してウィンドウを上げ、xwininfoいくつかの追加の異なるxdotoolコマンドを発行することができました(これはもう覚えていません)。(を取り除くためにxwininfo)それを自動化しようとすると、選択された非表示のウィンドウも原因で、視覚的なアーティファクトが発生しました。私は単純に、任意のウィンドウに正しく対処する一般的な方法を見つけませんでした。wmctrl -aすべてに切り替えた後、それ以上調整することなく、箱から出してすぐに問題なく動作しました。私はが好きxdotoolですが、正しいウィンドウだけを上げるのは難しいようです。
Tino

2

を使用する場合xdotool、1つのコマンドだけを使用して、特定のアプリケーションまたはクラスのすべてのウィンドウを前面に表示することは難しいようです。forシェルレベルでループにラップすることで、より良い結果が得られます。Bashの使用:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

いくつかの発言:

  • デフォルトでxdotool searchは、はFirefoxウィンドウ名、クラス、およびクラス名でパターン(ここでは)を検索します。あなたは探索空間を制限したい場合は、関連する使用--class--nameまたは--classnameオプションを。
  • この--desktop 0オプションは、検索を最初のデスクトップに制限します。これはXGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)、一部のコメントで言及されていることを回避するための回避策のようです。
  • この記事の執筆時点では、このxdotoolプロジェクトは2015年以降停止しています。それでも、私の選択するツールとして残っています。個人的な理由で、Jordan Sissel(元の作者)は彼ほど活発ではないので、プロジェクトに貢献することをためらわないでください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.