最新 Ver. は 1.0.0
(2022-05-30) 1.0.0 を公開。

 本ソフトは「ソフトを開始して」「その直後のアクティブ ウィンドウの、位置やサイズを調整する」ソフトです。

 JSON形式で設定を記述することで、複数のソフトを開き、ウィンドウを設定通りに並べることができます。

 このソフトは元々、Google Chrome のウィンドウを複数開いて、指定位置に並べるために開発しました。


使用イメージ

 複数のソフトを実行しながら、以下の操作をおこなえます。

  • ウィンドウの位置とサイズの変更。
  • ウィンドウを最前面表示に変更。

 また、以下の補助的な設定を使用できます。

  • アプリケーションごとの位置調整やサイズ調整。
  • マルチモニター用の、オフセット値の設定。
  • ソフト起動から操作までの待機時間の設定。
  • 複数のソフトを実行する時の待機時間の設定。
設定JSONの仕様

● JSONの構造

{
    "exec": [  実行設定の配列
        {
            "path": "C:/Program Files/Google/Chrome/Application/chrome.exe",
                起動するアプリケーションのフルパス(必須)
            "arg": "--new-window \"https://news.google.com/\"",
                起動するアプリケーションの起動引数(デフォルト 空文字)
            "x": 0,  X位置(デフォルト 0)
            "y": 0,  Y位置(デフォルト 0)
            "w": 500,  横幅(デフォルト 800)
            "h": 600,  高さ(デフォルト 600)
            "waitMove": 2000, 起動から移動までの待機ミリ秒(デフォルト 1500)
            "waitNext": 500,  次の実効設定までの待機ミリ秒(デフォルト 500)
            "offsetX": -1920, オフセットX、複数モニタなどの位置調整用(デフォルト 0)
            "offsetY": 0,     オフセットY、複数モニタなどの位置調整用(デフォルト 0)
            "z": "top"   最前面表示にしたい場合は top(デフォルト 空文字)
        }
    ],
    "app": [  アプリケーションごとの特殊設定の配列
        {
            "match": "chrome.exe",  この文字列にパスが一致する時に有効(必須)
            "adjustX": -7,  X位置の調整(デフォルト 0)
            "adjustY": 0,   Y位置の調整(デフォルト 0)
            "adjustW": 14,  横幅の調整(デフォルト 0)
            "adjustH": 7    高さの調整(デフォルト 0)
        }
    ]
}

「配列」と書いてある exec 、app 部分は、「,」(カンマ)区切りで設定を増やしていくことができます。

「必須」と書いていない部分は、値を設定しない場合は、デフォルトの値になります。

● app 設定

アプリケーションによっては、指定した位置とサイズが微妙にずれることがあります(例:Google Chrome)。

このようなアプリケーションに、固有の調整値を用意しておくことで、正しい位置とサイズにするすることができます。配列形式で複数のアプリケーションに対する設定を書くことができます。

例として Google Chrome の調整値を掲載していますが、この値は環境によって、あるいは Google Chrome のバージョンによって異なる可能性があります。その際は、適宜修正してご使用ください。

設定が発動する条件は、match の文字列が、実行設定の path に含まれていた場合です。複数が合致する場合は、最初に含まれていた設定が採用されます。

● XY位置の計算

X位置は、実行設定の x 、offsetX 、アプリケーションごとの特殊設定の adjustX の全てを足した値になります。

Y位置は、実行設定の y 、offsetY 、アプリケーションごとの特殊設定の adjustY の全てを足した値になります。

offsetX 、offsetY は、マルチモニターの場合に、別のモニターに丸ごと配置を移したい場合に用います。単独のモニターの場合は、利用する必要はありません。

● waitMove について

waitMove (起動から移動までの待機ミリ秒) については、少し専門的な話になります。

