wmctrl
を使用して端末から少し遊んだ後、次のステップに進みます。 bashスクリプトからwmctrl
を実行します。
完全に単独である場合、bashでwmctrl
を実行します。
例:
#!/bin/bash
SOUDIR=/usr/bin
echo "$SOUDIR"
$SOUDIR/wmctrl -i -r 0x040000b3 -e 0,0,0,500,800
しかし、Firefoxの行コードを追加しても機能しません。睡眠時間を追加してもうまくいくと思いますが、私は間違っていました。
これは現在のコードです:
#!/bin/bash
firefox http://www.google.de
sleep 30s
SOUDIR=/usr/bin
echo "$SOUDIR"
$SOUDIR/wmctrl -i -r 0x040000b3 -e 0,0,0,500,800
このbashコードを使用してWebブラウザーのサイズを変更する方法は?
私はbashとubuntuが初めてです。
いくつかの点でOK:
/usr/bin
を追加する必要はありません。シェルはそれ自体でwmctrlを見つけます。これは、移植性を伴う可能性のある非常に特殊なケースです。firefox
コマンドの最後にアンパサンドを追加します。スクリプトは、前のコマンドが終了した場合にのみ続行します。 firefoxは終了しないため、スクリプトはそれを待ちます。wmctrl
で複数のスクリプトを実行しました。個人的に私はこのようにします:
#!/bin/bash
firefox http://www.google.de &
sleep 3
WM_ID=$(wmctrl -lx | awk '$3~/Navigator.Firefox/ {print $1}')
wmctrl -i -r $WM_ID -e 0,0,0,500,800
ここでfirefoxを開き、バックグラウンドで実行させてから、クラスNavigator.Firefox
に一致するウィンドウの16進IDを抽出します。 wmctrl -lx
では、フィールド3はwm_classで、フィールド1は16進IDです。 awkは、ここでフィールド1を抽出するのに役立ちます。最後に、最後のwmctrlステートメント内でその数値IDを参照します
firefox
コマンドは、終了するまでスクリプトの進行をブロックする可能性があります。バックグラウンドにプッシュするだけで、スクリプトが進行します。
firefox http://www.google.de &
接線上の注意として、Firefoxの -no-remote
もご覧ください。これにより、DISPLAY内の既存のFirefoxインスタンスとやり取りするコマンドが停止します。
接線について説明している間、firefox
コマンドには いくつかのヘルパー引数 があり、-no-remote
とともに、新しいウィンドウをターゲットにできます。
たとえば、特定のクラス名を設定してから Compizに自動的にサイズ変更を処理させる にすることができます。 _wmctrl -x <WM_CLASS>
を使用すると、IDではなくクラスをターゲットにできます。 おそらくウィンドウ名やIDをターゲットにするよりも堅牢です。