Xin lỗi vì câu trả lời trễ 3 năm, tôi mới bắt đầu quan tâm đến chủ đề này và tìm thấy câu hỏi này.
Tôi đã không tìm thấy một giải pháp tài liệu ở bất cứ đâu, vì vậy tôi đã kiểm tra mã nguồn và đây là một phần rất phù hợp:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Ở đây, nullptr ở cuối dòng không may có nghĩa là đối số hồ sơ không được chuyển đến hàm SendCommandLine, do đó không thể chọn cửa sổ firefox chính xác để gửi thông điệp openurl tới.
Tuy nhiên, chúng tôi thấy rằng tên người dùng đang được thông qua và tên người dùng đang được đặt tên từ biến môi trường LOGNAME. Dựa trên điều này, tôi đã đưa ra giải pháp sau:
- Tôi gói firefox với tập lệnh này, được gọi là firefox.sh:
FOX_PROFILE = facebook
xuất LOGNAME = errge. $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
khi chạy lần đầu tiên, nó bắt đầu một phiên bản mới và thư mục ~ / .mozilla_profiles / facebook phải tồn tại,
Khi chạy lần thứ hai nếu hồ sơ facebook đang chạy, nó sẽ kết nối chính xác với nó,
nó có thể gửi các lệnh chính xác đến nhiều cấu hình đang chạy khác nhau (tất nhiên bạn phải thay đổi tham số FOX_PROFILE trong dòng đầu tiên trong các tập lệnh khác nhau).
Tôi đã thử nghiệm điều này với Firefox 26 trên Linux và nó hoạt động.
Ngoài ra, đây là giải pháp chính thức của tôi mà bạn có thể muốn hoặc không muốn sử dụng:
#! / bin / bash
đặt -e
FOX = / opt / firefox / firefox
TIN NHẮN = $ @
nếu [-z "$ FOX_PROFILE"]; sau đó
if [-z "$ {TIN NHẮN}"]; sau đó
FOX_PROFILE = mặc định
khác
FOX_PROFILE = $ (kdialog --default mặc định --menu "- $ {MESSAGE} -" mặc định google google facebook facebook facebook sai lầm spam spam spam)
fi
fi
xuất FOX_PROFILE
# Hack này là cần thiết, bởi vì gửi dòng lệnh từ xa firefox
# bỏ qua tham số hồ sơ. Xem nsAppRunner.cpp: 1505.
xuất LOGNAME = errge. $ FOX_PROFILE
# Sử dụng thực thi nền thay vì thực thi, vì vậy hành vi là
# nhất quán khi hồ sơ đã chạy và khi nó chỉ
# bắt đầu lên.
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# Thành công lớn.
thoát 0
Nếu bạn chạy tập lệnh mà không có bất kỳ tham số nào, nó sẽ tự động chọn cấu hình mặc định, nhưng bạn có thể ghi đè lên tập lệnh đó bằng cách đặt FOX_PROFILE bằng tay trong vỏ của bạn. Nếu một URL được truyền trong dòng lệnh, nó luôn yêu cầu một hồ sơ để mở nó, điều này là do tôi chủ yếu nhấp qua từ chương trình trò chuyện và email của mình và trong trường hợp đó tôi muốn luôn chọn một hồ sơ (google cho lịch spam, facebook cho sinh nhật spam, v.v.). Tất nhiên bạn có thể thay đổi logic để phù hợp với phong cách sử dụng của mình, đây chỉ là một ví dụ, kiến thức quan trọng là thủ thuật LOGNAME.
Và tất nhiên bạn phải chắc chắn rằng tập lệnh trình bao bọc này là cách duy nhất để khởi động trình duyệt trên máy của bạn. Bởi vì nếu bạn mở một hồ sơ mà không có bộ LOGNAME chính xác, bạn sẽ không thể liên lạc với hồ sơ đó nữa. Tôi đặt tập lệnh này là đầu tiên trong đường dẫn của mình thông qua nhiều tên được liên kết, như trình duyệt x-www, firefox, trình duyệt hợp lý và cũng đặt nó trong biến môi trường BROWSER. Làm thế nào để làm điều này chính xác phụ thuộc vào bản phân phối GNU / Linux của bạn.