Làm cách nào để mở các liên kết ngoài trong các cấu hình khác nhau với Firefox?


7

Tôi có hai phiên bản firefox chạy theo các cấu hình riêng biệt:

$ firefox -P default &
...
$ firefox -no-remote -P second &

Bây giờ tôi có thể mở một tab mới từ dòng lệnh với:

$ firefox -new-tab http://unix.stackexchange.com

Nhưng làm thế nào để tôi mở một tab mới trong hồ sơ thứ hai?

Điều này:

$ firefox -P second -new-tab http://unix.stackexchange.com

mở một tab trong hồ sơ mặc định, trong khi:

$ firefox -no-remote -P second -new-tab http://unix.stackexchange.com

phàn nàn rằng đã có một phiên bản chạy dưới hồ sơ đó.


2
Bạn cần sử dụng -new-instancethay vì -no-remote(xem lỗi # 716110 ). Nhưng ngay cả điều đó không hoạt động như Firefox 29: firefox -P second URLvẫn liên lạc với phiên bản đầu tiên.
Gilles 'SO- ngừng trở nên xấu xa'

Nhận xét của Gilles ở trên đã không còn đúng khi firefox 39xem các bình luận bên dưới.
Att Righ

Câu trả lời:


3

Hiện tại nó hoạt động với firefox29.0 trên Linux:

Để mở một phiên bản thứ hai firefoxvới một hồ sơ khác:

firefox -P second -new-instance

Để mở một tab mới trong trường hợp thứ hai firefox, os đã chạy:

firefox -P second -remote "openurl(http://example.com,new-tab)"


Xem Bug 716110 - cờ tách đôi mới ra khỏi cờ -no-remote hiện có để biết thêm gợi ý (ví dụ: bài của Hayo).

Như đã giải thích trong các nhận xét về báo cáo lỗi này, điều còn thiếu là một lệnh có thể được sử dụng để mở cửa sổ đầu tiên và tab thứ hai theo cùng một cách:

Điều đó có thể được thực hiện với một kịch bản dọc theo dòng này (firefox-profile-instance ):

#!/bin/bash

PROFILE="$1"
URL="$2"

if firefox -P "$PROFILE" -remote "ping()" >/dev/null 2>&1 ; then
    firefox -P "$PROFILE" -remote "openurl($URL,new-tab)"
else
    firefox -P "$PROFILE" -new-instance "$URL" &
fi

Bây giờ, trong khi một firefox có cấu hình mặc định đang chạy,
thì lần chạy đầu tiên này sẽ khởi động một trình duyệt mới có cấu hình "thứ hai":

firefox-profile-instance second "http://example.com"

và chạy cùng một lần nữa sẽ mở một tab thứ hai trong cùng một trình duyệt:

firefox-profile-instance second "http://example.com"


1
Các -remotetùy chọn đã được gỡ bỏ khỏi firefox . Tuy nhiên, các lệnh hiện hữu -new-window, -new-tabvà lệnh mở chung đã được mở rộng để hỗ trợ cho lập luận -P (true trong firefox 52) ..
ATT righ

1
Dường như không có tương đương với -remote ping()tùy chọn. Điều này có thể được thay thế bằng một cuộc gọi đến pgrep(xem câu trả lời dưới đây).
Att Righ

0

Câu trả lời này rất giống với phần mở rộng của câu trả lời của Volker Siegel ở trên và tôi rất vui khi hai người được hợp nhất. Tôi chỉ viết điều này để định dạng một tập lệnh mới do firefox không còn hỗ trợ -remote.

Các phiên bản mới của Firefox (được thử nghiệm với phiên bản 52) hỗ trợ -new-instancetùy chọn sinh ra một phiên bản mới hỗ trợ các cuộc gọi từ xa. Các cuộc gọi tiếp theo đến firefox, nếu được cung cấp một -Pđối số, sẽ thực hiện các hành động trong một hồ sơ firefox đang chạy với tên hồ sơ đã cho.

Nếu bạn muốn kết hợp sinh sản và liên kết mở thành một tập lệnh thì điều này có thể đạt được bằng cách sử dụng pgrepnhư dưới đây:

#!/bin/bash
profile=profile-name
if pgrep --full "^firefox-esr\b.*$profile" > /dev/null; then
    firejail --profile=$HOME/.firejail/firefox.jail.profile firefox -P "$profile" "$@" > /dev/null
else
    firejail --profile=$HOME/.firejail/firefox.jail.profile firefox -new-instance -P "$profile" "$@"
    disown $!
fi

(Cảnh báo tập lệnh này chưa được thử nghiệm, nhưng được điều chỉnh từ tập lệnh mà tôi sử dụng)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.