
以前は Firefox で Python コマンドを使用してこれを実行していましたが、最近何かが変わったため、URL を取得できなくなりました。
Firefox で以前は動作していたもの:
#!/bin/bash current_tab_num () { python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nprint str(jdata["windows"][0]["selected"])' } current_tab_url () { sed -n "$(current_tab_num)p" <(python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.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")') } current_tab_url
Firefox や Chrome でこれを行う方法を教えてください。
注記: 私は Python を理解していませんが、どこかでそれらのコマンドを見つけて、それを bash で使用しました。
答え1
私も同じ問題を抱えていて、解決しようとしてそこを通り抜けたので、私の解決策(かなりひどいものですが)をここに投稿します。
私はこれを実行するのに wmctrl (代わりに xprop を使用することもできます) と xdotool を使用します。以前は、タイトル バーに URL を表示するための拡張機能を使用していました (その後、xprop または wmctrl を介して URL にアクセスできます)。どちらの方法も、実際には「クリーン」ではありませんが、非常にうまく機能します。
id=$(wmctrl -l | grep -oP "(?<=)(0x\w+)(?=.*Chromium)") //Put here the regex for the browser you use
xdotool key --window $id "ctrl+l"
xdotool key --window $id "ctrl+c"
これで、URL がクリップボードに保存されました。次に、xclip を使用して URL を操作します。
誰かがこの問題の本当の解決策を見つけたら、ぜひ見てみたいです。
答え2
スクリプトは私の環境では動作しているので、実行後に発生するエラーを教えてください。ここに同じ質問があり、php
と を使用して回答されていますperl
:
ターミナルで開いている Firefox タブの URL を出力する
主要部分は Python なので、同じことを実行するには、純粋な Python スクリプトを次に示します。これも試してください。
#!/usr/bin/python
import json
f = open("recovery.js","r")
jdata = json.loads(f.read())
f.close()
number_of_selected_tab = jdata["windows"][0]["selected"]
tab_number = 1
for win in jdata.get("windows"):
for tab in win.get("tabs"):
if number_of_selected_tab == tab_number :
tab_index = tab.get("index") - 1
print tab.get("entries")[tab_index].get("url")
tab_number = tab_number + 1
/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js
ファイルを に置き換えましたrecovery.js
。私の場合 (Mozilla Firefox 44.0、openSUSE 13.1)、ファイルは です~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js
。最後に、 のインスタンスが 2 つFirefox
実行されている場合、スクリプトは機能しません。