web-dev-qa-db-ja.com

特定のタイトルを持つすべてのウィンドウを上げる

私は、1つの特定のタイトルを持つすべてのウィンドウを上げる方法を見つけようとしています。

たとえば、私はsuperconkyという名前の2つのウィンドウを持っています(そうですね、ご存知のとおり、私はlubuntuでconkyを実行しようとしています)。

LXDEフォーラムから入手したコマンドがあります:sh -c 'wmctrl -k on; wmctrl -a superconky;'

Conkyを除いて、デスクトップの表示に使用します。それは完璧に動作しますが、1人のコンキがいる場合のみです。 2つ以上ある場合は、1つを残し、他のすべてを最小化します。

So、すべてのウィンドウを上げるにはどうすればよいですか?

前もって感謝します。

2
Juraj Fiala

「では、すべてのウィンドウを上げるにはどうすればよいですか?」

多分あなたはすべてのconkyウィンドウを意味しますか?

Wmctrlは、ウィンドウ名を指定することによって必要なことを行っていないため、ウィンドウIDを指定するより正確な方法を使用する必要があります。

ウィンドウIDのリストを取得するには

wmctrl -l

したがって、ウィンドウのタイトルにスーパーコンキーがあると仮定して、そのリストからウィンドウIDのみを抽出します

windowid_list="`wmctrl -l | sed -ne 's|^\([^ ]*\).*superconky.*|\1|p'`"

次に、リストを処理します

if [ -n "${windowid_list}" ]
then
     for windowid in ${windowid_list}
     do
         wmctrl -i -a "${windowid}"
     done
fi

数値windowidを示す「-i」フラグは、アクションフラグ(「-a」、「-R」など)を指定する前に指定する必要があるか、何も起こらないことに注意してください。

また、「-a」はウィンドウを上げてフォーカスし、一度に1つのウィンドウしかフォーカスできないことに注意してください。

また、2番目のスーパーコンキーウィンドウが最初のウィンドウの真下にある場合、2番目のウィンドウを上げると、最初のウィンドウが見えなくなります。

4
J G Miller