
Solía hacer eso en Firefox usando un comando de Python, pero recientemente algo cambió y ya no puedo obtener la URL.
Lo que solía funcionar con 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
¿Alguien puede decirme cómo hacer esto en Firefox y/o Chrome?
NOTA: No entiendo Python, ¡encontré esos comandos en alguna parte y los usé en bash!
Respuesta1
Tuve el mismo problema y logré solucionarlo mientras intentaba resolverlo, así que publicaré mi solución (que es bastante mala) aquí.
Utilizo wmctrl (podrías usar xprop en su lugar) y xdotool para hacer esto. Anteriormente, usé una extensión para hacer que la URL fuera visible en la barra de título (luego puedes acceder a la URL a través de xprop o wmctrl). Ambos métodos funcionan bastante bien, aunque no son realmente "limpios".
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"
Ahora tienes la URL en tu portapapeles. Luego uso xclip para trabajar con la URL.
Me encantaría ver una solución real a esto si alguien encuentra una.
Respuesta2
¿Podrías decir el error que aparece después de la ejecución, porque el script está funcionando para mí? Hay la misma pregunta aquí, respondida usando php
y perl
:
URL de salida de pestañas abiertas de Firefox en la terminal
Dado que la parte principal está en Python, aquí hay un script puramente de Python. Para hacer lo mismo, pruébalo también:
#!/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
Reemplacé /home/username/.mozilla/firefox/xxxxx.default/sessionstore.js
el archivo con recovery.js
. En mi caso (Mozilla Firefox 44.0, openSUSE 13.1) el archivo es ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js
. Y por último, pero no menos importante, el script no funciona si tiene dos instancias en Firefox
ejecución.