戻れなければ閉じる、良きに計らうhistory back

正直、ブラウザで、戻れないページなのに必死に戻ろうとしていることが、よくある。「そうか、新規タブを開いてリンク先へジャンプしたのか」と理解し、閉じる操作に切り替える...。
そうかと思うと、今度は調子良く閉じるを繰り返していると、実は同一タブでリンク先にジャンプしていた。大事な起点のページまで閉じてしまって、ガックリする...。
つまり、リンク先をクリックした時に、新規タブを開く場合と開かない場合がある。自分の注意力の問題なのだが、ブラウズに集中していると、戻るべきか?閉じるべきか?の判断がおろそかになるのだ。
小さな問題なのだけど、戻れなかったり、あるいは戻れるのに閉じてしまったりを繰り返していると、精神衛生上良くない。この現象は、AutoPagerizeを利用するようになって、顕著になってきた。(最初のページは同一タブでジャンプするのに、AutoPagerizeで追加されたページでは新規タブを開いてジャンプするのだ)

戻るか、閉じるかの判断はとても単純で、戻れなければ閉じるだけ。単純なことなのに、人はよく間違える。(自分だけ?)で、単純なことならMacBookに判断させてしまえば良いんじゃないか!と閃いた。(何で今まで気付かなかったんだろ)早速、やってみた。

戻れなければ閉じるAppleScript

  • スクリプトはシンプルだ。
  • 「戻る」操作を実行する前・後でURLを記録して...
  • URLが変化していなかったら(戻れなかったと判定)、閉じている。


tell application "Safari"
set old_URL to window 1's current tab's URL
do JavaScript "history.back(); return false;" in window 1's current tab
delay 1 --環境によっては1.5秒とか、2秒必要かもしれない(戻れるのに閉じてしまう時は長めに設定する)
set new_URL to window 1's current tab's URL
if old_URL = new_URL then
close window 1's current tab
end if
end tell

ショートカットの割り当て

  • 上記スクリプトをユーザー・スクリプト・フォルダ(~/Library/Scripts/)に保存した。
  • しかし、それだけでは、スクリプトメニューから操作する必要があり、瞬時に操作できない...。
  • お馴染みのQuicksilverで、ショートカット option-command-[ を割り当てた。

ジェスチャーの割り当て

  • 自分の場合Expogestureで、マウスを左右に振る動きに「戻る」ショートカット command-[ を割り当てている。
  • Safariの設定を新規追加して、マウスを左右に振る動きにショートカット option-command-[ を割り当てた。


これで、常にマウスを左右に振るだけで戻れるようになった!戻れない時は、閉じてくれる。なかなか快適!しばらく使ってみようと思う。

閉じたタブを開き直す

  • それでも、間違って大事なタブを閉じてしまうことがあるかもしれない...。
  • そんな時は、SafariTabMementoが便利。(感謝です!)
  • 履歴まで含めて、ほぼ完全な状態で復元してくれる。
  • 自分の場合、Safariのメニュー:ウィンドウ >> 最近閉じたタブ >> 閉じたタブを開き直す に shift-command-T を割り当てている。
  • 間違って閉じたら、shift-command-Tで素早く復元。これで安心。