Gnome(Ubuntu):ターミナルからコマンドラインを使用してプログラムウィンドウを前面に表示する方法


14

私は、多数のWindowsを開いている特定の作業環境を持っています。プログラムまたはコマンドラインを使用して、既知の名前/タイトルのウィンドウを前面に表示するにはどうすればよいですか?

回答:


12

私は以前はを使用していましたがwmctrl -a <name>、正常に動作しますが、最近に切り替えましたxdotool。例:

xdotool search --name <name-or-regex-for-name> windowraise

他にも多くの機能があります。

インストールする:

sudo apt-get install xdotool


5
xdotool windowraiseウィンドウを前面に移動しますが、ウィンドウにフォーカスを与えたり、ウィンドウを使用してデスクトップに切り替えたりしません。代わりに、windowactivate3つすべてを実行します。
jozxyqk

6

さて、sudo apt-get install wmctrl-ingの後、次のbashスクリプトで遊ぶことができます:

#! /bin/bash

WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird

# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:

if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0

ここで見つけたもの


4
ブラケットとバッククォートの必要はありません:if ! wmctrl -l | grep -q "$WINTITLE"
追って通知があるまで一時停止しました。

wmctrl持っている-iその進識別子を持つウィンドウでの作業をサポートしていオプションを、。そして、あなたはこれを行うことができますので、wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai似たような行うことになる-
ヴラド・ardelean

0

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

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

いくつかの発言:

  • デフォルトでxdotool searchFirefox、ウィンドウ名、クラス、およびクラス名でパターン(ここ)を検索します。サーチスペースを制限する場合は、関連する--class--nameまたは--classnameオプションを使用します。
  • この--desktop 0オプションは、検索を最初のデスクトップに制限します。これはXGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)、いくつかのコメントで言及されていることを回避するための回避策のようです。
  • この記事を書いている時点では、このxdotoolプロジェクトは2015年以降行き詰っています。今でも私の選択のツールです。個人的な理由から、Jordan Sissel(元の著者)は以前ほど活発ではないので、プロジェクトに貢献することをためらわないでください。


これはAskUbuntu投稿し回答のコピーですが、Linuxフレーバーに依存しないので、ここでも役立つかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.