私はFirefoxでかなり広い範囲のタブを開いていることがあり、組み込みのブックマークを使用するよりも、ファイルに保存する方が好きです。
したがって、私はabout:preferences
ページからrlsを(手動で)コピーし、ファイルに保存して、小さなbashスクリプトでtr '|' '\n'
を使用してファイルを処理します。
後でテキストファイルからtabsを再度開きたいときは、次の小さなループを実行します。
#!/bin/bash
# usage: $bash Open-tabs.sh file-with-bookmarks.txt
while read -r line; do
firefox -new-tab "$line" 2>/dev/null &
sleep 2
done < "$1"
そして、すべてのtabsを2秒の遅延で開きます。
方法があるかどうか知りたいのですが、コマンドラインから開かれたタブのrlsを読み取ることができるので、スクリプトに含めることができますか?
ソース(変更されたファイルパス): 開いているすべてのタブを取得
このスニペットは、現在のFirefoxのタブのURLを取得します。プロファイルフォルダーのrecovery.jsファイルを使用します。そのファイルはほぼ瞬時に更新されますが、常に正しいURLになるとは限りません。
開いているすべてのタブを取得します。
python2 <<< $'import json\nf = open("/home/<username>/.mozilla/firefox/<name of the random stringed folder>.default/sessionstore-backups/recovery.js", "r")\njdata = json.loads(f.read())\nf.close()\nfor win in jdata.get("windows"):\n\tfor tab in win.get("tabs"):\n\t\ti = tab.get("index") - 1\n\t\tprint tab.get("entries")[i].get("url")'
これはFirefox 57以降で機能します。 lz4(pip経由)が必要です。ファイルヘッダーは、b'mozLz40\0'
の長さから収集されます。ワンライナーで使用する場合は、ファイルパスに環境変数を使用し、それに応じて\n
および\t
に置き換えて、行をマージします。
export opentabs=$(find ~/.mozilla/firefox*/*.default/sessionstore-backups/recovery.jsonlz4);
python3 <<< $'import os, json, lz4.block
f = open(os.environ["opentabs"], "rb")
magic = f.read(8)
jdata = json.loads(lz4.block.decompress(f.read()).decode("utf-8"))
f.close()
for win in jdata.get("windows"):
for tab in win.get("tabs"):
i = int(tab.get("index")) - 1
urls = tab.get("entries")[i].get("url")
print(urls)'
この目的のために https://github.com/balta2ar/brotab を使用することをお勧めします:
pip install brotab
brotab install
Web拡張機能もインストールします: https://addons.mozilla.org/en-US/firefox/addon/brotab/
Firefoxを再起動すると、brotab list
を使用して、次のように解析できます。
bt list | awk -F'\t' '{
print "Downloading "$2
system("curl --silent --output \""$2"\" \""$3"\"")
}'
これらの回答の一部は、「[ランダムな文字] .default」ディレクトリを参照しています。バージョン67以降、ユーザーはさまざまな更新チャネル(リリース、ベータ版、夜間など)のプロファイルを持つことができます。
私のUbuntu 18システムでは、このディレクトリは「[ランダムな文字] .default-release」でした。 「[...]。default」ディレクトリはまだありましたが、ほとんど空でした。 「sessionstore-backups」が見つからないというエラーが発生した場合は、そのことを覚えておいてください。