コマンドラインを介して画面上のアプリケーションのウィンドウサイズと位置を設定するには?

コマンドラインを介して画面上のアプリケーションのウィンドウサイズと位置を設定するには?

シェルコマンドを使用して、特定のサイズと画面の場所でFirefoxウィンドウを開きたいです。たとえば、次のようになります。

firefox myfile.html size 800x600 location bottom-left

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

答え1

これは回答のコミュニティ版ですモンスターこれには以下の例が含まれています。ルドルフオーラ


というツールを使用して、xdotoolウィンドウのサイズと位置を制御できます。さらに、bashあなたが作成するすべてのスクリプトは完全にxdotool最大化されたウィンドウを有効にすることができ、ウィンドウサイズとx:y座標を設定するタスクとコマンドをmousemove使用してスクリプトを作成できます。click

  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

左下隅の位置は画面の解像度によって決まります。

答え2

私が知る限り、Firefoxはウィンドウを制御するコマンドを受け入れないので、これは不可能です。これは(注)ウィンドウマネージャの責任でもあるため、これを実行するパラメータがあるかどうか疑われます。ただし、次のコマンドを使用してウィンドウを制御できます。コントロールパネルしかし、これは少し難しいでしょう。

#!/usr/bin/env bash

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にはいくつかの相互運用性の問題があります(他のインスタンスが実行されていないなど)。

答え3

これで場所の問題は解決されませんが、少なくともサイズを設定できます。

firefox -width 200 -height 500

答え4

私はいつもこれをする。しかし、私は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つのスクリプトファイルに入れることができます。ログイン時にDevilspie2が自動的に起動するように設定します(例:/home/$USERNAME/.config/autostart/devilspie2.desktop)。

以下は、luaスクリプトで利用可能なさまざまなオプションの良いページリンクです:https://github.com/gusnan/devilspie2/blob/master/README

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

関連情報