ブラウザのタブ開きすぎ問題
相変わらずタブを開きすぎで、いい加減にChromeが重い。
そもそもなぜタブが増えていくのかというと…
- 多数のリソースを同時参照しながら作業したい
- 私にとってのタブとは「後で読む」リストでもある
- いつか見たくなる日が来るから安易にタブを閉じられない…(積読状態)
でもこのままだと重いので、一旦どうにかしたい。
- ブックマークしてから閉じるのはめんどくさい
- 開いているタブのURLさえ控えておけば、安心してタブを閉じられる
開いている全タブのURLを一括取得する手段
- 公開されているChrome拡張機能を使う
- もちろん一番手っ取り早い
- でも無闇に第三者の拡張機能を入れたくない…
- Tabs API を使う - MDN
- JavaScriptでブラウザのタブを操作できるAPIがある
- tabs.query()を使えば全タブの情報を取得できる
- しかし権限の都合上、ブラウザ拡張機能の中のJSでしかこのAPIは呼び出せない
- AppleScriptを使う(MacOSのみ)
- 対応しているアプリケーションであれば、AppleScriptでOS側から指示を出せる
.scptファイルにスクリプトを書いて実行するのが普通だが、ワンライナーも作れる
AppleScriptワンライナーで実現する
次のワンライナーをターミナルで実行すると、
osascript -e 'tell application "Google Chrome" to get URL of tabs of front window' | tr ',' '\n'Chromeの最前面にあるウィンドウの、全タブのURLが1行ずつ表示される:
https://tetracalibers.github.io/webgl-practice-ground/norm-lerp-map/
https://gabrielgambetta.com/computer-graphics-from-scratch/13-shading.html
https://samruddhichitnis02.medium.com/how-to-do-image-convolution-from-scratch-using-numpy-902541f08a9a
https://www.sfu.ca/~jtmulhol/py4math/linalg/ap-image-convol/
https://medium.com/@whyamit404/numpy-2d-convolution-a-practical-guide-b01a759712e2
https://zenn.dev/rchiji/books/201199bf94a67e/viewer/5ee54e
https://note.nkmk.me/python-numpy-generate-gradation-image/
https://note.nkmk.me/image-processing/
https://okaydev.co/articles/dive-into-webgpu-part-1このURL一覧をメモアプリ等にコピペしておけば、未練なくウィンドウを閉じられる。
ワンライナーの解剖
Chromeアプリに指示を出す部分
osascript -e 'tell application "Google Chrome" to ...'osascript:AppleScriptを実行するコマンド-e '...':インラインでAppleScriptを書くオプションtell application "Google Chrome":Chromeをオブジェクトとして操作する
最前面ウィンドウの全タブのURLを取得する部分
get URL of tabs of front windowfront window:最前面に表示されているChromeのウィンドウtabs of ...:そのウィンドウに含まれる全タブget URL of ...:その全タブが持っている URL プロパティを取得
これで全タブのURLがカンマ区切りのリストとして取得される:
"https://example.com", "https://example.org", ...1行ずつの表示に整形する部分
| tr ',' '\n'|:前のコマンドの出力を次のコマンドに渡す(パイプ)tr ',' '\n':カンマ,を改行\nに置換する