추가 소프트웨어를 설치하지 않고 Firefox의 현재 탭에서 URL을 얻는 방법은 무엇입니까?

추가 소프트웨어를 설치하지 않고 Firefox의 현재 탭에서 URL을 얻는 방법은 무엇입니까?

xdotool을 사용하여 현재 탭을 가져올 수 있습니다.

# set focus to address on browser
xdotool search --onlyvisible --classname Navigator windowactivate --sync key F6

# copy address from browser tab to clipboard
xdotool search --onlyvisible --classname Navigator windowactivate --sync key Ctrl+c

# get off the focus from address from browser tab
xdotool search --onlyvisible --classname Navigator windowactivate --sync key F6

# delivery of clipboard content to variable
clipboard=`xclip -o -selection clipboard`

# clear clipboard
xsel -bc; xsel -c

# echo URL of active tab of active browser
echo $clipboard

xdotool에는 때때로 위 코드를 중지하지 않고 키 누르기를 트리거하는 결함이 있으므로 동일한 작업을 수행하려면 wmctrl을 사용하는 다른 방법이 필요합니다.

이것은 bash에서 wmctrl을 사용하여 시도한 것입니다.

id=$(wmctrl -l | grep -oP "(?<=)(0x\w+)(?=.*Firefox)")

# set focus to address on browser
xdotool key --window $id "ctrl+l"

# copy address from browser tab
xdotool key --window $id "ctrl+c"

# delivery of clipboard content to variable
url=`xclip -o -selection clipboard`

# clear clipboard
xsel -bc; xsel -c

# echo URL of active tab of active browser
echo $url

답변1

나는 이것을 위해 xdotool을 사용하지 않을 것입니다. 그것은 너무 취약하고 오류가 발생하기 쉽습니다. 다음과 같은 적절한 브라우저 자동화 도구를 사용하십시오. 인형. maronatte_driver Python 모듈을 설치합니다.

pip3 install --user marionette_driver

--marionette 옵션을 사용하여 Firefox의 새 인스턴스를 시작합니다.

firefox --marionette

다음 get_url.py를 사용하세요.

#!/usr/bin/env python3

import marionette_driver

m = marionette_driver.marionette.Marionette()

m.start_session()
print(m.get_url())
m.delete_session()

예:

$ ./get_url.py
https://unix.stackexchange.com/questions/629440/how-to-get-the-url-from-current-tab-of-firefox-by-help-of-wmctrl

./get_url.py명령 대체를 사용하여 출력을 변수에 저장할 수 있습니다 .

$ url="$(./get_url.py )"
$ echo $url
https://unix.stackexchange.com/questions/629440/how-to-get-the-url-from-current-tab-of-firefox-by-help-of-wmctrl/629447?noredirect=1#comment1177925_629447

답변2

이건 또 다른 글쓰기 방법이에요

# Search for the visible Firefox window(s) and get its window ID
window_id=$(xdotool search --onlyvisible --class "firefox")

# Send the keyboard shortcut to open the URL bar, copy the URL to clipboard and then close the URL bar by sending the Escape key.
# The command is sent to the Firefox window with the specified ID using the --window option.
xdotool key --window $window_id --delay 20 --clearmodifiers ctrl+l ctrl+c Escape

# delivery of clipboard content to variable
clipboard=`xclip -o -selection clipboard`

# clear clipboard
xsel -bc; xsel -c

# echo URL of active tab of active browser
echo $clipboard

답변3

샘플 코드에서 xdotool 관련 문제를 해결할 수 있습니다. xdotool 오류를 수정하려면 다음 샘플 코드를 참조하세요.

#!/bin/bash

while true; do

echo Get current_wid
current_wid=$(xdotool getwindowfocus) # Get wid of current window and save this value for go bac later
echo "$current_wid"
echo
echo

echo F5 senden
xdotool windowactivate --sync "$current_wid" key --clearmodifiers F5
echo
echo

echo Fix von aktivem Fenster
xdotool windowactivate "$current_wid" # Done, now go back to where we were
echo
echo

echo "sleep 1"
sleep 1
done

echo "Zum Beenden Enter drücken oder Ctl + C."; read -r

관련 정보