किसी विशिष्ट प्रोफ़ाइल में फ़ायरफ़ॉक्स में एक URL को दूरस्थ रूप से कैसे खोलें?


9

मेरे पास फ़ायरफ़ॉक्स के कई उदाहरण हैं जिनमें कई अलग-अलग प्रोफाइल चल रहे हैं। उनमें से "सॉफ्टवेयर" और "टेस्ट" नामों के साथ प्रोफाइल।

मैं एक bash स्क्रिप्ट से URL खोलने की कोशिश कर रहा हूँ ताकि यह प्रोफाइल "टेस्ट" में खुल सके, इस तरह:

firefox -P "test" http://www.example.org/

हालाँकि जो इसे प्रोफाइल "सॉफ्टवेयर" में खोलता है। कोई विचार?

मोज़िला / 5.0 (X11; यू; लिनक्स x86_64; en-US; rv: 1.9.1.8) गेको / 20100308 आइसव्हील / 3.5.8 (जैसे फ़ायरफ़ॉक्स / 3.5.8)

नहीं, यह अनुमतियों की समस्या नहीं है, मेरी सभी प्रोफ़ाइल निर्देशिकाएं मेरी अनुमतियों के अंतर्गत हैं:

root@przehyba:~/.mozilla# ls -ld firefox/
drwx------ 13 miernik miernik 4096 Mar 11 09:15 firefox/
root@przehyba:~/.mozilla# ls -ld firefox/*
drwxr-xr-x  9 miernik miernik 4096 Mar 12 11:29 firefox/info
-rw-r--r--  1 miernik miernik  560 Mar 11 09:15 firefox/profiles.ini
drwxr-xr-x 10 miernik miernik 4096 Mar 16 11:51 firefox/software
drwxr-xr-x  9 miernik miernik 4096 Mar 11 09:14 firefox/tech
drwxr-xr-x 11 miernik miernik 4096 Mar 15 22:48 firefox/test
root@przehyba:~/.mozilla# 

जवाबों:


7

3 साल देर से जवाब के लिए क्षमा करें, मुझे अभी इस विषय में दिलचस्पी हो गई और मुझे यह प्रश्न मिला।

मुझे कहीं भी प्रलेखित समाधान नहीं मिला, इसलिए मैंने स्रोत कोड की जाँच की और यहाँ एक बहुत ही प्रासंगिक हिस्सा है: http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cn#1537

यहां, लाइन के अंत में nullptr दुर्भाग्य से इसका मतलब है कि SendCommandLine फ़ंक्शन को प्रोफ़ाइल तर्क पास नहीं किया जा रहा है, इसलिए ओपनर संदेश भेजने के लिए सही फ़ायरफ़ॉक्स विंडो का चयन करना संभव नहीं है।

हालाँकि, हम देखते हैं कि उपयोगकर्ता नाम दिया जा रहा है और उपयोगकर्ता नाम LOGNAME पर्यावरण चर से सूचित किया जा रहा है। इसके आधार पर, मैं निम्नलिखित समाधान के साथ आया:

  • मैं इस स्क्रिप्ट के साथ फ़ायरफ़ॉक्स लपेटता हूँ, जिसे फ़ायरफ़ॉक्स कहा जाता है:
FOX_PROFILE = फेसबुक
निर्यात LOGNAME = त्रुटी। $ FOX_PROFILE
/ ऑप्ट / फ़ायरफ़ॉक्स / फ़ायरफ़ॉक्स -प्रायोज्य ~ / .mozilla_profiles / $ FOX_PROFILES "$"
  • जब पहली बार दौड़ा, तो यह एक नया उदाहरण शुरू करता है और ~ / .mozilla_profiles / facebook निर्देशिका मौजूद है,

  • जब दूसरी बार फेसबुक प्रोफाइल पहले से चल रहा हो तो इसे सही तरीके से कनेक्ट करने पर,

  • यह कई अलग-अलग रनिंग प्रोफाइलों को सही तरीके से कमांड भेज सकता है (बेशक आपको अलग-अलग स्क्रिप्ट में पहली पंक्ति में FOX_PROFILE पैरामीटर बदलना होगा)।

मैंने लिनक्स पर फ़ायरफ़ॉक्स 26 के साथ इसका परीक्षण किया और यह काम करता है।

