Получить URL текущей активной вкладки из Firefox через командную строку

Только для записи вы можете использовать dialog для решения текстового пользовательского интерфейса (TUI).

Синтаксис:

dialog --title "text" --fselect /path/to/dir height width

Пример: [!d2 ]

FILE=$(dialog --stdout --title "Please choose a file" --fselect $HOME/ 14 48)
echo "${FILE} file chosen."

Результат будет примерно таким:

Как указано в @Wilf, вы можете использовать переменные $LINES и $COLUMNS, чтобы сделать он заполняет терминал:

$(dialog --stdout --title "Please choose a file" --fselect $HOME/ $(expr $LINES - 15) $(expr $COLUMNS - 10))
4
задан 28 June 2017 в 21:18

3 ответа

Здесь представлено решение, которое представляет собой комбинацию sed и python2. Вот немного более понятная версия:

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")'
)

Используемый файл:

/home/username/.mozilla/firefox/RANDOM.profile/sessionstore.js

в более поздних версиях вы должны изменить его с помощью: [!d3 ]

/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js

Обратите внимание, что этот файл восстанавливается каждые 15 секунд, поэтому после мгновенного изменения окна он не дает вам правильного URL-адреса, вам нужно подождать несколько секунд.

Как это работает?

В первой части он ищет идентификатор активной вкладки, это от 1 до количества открытых вкладок. допустим, что это «3», код, соответствующий этой цели, следующий:

str(jdata["windows"][0]["selected"])

Затем он возвращает список URL-адресов (все открытые вкладки) и передает его в stdin из 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")

Итак, мы делаем что-то вроде:

sed -n 3p <<< "URL1
URL2
URL3"

, который приводит нас к «URL3».

1
ответ дан 22 May 2018 в 21:06
  • 1
    Привет, теперь мне удалось собрать несколько команд, чтобы открыть текущую вкладку. CurrentTab = jdata.get("windows")[0].get("tabs")[jdata["windows"][0]["selected"]-1].get("entries")[HistLen-1].get("url"), где HistLen = len(jdata.get("windows")[0].get("tabs")[jdata["windows"][0]["selected"]-1].get("entries")) – oldmansaur 28 June 2017 в 21:12

Здесь представлено решение, которое представляет собой комбинацию sed и python2. Вот немного более понятная версия:

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")' )

Используемый файл:

/home/username/.mozilla/firefox/RANDOM.profile/sessionstore.js

в более поздних версиях вы должны изменить его с помощью:

/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js

Обратите внимание, что этот файл восстанавливается каждые 15 секунд, поэтому после мгновенного изменения окна он не дает вам правильного URL-адреса, вам нужно подождать несколько секунд.

Как это работает?

В первой части он ищет идентификатор активной вкладки, это от 1 до количества открытых вкладок. допустим, что это «3», код, соответствующий этой цели, следующий:

str(jdata["windows"][0]["selected"])

Затем он возвращает список URL-адресов (все открытые вкладки) и передает его в stdin из 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")

Итак, мы делаем что-то вроде:

sed -n 3p <<< "URL1 URL2 URL3"

, который приводит нас к «URL3».

1
ответ дан 18 July 2018 в 11:01

Здесь представлено решение, которое представляет собой комбинацию sed и python2. Вот немного более понятная версия:

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")' )

Используемый файл:

/home/username/.mozilla/firefox/RANDOM.profile/sessionstore.js

в более поздних версиях вы должны изменить его с помощью:

/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js

Обратите внимание, что этот файл восстанавливается каждые 15 секунд, поэтому после мгновенного изменения окна он не дает вам правильного URL-адреса, вам нужно подождать несколько секунд.

Как это работает?

В первой части он ищет идентификатор активной вкладки, это от 1 до количества открытых вкладок. допустим, что это «3», код, соответствующий этой цели, следующий:

str(jdata["windows"][0]["selected"])

Затем он возвращает список URL-адресов (все открытые вкладки) и передает его в stdin из 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")

Итак, мы делаем что-то вроде:

sed -n 3p <<< "URL1 URL2 URL3"

, который приводит нас к «URL3».

1
ответ дан 24 July 2018 в 19:42

Другие вопросы по тегам:

Похожие вопросы: