コマンドラインを使用して画面上のアプリケーションのウィンドウサイズと場所を設定する方法


33

Firefoxのウィンドウを特定のサイズで開き、シェルコマンドを使用して画面上の場所に表示するようにします。次に例を示します。

firefox myfile.html size 800x600 location bottom-left

そのようなコマンドはありますか?


私は、あなたが他の解決策を見つけた場合、それはおそらく、より堅牢になるように、私に教えてくださいますが、(このフォーラムの助けを借りて)これを行うために管理:unix.stackexchange.com/questions/40209/...
エマニュエルベルク

回答:


20

これは、ルドルフ・オラが提供した例を組み込んだ、妖怪による答えのコミュニティ版です。


というツールを使用して、xdotoolウィンドウのサイズと場所を制御できます。それだけでなくbash、を使用して記述したスクリプトxdotoolは、完全に最大化されたウィンドウで動作するようにセットアップでき、mousemoveand clickコマンドを操作してウィンドウサイズとx:y座標を設定するようにスクリプト化できます。

  1. ウィンドウIDを見つけます。

    xdotool search --onlyvisible --name firefox
  2. ウィンドウサイズを設定する

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
  3. ウィンドウを移動する

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y

たとえば、firefoxのウィンドウIDが123の場合、次のようにします。

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

画面の解像度に基づいて、左下の位置を決定する必要があります。


1
そこバグがでだxdotoolwmctrlなど。とUbuntu、XFCE(私が持っていること):ウィンドウがすでにフルスクリーンモードで起動している場合、あなたはもうそれを移動することはできません。bugs.launchpad.net/ubuntu/+source/unity/は、 +バグ/ 971147
ThePhi

19

私の知る限り、Firefoxはウィンドウを制御するコマンドを受け付けないため、これは不可能です。それは(ほとんど)ウィンドウマネージャーの責任でもあるので、それを行うためのパラメーターがあることを疑います。ただし、wmctrlを使用してウィンドウを制御できますが、それは少し難しくなります。

#!/bin/sh

firefox -new-instance -new-window "http://www.reddit.org" &

# Process ID of the process we just launched
PID=$!

# Window ID of the process...pray that there's     
# only one window! Otherwise this might break.
# We also need to wait for the process to spawn
# a window.
while [ "$WID" == "" ]; do
        WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
done
# Set the size and location of the window
# See man wmctrl for more info
wmctrl -i -r $WID -e 0,50,50,250,250

もっと賢い方法があるかもしれませんし、Firefoxとの相互運用性の問題もあります(他のインスタンスが実行されていないなど)が、うまくいくはずです。


1
ちょっとしたメモ。ウィンドウが最大化されている場合、サイズ変更は機能しません。したがって、最初にこのプロパティを無効にする必要があります。wmctrl-i -r $ WID -b remove、maximized_vert; wmctrl -i -r $ WID -b remove、maximized_horz; その後、Firefoxウィンドウのサイズを変更できました。
ka3ak

3

過去に、Javascriptでウィンドウサイズを設定し、必要なページにリダイレクトするHTMLドキュメントを作成しました。それは愚かなハックですが、ちょっと、それは動作します。


これはもう機能しないようです。どうやら、window.resizeToは、ウィンドウがwindow.openで作成されたポップアップである場合にのみ効果があります。
hugomg 14年

2

私はこれがシェルコマンドだけで可能だとは思わない。それはあなたのウィンドウマネージャとは何の関係もないからだ。これに影響を与えるwmctrldevilspieについて
聞いたことがあります。しかし、あなたがあなたの例で書いたように簡単にそれを達成する方法があるとは思いません。


1

私はいつもこれをしています。ただし、より堅牢であるため、DevilsPie2を使用します。LUAスクリプト言語を使用しますが、それほど難しくはありません。

Thunderbirdのluaスクリプトを次に示します。これは、開いたときに一番左のモニター(ラップトップ画面)で開きたいものです。

if (get_window_name()=="Mozilla Thunderbird") then
   pin_window()
   set_window_geometry( 50, 10, 1220, 780 )
end

where 50 = X coordinate (for upper-left corner of the window)
      10 = Y coordinate ( " " )
    1220 = window width
     780 = window height

これを設定するには、ホーム構成(Ubuntuのようなディストリビューション)にdevilspie2という名前のディレクトリを作成します(例:/home/$USERNAME/.config/devilspie2)

Thunderbirdの場合、thunderbird.luaを作成しましたが、ファイル名は関係ありません。必要に応じてすべてを1つのスクリプトファイルに入れることができますが、アプリケーションごとに異なるファイル名を持っています。/home/$USERNAME/.config/autostart/devilspie2.desktopなど、ログイン時にdevilspie2が自動的に起動するように設定します

luaスクリプトで使用できるさまざまなオプションに関する優れたページへのリンクを次に示します。https//github.com/gusnan/devilspie2/blob/master/README

注:スクリプトは実行可能である必要はありません。私は664で、正常に動作します。私が制御する他のプログラムのいくつかは、openconnect、pidgin、RecordMyDesktop、timeshift、xeyes、xload、およびyadです。それらにpin_windowを使用して、すべてのデスクトップに加えて、アプリケーションに応じて他のコマンドを表示します。


LXDEでは動作しないようです。ウィンドウイベントはまったく認識されません(実行中に何も出力されませんdevilspie2 --debug
ジョンスミスオプション

0

これは位置の問題を解決しませんが、少なくとも寸法を設定できます:

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