このソフトは、元々 Google Chrome を複数開いてレイアウトするために作りました。そして、Google Chrome は、chrome.exe を実行して、そのプロセスからハンドルを得ても、直接ウィンドウを操作することができません。そこで一定時間待ち、アクティウィンドウのハンドルを得るようにしました。

起動からアクティブになるまでの時間は、実行状態やマシン性能によって違います。そのため、ユーザーが適切な待機時間を設定できるようにしています。

うまく移動やリサイズができない場合は、この時間を長くして下さい。そして、ウィンドウのレイアウトが終わるまで、他のウィンドウをアクティブにしないでください。

● 設定例1

以下は、画面に3つの Google Chrome を配置する設定です。1つ目の実行では、「--new-window」として新しいウィンドウを開き、Google ニュースを表示しています。2つ目の実行では、「--incognito」でシークレット ウィンドウを開き、Yahoo! ニュースを表示しています。3つ目の実行では、「--app」でアプリケーション モードで開き、はてなブックマークを表示しています。

{
    "exec": [
        {
            "path": "C:/Program Files/Google/Chrome/Application/chrome.exe",
            "arg": "--new-window \"https://news.google.com/\"",
            "x": 0,
            "y": 0,
            "w": 500,
            "h": 600,
            "waitMove": 2000
        },
        {
            "path": "C:/Program Files/Google/Chrome/Application/chrome.exe",
            "arg": "--incognito \"https://news.yahoo.co.jp/\"",
            "x": 500,
            "y": 0,
            "w": 500,
            "h": 600,
            "waitMove": 1500
        },
        {
            "path": "C:/Program Files/Google/Chrome/Application/chrome.exe",
            "arg": "--app=\"https://b.hatena.ne.jp/hotentry/all\"",
            "x": 1000,
            "y": 0,
            "w": 500,
            "h": 600,
            "z": "top",
            "waitMove": 1500
        }
    ],
    "app": [
        {
            "match": "chrome.exe",
            "adjustX": -7,
            "adjustY": 0,
            "adjustW": 14,
            "adjustH": 7
        }
    ]
}

● 設定例2

以下は、設定例1の表示位置を、マルチモニターの左側位置(-1920が原点)に移動したものです。offsetX や offsetY を加えることで、別のモニターへと簡単に表示位置を移動できます。

{
    "exec": [
        {
            "path": "C:/Program Files/Google/Chrome/Application/chrome.exe",
            "arg": "--new-window \"https://news.google.com/\"",
            "offsetX": -1920,
            "x": 0,
            "y": 0,
            "w": 500,
            "h": 600,
            "waitMove": 2000
        },
        {
            "path": "C:/Program Files/Google/Chrome/Application/chrome.exe",
            "arg": "--incognito \"https://news.yahoo.co.jp/\"",
            "offsetX": -1920,
            "x": 500,
            "y": 0,
            "w": 500,
            "h": 600,
            "waitMove": 1500
        },
        {
            "path": "C:/Program Files/Google/Chrome/Application/chrome.exe",
            "arg": "--app=\"https://b.hatena.ne.jp/hotentry/all\"",
            "offsetX": -1920,
            "x": 1000,
            "y": 0,
            "w": 500,
            "h": 600,
            "z": "top",
            "waitMove": 1500
        }
    ],
    "app": [
        {
            "match": "chrome.exe",
            "adjustX": -7,
            "adjustY": 0,
            "adjustW": 14,
            "adjustH": 7
        }
    ]
}

サイト

全てJavaScriptで作られた、ブラウザから利用できるWebアプリ群です。
さまざまなジャンルの技術系の書籍や、小説、ゲームなどを販売しています。
JavaScriptをマンガで学べます。
Javaのオブジェクト指向を学べます。

動画講座

過去のゲームを最新機用に移植する会社のお仕事小説。新潮社刊。
プログラマーが探偵役のエンタメ・ミステリー第2弾。文藝春秋刊。
プログラマーが探偵役のエンタメ・ミステリーです。文藝春秋刊。2016年の松本清張賞で、最終候補に残った小説です。