वैकल्पिक रूप से, यहां मेरा पूर्ण समाधान है जो आप उपयोग करना चाहते हैं या नहीं कर सकते हैं:

#! / Bin / bash

सेट

फॉक्स = / opt / फ़ायरफ़ॉक्स / फ़ायरफ़ॉक्स

संदेश = $ @

अगर [-z "$ FOX_PROFILE"]; फिर
  अगर [-z "$ {MESSAGE}"]; फिर
    FOX_PROFILE = डिफ़ॉल्ट
  अन्य
    FOX_PROFILE = $ (kdialog --default default --menu "- $ {MESSAGE} -" डिफ़ॉल्ट डिफ़ॉल्ट google google facebook facebook गलती से स्पैम स्पैम को गलत करता है)
  फाई
फाई
निर्यात FOX_PROFILE

# इस हैक की जरूरत है, क्योंकि फायरफॉक्स रिमोट कमांड लाइन भेज रहा है
# प्रोफाइल पैरामीटर को नजरअंदाज करता है। NsAppRunner.cpp: 1505 देखें।
निर्यात LOGNAME = त्रुटी। $ FOX_PROFILE

# निष्पादन के बजाय पृष्ठभूमि निष्पादन का उपयोग करना, इसलिए व्यवहार है
# संगत जब प्रोफ़ाइल पहले से चल रही हो और जब वह बस हो
# आरंभ करना।
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"

# बड़ी सफलता।
बाहर निकलें 0

यदि आप स्क्रिप्ट को बिना किसी पैरामीटर के चलाते हैं, तो यह डिफ़ॉल्ट प्रोफ़ाइल को निरूपित करता है, लेकिन आप अपने शेल में हाथ से FOX_PROFILE को सेट करके इसे ओवरराइड कर सकते हैं। यदि कोई URL कमांड लाइन में पास हो जाता है, तो यह हमेशा एक प्रोफ़ाइल के लिए पूछता है जिसमें इसे खोलना है, यह इसलिए है क्योंकि मैं मुख्य रूप से अपने चैट और ईमेल प्रोग्राम से क्लिक करता हूं और उन मामलों में मैं हमेशा एक प्रोफ़ाइल (कैलेंडर के लिए Google) का चयन करना चाहता हूं स्पैम, जन्मदिन स्पैम के लिए फेसबुक, आदि)। बेशक आप अपनी उपयोग की शैली को फिट करने के लिए तर्क को बदल सकते हैं, यह सिर्फ एक उदाहरण है, महत्वपूर्ण ज्ञान LOGNAME चाल है।

और निश्चित रूप से आपको यह सुनिश्चित करना होगा कि यह आवरण स्क्रिप्ट आपकी मशीन पर ब्राउज़र को शुरू करने का एकमात्र तरीका है। क्योंकि यदि आप सही LOGNAME सेट के बिना एक प्रोफ़ाइल खोलते हैं, तो इससे आप उस प्रोफ़ाइल पर संचार नहीं कर पाएंगे। मैंने इस स्क्रिप्ट को एक्स-www-ब्राउज़र, फ़ायरफ़ॉक्स, समझदार-ब्राउज़र जैसे कई सममित नामों के माध्यम से पहले पथ पर रखा और इसे BROWSER पर्यावरण चर में भी डाल दिया। यह कैसे करना है यह आपके GNU / Linux वितरण पर निर्भर करता है।


इस लिए आपका बहुत - बहुत धन्यवाद। यह मुझे लगता है कि प्रोफ़ाइल सेट करना आवश्यक नहीं है और यह कि LOGNAME सेट करना सही काम करने के लिए पर्याप्त है।
dset0x

0

यदि आपके पास पहले से एक इंस्टेंस चल रहा है, तो फ़ायरफ़ॉक्स पुनः उपयोग करेगा। कोशिश करो firefox -no-remote


लेकिन मैं चाहता हूं कि यह एक उदाहरण का पुन: उपयोग करे! केवल एक विशिष्ट एक, कोई यादृच्छिक नहीं जिसे वह पसंद करता है। अगर मैंने अपने कमांड में "-नोट-रिमोट" जोड़ने की कोशिश की, तो मुझे लगता है: "आइसविशेल पहले से ही चल रहा है, लेकिन प्रतिक्रिया नहीं दे रहा है। एक नई विंडो खोलने के लिए, आपको पहले मौजूदा आइसविसेल प्रक्रिया को बंद करना होगा, या अपने सिस्टम को पुनरारंभ करना होगा।"
मिरिकेन

