macOSでブラウザ以外のアプリでリンクがあってクリックして開いたり、
ターミナルからopen
コマンドを使ってURLを開く時、
デフォルトに指定されたブラウザでURLが開かれます。
これをChromeに指定してる場合、開きたいURLが開かれる代わりに 新しいWindowが立ち上がり起動時に指定したページが開かれる という問題が起こって困っています。
外部リンクをデフォルトブラウザで開く
WindowsでもmacOSでもLinuxでも、Evernoteなどの外部アプリケーションにURLを書いておくと、 クリックした場合に設定したデフォルトのブラウザで開いてくれます。
macOSであればターミナルから
$ open https://rcmdnk.com
と、open
コマンドにURLを与えることでもブラウザで開けます。
macOSの場合、このデフォルトのブラウザの設定は、システム環境設定 一般 デフォルトのWebブラウザにあります。
そこで設定して無くても新しいブラウザアプリを使う際に聞かれて自動で設定したりしてることが多いと思いますが。
この要な場合、ブラウザが立ち上がってない場合はアプリを起動してから そのページを開きます。
すでに立ち上がってる場合は設定によって新しいタブで開いたり 新しいウィンドウで開いたりします。
Macで起こる問題
起こっている問題は、 どの様なURLのリンクを開こうとしても、 ウィンドウの代わりにタブが開かれる様な設定にしていたとしても、 新しいウィンドウが立ち上がりそこにChromeで指定している起動時のページが表示されてしまう、 という状態です。
例えば
EvernoteにメモしたURLをクリックしたり、
コマンドラインからopen
コマンドを使ってURLを開こうとしたり、
Google認証が必要なコマンドがブラウザを開いたり、
Vimでvim-markdownやopen-browser.vimを使っていてgx
を打って
カーソル下のURLを開いたり1、
といった場合、どの様なアプリからでも同様に問題が起こります。
Vimから開くことが多いので最初プラグインが悪いのかと思って結構調べました。。。
仕方ないのでURLをコピーして直接アドレスバーに突っ込んだり、 場合によっては一時的に設定でデフォルトのブラウザをFirefoxとかにして表示したりしていました。
他のブラウザにした場合は起こらなかったのでやはり元のアプリ側の問題では無いみたいです。
Google Chromeをデフォルトのブラウザにしたのは WebExtentionsなアップデードでVimperatorが死亡した昨年11月で、 よくよく思い出してみるとやはりその頃から起こっていた様に思います。 つまりはChromeに前からあった問題っぽい。
さらに、かならず問題が起こるわけではなくて、時には正しく開けたりします。 Windowsでは起こらないです。
それもあるのでVimのプラグインを疑ったりChrome以外の部分を疑ったりしてましたが どうやら他のブラウザでは起こらないChromeの問題の様です。
原因
詳しくは理解してませんが、どうやらmacOSとChromeの間の やり取りを行う際に使う識別番号の様なものが 時間が経つと変わってしまう、と言った感じの事が問題の様です。
問題がポストされたのが2017年10月24日 でまだ解決されてません。
最後の方を見ていくとOS側で解決される予定でそれを待つ、といった感じになっています。
なので正確にいつ解決されるかはまだちょっとわからない感じです。
とりあえずの解決法
この問題はChromeを立ち上げっぱなしにしていると起こる問題なので 一度Chromeを再起動してあげると一時的に問題がおさまります。
最初に見つけた以下のページがまさに昨日投げられたものだったので ChromeなりmacOSなりの最新バージョンでのバグかと思いましたが。
MacOS(OSX) - 【Mac】外部アプリのリンクからchromeを開くとうまく反応しないです(115380) teratail
もうちょっと調べてみるとどうやら結構前から起こっていた問題らしいということが分かりました。
High Sierra: Opening link in iMessage opens blank new window of Chrome : mac
Clicking external links only opens new blank window - Google プロダクト フォーラム
最初のredditの方は5ヶ月前のポストなので結構前から(少なくとも私がデフォルトで使うようになる前から) 起こっていた問題のようで、 ここで上のIssuesトラッカーのリンクも見つけました。
差し当たりどうしようもないようなのでブラウザを再起動するしか無さそうです。
再起動する際、 メニューから終了したり⌘-Qで終了させてもう一度 立ち上げる場合、 起動時の設定で前回開いていたページを開くになっていれば良いですが、 そうでない場合はメニューの履歴からウィンドウを復活させる事が出来ます。
と、普通に終了させる場合はそうですが、上のredditのポストの中に再起動する方法がありました。
アドレスバーにchrome://restartと入れると元のタブを維持したまま Chromeを再起動してくれます。
ポストの中では設定によっては元に戻らなかった、という話もありましたが、 手元の環境では起動時の設定で新しいタブページを開くになっていても この方法で再起動すると前に開いていたタブが復活できました。