Maaf atas jawaban 3 tahun terlambat, saya menjadi tertarik pada topik ini sekarang dan menemukan pertanyaan ini.
Saya tidak menemukan solusi yang terdokumentasi di mana pun, jadi saya memeriksa kode sumbernya dan ini adalah bagian yang sangat relevan:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Di sini, sayangnya nullptr di akhir baris berarti bahwa argumen profil tidak diteruskan ke fungsi SendCommandLine, oleh karena itu tidak mungkin untuk memilih jendela firefox yang benar untuk mengirim pesan openurl ke.
Namun, kami melihat bahwa nama pengguna sedang diteruskan dan nama pengguna sedang dimasukkan dari variabel lingkungan LOGNAME. Berdasarkan ini, saya datang dengan solusi berikut:
- Saya membungkus firefox dengan skrip ini, bernama firefox.sh:
FOX_PROFILE = facebook
export LOGNAME = errge. $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
ketika dijalankan pertama kali, ia memulai instance baru dan direktori ~ / .mozilla_profiles / facebook harus ada,
ketika berlari kedua kalinya jika profil facebook sudah berjalan, itu terhubung dengan benar,
ia dapat mengirim perintah dengan benar ke beberapa profil yang berjalan (tentu saja Anda harus mengubah parameter FOX_PROFILE di baris pertama dalam skrip yang berbeda).
Saya menguji ini dengan Firefox 26 di Linux dan berhasil.
Atau, inilah solusi lengkap saya yang mungkin Anda inginkan atau tidak ingin Anda gunakan:
#! / bin / bash
set -e
FOX = / opt / firefox / firefox
MESSAGE = $ @
jika [-z "$ FOX_PROFILE"]; kemudian
if [-z "$ {MESSAGE}"]; kemudian
FOX_PROFILE = default
lain
FOX_PROFILE = $ (kdialog - default default --menu "- $ {MESSAGE} -" default default google google facebook facebook errge errge spam spam)
fi
fi
ekspor FOX_PROFILE
# Peretasan ini diperlukan, karena firefox mengirim perintah baris jarak jauh
# mengabaikan parameter profil. Lihat nsAppRunner.cpp: 1505.
export LOGNAME = errge. $ FOX_PROFILE
# Menggunakan eksekusi latar belakang alih-alih exec, jadi perilakunya adalah
# konsisten ketika profil sudah berjalan dan kapan saja
# memulai.
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# Sukses besar.
keluar 0
Jika Anda menjalankan skrip tanpa parameter apa pun, skrip memilih profil default secara otomatis, tetapi Anda dapat menimpanya dengan mengatur FOX_PROFILE dengan tangan di shell Anda. Jika URL dilewatkan di baris perintah, selalu meminta profil untuk membukanya, ini karena saya terutama mengklik dari program chat dan email saya dan dalam hal ini saya ingin selalu memilih profil (google for calendar spam, facebook untuk spam ulang tahun, dll.). Tentu saja Anda dapat mengubah logika agar sesuai dengan gaya penggunaan Anda, ini hanyalah sebuah contoh, pengetahuan penting adalah trik LOGNAME.
Dan tentu saja Anda harus memastikan bahwa skrip pembungkus ini adalah satu-satunya cara untuk memulai browser di mesin Anda. Karena jika Anda membuka profil tanpa set LOGNAME yang benar, maka Anda tidak akan dapat berkomunikasi dengan profil itu lagi. Saya menempatkan skrip ini sebagai yang pertama di jalur saya melalui beberapa nama yang disinkronkan, seperti x-www-browser, firefox, sensible-browser dan memasukkannya ke dalam variabel lingkungan BROWSER juga. Cara melakukan ini tergantung pada distribusi GNU / Linux Anda.