आह, कि यह और अधिक रोचक बना देता है। मुझे डर है कि मुझे नहीं पता कि आप ऐसा कैसे कर सकते हैं। IIUC, -no- रिमोट इंस्टेंस के बीच "बात करना" अक्षम करता है। यह लक्ष्य से दूर और कुल ओवरकिल हो सकता है, लेकिन आप एक एक्सटेंशन बना सकते हैं जो एक केंद्रीय फ़ाइल या सर्वर URL कतार को प्रदूषित करता है और इसे तब खोलता है जब यह वर्तमान प्रोफ़ाइल के लिए होता है। फिर आप अपने सभी उदाहरणों में उस एक्सटेंशन को इंस्टॉल करें।
जानमोसन

0

@miemik

"लेकिन मैं चाहता हूं कि यह एक उदाहरण का पुन: उपयोग करे! केवल एक विशिष्ट, कोई भी ऐसा यादृच्छिक नहीं जिसे वह पसंद करता है। यदि मैंने अपने कमांड में"--रिमोट "जोड़ने की कोशिश की है, तो मुझे मिलता है:" आइसव्हील पहले से ही चल रहा है, लेकिन जवाब नहीं दे रहा है। एक नई विंडो खोलने के लिए, आपको पहले मौजूदा Iceweasel प्रक्रिया को बंद करना होगा, या अपने सिस्टम को पुनरारंभ करना होगा। "

आपको अपनी प्रोफ़ाइल के साथ अनुमति की समस्या है ... अनुमति की जांच करें। क्या आपने इसे किसी भी स्थान से कॉपी या स्थानांतरित किया था (विभाजन..डिस्क ..)?

समाधान:

रूट बनें और देखें कि यह रूट के रूप में चल रहा है या नहीं। फिर प्रोफाइल डीआईआर पर ls -ld (जो उर होम डीर के तहत एक अवधि (।) के साथ होना चाहिए) उनके सामने..हम आपको इसे देखने के लिए "ls -al" का उपयोग करना होगा।

उस dir की अन्य अनुमति को सत्यापित करें और तदनुसार बदलें।

चीयर्स!


मैंने अनुमतियाँ जाँच लीं और परिणाम को अपने प्रश्न में संपादित कर दिया। यह वह समस्या नहीं है।
मिरनिक

0

यह काम नहीं करेगा। केवल एक मोज़िला ऐप के 2 इंस्टेंस चलने का एकमात्र तरीका दूसरे से दूरस्थ कनेक्शन को अक्षम करना है (आमतौर पर MOZ_NO_REMOTE = 1 के साथ)। इसका मतलब है कि आप इसके लिए अन्य इंस्टेंस के साथ संचार करने की क्षमता को निष्क्रिय कर देते हैं (जैसे कि एक नया पेज बनाना)।

तो आपकी पसंद या तो no remoteसक्षम के साथ एक नया ऐप खोलना है , या रिमोट एक्सेस की अनुमति देने वाले उदाहरण का पुन: उपयोग करना है।


यह वास्तव में काम करता है, इरेज का जवाब देखें। आप क्या मतलब है यह काम नहीं करेगा ?
पीटी १

0

आपको इस तरह -no-remoteकेवल टेस्ट प्रोफाइल कॉल (सॉफ्टवेयर प्रोफाइल पहले से ही खुला होने के बाद) को जोड़ने में सक्षम होना चाहिए :

firefox -P "test" -no-remote http://www.example.org/

यह अन्य सभी लिंक को अभी भी आपके अन्य प्रोफ़ाइल में दूरस्थ रूप से खोलने की अनुमति देता है।

यदि यह समाधान काम नहीं करता है तो आप हमेशा फ़ायरफ़ॉक्स को परीक्षण, उपयोग के लिए एक अलग उपयोगकर्ता के रूप में चला सकते हैं sudo -u। फ़ायरफ़ॉक्स वास्तव में प्रोफाइल के साथ इसे ठीक से संभालने में सक्षम होना चाहिए।


यह जवाब अच्छा नहीं हो सकता क्योंकि -no-remoteध्वज के साथ एक नया फ़ायरफ़ॉक्स उदाहरण शुरू किया गया है, और प्रश्न के लिए मौजूदा फ़ायरफ़ॉक्स उदाहरणों का पुन: उपयोग करने की आवश्यकता है यदि वे पहले से ही चल रहे हैं।
पीटी

