ขออภัยที่ตอบช้ากว่า 3 ปีฉันเริ่มสนใจในหัวข้อนี้และพบคำถามนี้
ฉันไม่พบโซลูชันที่มีการบันทึกไว้ที่ใดเลยดังนั้นฉันจึงเช็คเอาท์ซอร์สโค้ดและนี่เป็นส่วนที่เกี่ยวข้องมาก:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
ที่นี่ nullptr ที่ท้ายบรรทัดน่าเสียดายหมายความว่าอาร์กิวเมนต์โปรไฟล์ไม่ถูกส่งผ่านไปยังฟังก์ชัน SendCommandLine ดังนั้นจึงไม่สามารถเลือกหน้าต่าง firefox ที่ถูกต้องเพื่อส่งข้อความ openurl ไปที่
อย่างไรก็ตามเราเห็นว่าชื่อผู้ใช้กำลังถูกส่งผ่านและชื่อผู้ใช้จะถูก intiailized จากตัวแปรสภาพแวดล้อมของ LOGNAME จากสิ่งนี้ฉันคิดวิธีแก้ปัญหาต่อไปนี้
- ฉันห่อ firefox ด้วยสคริปต์นี้ชื่อ firefox.sh:
FOX_PROFILE = Facebook
ส่งออก LOGNAME = errge $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
เมื่อวิ่งเป็นครั้งแรกมันจะเริ่มต้นอินสแตนซ์ใหม่และต้องมีไดเร็กทอรี ~ / .mozilla_profiles / facebook
เมื่อวิ่งเป็นครั้งที่สองหากโปรไฟล์ Facebook ทำงานอยู่มันจะเชื่อมต่อกับมันอย่างถูกต้อง
มันสามารถส่งคำสั่งอย่างถูกต้องไปยังโปรไฟล์การทำงานที่แตกต่างกันหลายรายการ (แน่นอนว่าคุณต้องเปลี่ยนพารามิเตอร์ FOX_PROFILE ในบรรทัดแรกในสคริปต์ที่แตกต่างกัน)
ฉันทดสอบสิ่งนี้ด้วย Firefox 26 บน Linux และใช้งานได้
หรือนี่คือโซลูชันเต็มรูปแบบของฉันที่คุณอาจต้องการหรือไม่ต้องการใช้:
#! / bin / ทุบตี
ชุด -e
ฟ็อกซ์ = / opt / Firefox / Firefox
MESSAGE = $ @
ถ้า [-z "$ FOX_PROFILE"]; แล้วก็
ถ้า [-z "$ {MESSAGE}"]; แล้วก็
FOX_PROFILE = เริ่มต้น
อื่น
FOX_PROFILE = $ (kdialog - ค่าเริ่มต้นเริ่มต้น - เมนู "- $ {MESSAGE} -" ค่าเริ่มต้น google google facebook facebook facebook errge err spam spam)
Fi
Fi
ส่งออก FOX_PROFILE
# แฮ็คนี้จำเป็นเนื่องจากการส่งคำสั่งจากระยะไกลของ firefox
# ละเว้นพารามิเตอร์โปรไฟล์ ดู nsAppRunner.cpp: 1505
ส่งออก LOGNAME = errge $ FOX_PROFILE
# การใช้การเรียกใช้พื้นหลังแทนการใช้ exec
# สอดคล้องกันเมื่อโปรไฟล์กำลังทำงานและเมื่อเป็นเพียง
# เริ่มต้นขึ้น
$ FOX - โปรไฟล์ ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# ประสบความสำเร็จอย่างมาก.
ออก 0
หากคุณเรียกใช้สคริปต์โดยไม่มีพารามิเตอร์ใด ๆ สคริปต์จะเลือกโปรไฟล์เริ่มต้นโดยอัตโนมัติ แต่คุณสามารถลบล้างสคริปต์ได้โดยการตั้งค่า FOX_PROFILE ด้วยมือในเชลล์ของคุณ หากมีการส่ง URL ในบรรทัดคำสั่งมันจะถามโปรไฟล์ที่จะเปิดเสมอเพราะฉันคลิกผ่านจากโปรแกรมแชทและอีเมลเป็นหลักและในกรณีนั้นฉันต้องการเลือกโปรไฟล์เสมอ (google สำหรับปฏิทิน สแปม, Facebook สำหรับวันเกิดสแปม ฯลฯ ) แน่นอนคุณสามารถเปลี่ยนตรรกะเพื่อให้เหมาะกับสไตล์การใช้งานของคุณนี่เป็นเพียงตัวอย่างความรู้ที่สำคัญคือเคล็ดลับ LOGNAME
และแน่นอนคุณต้องแน่ใจว่าสคริปต์ตัวตัดนี้เป็นวิธีเดียวที่จะเริ่มเบราว์เซอร์บนเครื่องของคุณ เพราะถ้าคุณเปิดโปรไฟล์โดยไม่มีชุด LOGNAME ที่ถูกต้องคุณจะไม่สามารถสื่อสารกับโปรไฟล์นั้นได้อีก ฉันใส่สคริปต์นี้เป็นครั้งแรกในเส้นทางของฉันผ่านชื่อที่เชื่อมโยงหลายอย่างเช่น x-www-browser, firefox, sensible-browser และวางไว้ในตัวแปรสภาพแวดล้อม BROWSER เช่นกัน วิธีการทำเช่นนี้ขึ้นอยู่กับการกระจาย GNU / Linux ของคุณ