Uma solução foi fornecida aqui , que é uma combinação de sed
e python2
. Aqui está uma versão um pouco mais clara:
sed -n "$(
python2 <<< $'import json
f = open("/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js", "r")
jdata = json.loads(f.read())
f.close()
print str(jdata["windows"][0]["selected"])')p" <(python2 <<< $'import json
f = open("/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js", "r")
jdata = json.loads(f.read())
f.close()
for win in jdata.get("windows"):
for tab in win.get("tabs"):
i = tab.get("index") - 1
print tab.get("entries")[i].get("url")'
)
O arquivo que está usando é:
/home/username/.mozilla/firefox/RANDOM.profile/sessionstore.js
em versões mais recentes, você deve alterá-lo com:
/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js
Note que este arquivo é regenerado a cada 15 segundos, então, após a janela ser instantaneamente alterada, ele não fornece o URL correto, você tem que esperar alguns segundos.
Como isso funciona?
Na primeira parte, ele procura pelo ID da guia ativa, é algo entre 1 a contagem de guias abertas. digamos que seja "3", o código correspondente a esse propósito é:
str(jdata["windows"][0]["selected"])
Em seguida, ele retorna uma lista de URLs (todas as guias abertas) e a envia para o stdin
de sed
:
for win in jdata.get("windows"):
for tab in win.get("tabs"):
i = tab.get("index") - 1
print tab.get("entries")[i].get("url")
Então, estamos fazendo algo como:
sed -n 3p <<< "URL1
URL2
URL3"
que nos leva a "URL3".