0

यदि आपके पास मोजिला फायरफॉक्स पहले से ही डिफॉल्ट प्रोफाइल या किसी अन्य प्रोफाइल के साथ खुला है, तो कोशिश करें:

Path-To/firefox -remote openurl("http://www.example.org")

परीक्षण किया और 2.x से 12.x तक मोज़िला फ़ायरफ़ॉक्स के साथ मेरे लिए काम किया


यह उत्तर अच्छा नहीं हो सकता क्योंकि कमांड-लाइन में उपयोग करने के लिए आवश्यक प्रोफ़ाइल नहीं है।
पीटी

0

पहली बार जब आप किसी दिए गए प्रोफ़ाइल के साथ फ़ायरफ़ॉक्स उदाहरण शुरू करते हैं, तो कमांड का उपयोग करें:

firefox -P foo -new-instance

आप इसे खोलने के लिए ऊपर दिए गए कमांड के अंत में एक URL जोड़ सकते हैं। बाद में, जब आप उस उदाहरण में एक URL खोलना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

firefox -P foo -remote 'openurl(http://www.example.org)'

यदि आप एक स्क्रिप्ट लिख रहे हैं और यह पता लगाना चाहते हैं कि क्या पहले से ही उस प्रोफ़ाइल को चलाने वाला एक उदाहरण है, यह देखने के लिए कि ऊपर दिए गए कमांड में से किसे बुलाया जाना चाहिए, तो आप इसका उपयोग कर सकते हैं:

firefox -P foo -remote 'ping()'

लिनक्स पर फ़ायरफ़ॉक्स 34 के साथ परीक्षण किया गया।

ध्यान दें कि वर्तमान में फ़ायरफ़ॉक्स में एक बग है जो इसे संदेश के साथ त्रुटि करता है

Error: Failed to send command: 500 command not parseable

यदि -remote openurl()कमांड बिना कंट्रोलिंग ट्टी के बनाया जाता है (जैसे, एक डेमॉन द्वारा शुरू की गई स्क्रिप्ट से)।

जब केडीई (जैसे पैनल में एक लांचर से) में एक .desktop फ़ाइल से स्क्रिप्ट लॉन्च करते समय मैंने इस बग को मारा, तो मुझे "रन इन टर्मिनल" विकल्प पर टिक करना पड़ा, जो थोड़ा कष्टप्रद है।


-1

रिकॉर्ड के लिए, एक समाधान यह है: केडीई में हम निम्नलिखित कमांड के साथ चलने के लिए डिफ़ॉल्ट ब्राउज़र सेट करते हैं:

firefox -P "default"

जहां "डिफ़ॉल्ट" हमारी प्रोफ़ाइल है जिसे हम हर बार उपयोग करना चाहते हैं।

अब, हम बिना किसी तर्क (डिफ़ॉल्ट KDE फ़ायरफ़ॉक्स लांचर) के साथ अपने फ़ायरफ़ॉक्स उदाहरण को शुरू करते हैं। यह सामान्य रूप से फ़ायरफ़ॉक्स खोलता है, अब हम एक और प्रोफ़ाइल खोलना चाहते हैं, ऐसा करने के लिए, हम केडीई मेनू संपादक में एक और लॉन्चर बनाते हैं:

firefox -ProfileManager -no-remote %u

यह प्रोफाइल मैनेजर खोलता है, हम चुनते हैं कि किस प्रोफाइल का उपयोग करना है।

समवर्ती रूप से चलने वाले कई प्रोफ़ाइलों पर परीक्षण किया जाता है, जब हम किसी भी ऐप (जैसे एक चैट क्लाइंट) से एक यूआरएल पर क्लिक करते हैं, तब हमारे द्वारा चुनी गई प्रोफ़ाइल में एक नया टैब खोला जाता है।

आशा है कि किसी को यह उपयोगी लगता है :)।

गनोम पर परीक्षण नहीं किया गया है, लेकिन मुझे आशा है कि इसे दोहराया जा सकता है।


1
यह सवाल का जवाब नहीं देता है, ओपी स्वचालित रूप से एक स्क्रिप्ट से अलग प्रोफाइल के साथ फ़ायरफ़ॉक्स लॉन्च करना चाहता है।
टेराडॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.