web-dev-qa-db-ja.com

Gnome(Ubuntu):ターミナルからコマンドラインを使用してプログラムウィンドウを前面に表示するにはどうすればよいですか?

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

14
GJ.

以前はwmctrl -a <name>、これは正常に動作しますが、最近 xdotool に切り替えました。例:

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

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

インストールするには:

Sudo apt-get install xdotool

12
frabjous

さて、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

私が見つけたもの ここ

6
digitxp

xdotool を使用する場合、1つのコマンドだけを使用して、特定のアプリケーションまたはクラスの all ウィンドウを前面に表示するのは難しいようです。シェルレベルで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(原作者)は以前ほど活動的ではないので、プロジェクトに貢献することを躊躇しないでください。

これは AskUbuntuに投稿した回答 のコピーですが、Linuxフレーバーに依存しないと思うので、ここでも役立つ可能性があります。
0
Sylvain Leroux