ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

Google Chrome の新規タブを閉じて余分なウインドウを消したい【AutoHotkey】。

f:id:yasushiito:20190403184928p:plain

前書き。

肢体障害のハンディキャップを埋めるために PC 操作をアシストするツールを開発しています。
AutoHotkey というスクリプト言語でキーボードやマウスの操作を自動化することが多いです。
今回の記事は その開発記録をまとめたものです。

問題がある。

アプリケーションの起動を確認して、見つからなかったら起動、ウィンドウを開いている場所がおかしかったら修正、といった作業を行うスクリプトがあります。

Google Chrome は音声入力するためのdocumentを開いたウィンドウと、毎日巡回する重要なページを開いた作業用ウィンドウを開きます。

f:id:yasushiito:20190731100326p:plain

その際に 無駄な Chrome ウィンドウを開いてしまうことがあって、いつも自分でいらないウィンドウを閉じています。
無駄な作業 を避けるための自動化なのに、不必要な作業が発生しているようでは本末転倒です。
しかしながら、それを簡単に防止する方法が思いつかなかったので放置していたのです。

詳しくは次の記事に書きました。
yasushiito.hatenablog.com

原因を探る。

Google Chrome では起動時に特定のページを開くようにできます。

support.google.com

ただし、これは起動時に限ります。
つまり起動してしまっている Chrome で特定のページを開くのはちょっと難しい。
そこで、起動ページを開きたいがために新たに Chrome ウィンドウを起動 ウィンドウを起動します。
ここで、PC 起動時に既にブランクの Chrome が起動してしまっていると、次のスクショのような感じに余分な Chrome が残ってしまうわけですね。

f:id:yasushiito:20190731100135p:plain

Google Chrome は開きたいページを指定しながら起動していくことはできるが、起動してしまったウィンドウを特定のページセットを使ったウィンドウにすることはできないってことです。

対策。

Chrome が起動のみの一歩通行であるからには 、スクリプト側から閉じてしまうのが簡単です。
新しいタブを閉じてみてはどうでしょうか。

いらないタブを閉じてみる。

Chrome でタブを閉じるキーボードショートカットは Ctrl + W です。
この操作ですべてのタブを閉じた場合はウィンドウを閉じられます。

余分に立ち上がった Chrome は新しいタブが1枚だけ開いたブランクウィンドウなので、こいつに Ctrl + W のキーボードショートカットを送ればウィンドウを閉じてくれます。
閉じる操作の確認はこれでオッケー。

新しいタブの判定法。

Chrome を複数ウインドウ起動できるので、その中から余分なクロームを探さなければなりません。
新しいタブを表示している時に URL バーの URL をコピーすると、次のような URL がクリップボードに転送されます。

chrome://newtab/

ユーザーからは空白に見えますが、 Chrome 内部ではこの URL で管理しているのですね。
f:id:yasushiito:20190731095803p:plain

取得した URL がこれと一致する場合に閉じれば良いということになります。

解決のための実装。

ウィンドウのリストを取得して、その中から Chrome のウインドウだけを取り出します。
Chrome から URL を取得 します( Chrome Extension を使って取得したことあり)。
URL の新しいタブであれば、タブを閉じるキーボードショートカットを送信します。

以上の手続きを行うスクリプトは次のようになりました。

この手続きをサイズアジャストのスクリプトから呼び出します。
必要な Chrome ウインドウを起動する処理の後に挿入します。

    ;余分に開いてしまった、 すでに開いていた Chrome を閉じる。
    closeblankchrome()

myahk/adjust.ahk at master · yasushiito/myahk

結果。

必要なウィンドウが起動してサイズとポジションを調整した後、余分なウィンドウを閉じるようになりました。
これで毎日無駄なクリックをせずに済みます。

なおこのスクリプトでは、各 Chrome ウィンドウの選択中のタブだけしかチェックしません。
また、何らかのページを開いていれば不要なウインドウであっても閉じません。

この記事に登場するAutohotkey スクリプトについて

この記事の中で私が作成したプログラムは、全て自由に使うことができます。
詳しくはこちら