belirli bir profilde Firefox'ta bir URL'yi nasıl açabilirim?


9

Birkaç farklı profilde çalışan birkaç Firefox örneğim var. Bunlar arasında "yazılım" ve "test" adlarıyla profiller.

Ben profil "test", böyle açmak için bir bash betiğinden bir URL açmaya çalışıyorum:

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

Ancak bu zaten "yazılım" profilinde açar. Herhangi bir fikir?

Mozilla / 5.0 (X11; U; Linux x86_64; tr-TR; rv: 1.9.1.8) Gecko / 20100308 Buzdağı / 3.5.8 (Firefox / 3.5.8 gibi)

Hayır, bu bir izin sorunu değil, tüm profil dizinlerim izinlerimin altında mükemmel bir şekilde:

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# 

Yanıtlar:


7

3 yıllık geç cevap için özür dilerim, şimdi bu konuyla ilgilenmeye başladım ve bu soruyu buldum.

Hiçbir yerde belgelenmiş bir çözüm bulamadım, bu yüzden kaynak kodunu kontrol ettim ve burada çok ilgili bir bölüm var: http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537

Burada, satırın sonundaki nullptr maalesef profil bağımsız değişkeninin SendCommandLine işlevine iletilmediğini gösterir, bu nedenle openurl iletisini göndermek için doğru firefox penceresini seçmek mümkün değildir.

Ancak, kullanıcı adının iletildiğini ve kullanıcı adının LOGNAME ortam değişkeninden sindirildiğini görüyoruz. Buna dayanarak, aşağıdaki çözümü buldum:

  • Firefox.sh adlı bu komut dosyasıyla firefox'u sararım:
FOX_PROFILE = dinle
verme LOGNAME = hata. $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
  • ilk çalıştırıldığında, yeni bir örnek başlatır ve ~ / .mozilla_profiles / facebook dizininin bulunması gerekir,

  • facebook profili zaten çalışıyorsa ikinci kez çalıştırıldığında, doğru bir şekilde bağlanır,

  • komutları birden çok farklı çalışan profile doğru gönderebilir (elbette farklı komut dosyalarının ilk satırındaki FOX_PROFILE parametresini değiştirmeniz gerekir).

Bunu Linux'ta Firefox 26 ile test ettim ve işe yarıyor.

Alternatif olarak, kullanmak isteyebileceğiniz veya istemeyeceğiniz tam teşekküllü çözümüm:

#! / Bin / bash

set -e

FOX = / opt / firefox / firefox

MESAJ = $ @

eğer [-z "$ FOX_PROFILE"]; sonra
  eğer [-z "$ {MESSAGE}"]; sonra
    FOX_PROFILE = Varsayılan
  Başka
    FOX_PROFILE = $ (kdialog - varsayılan varsayılan --menu "- $ {MESSAGE} -" varsayılan varsayılan google google facebook facebook errge errge spam spam)
  fi
fi
FOX_PROFILE dosyasını dışa aktar

# Bu kesmek gereklidir, çünkü firefox uzaktan komut satırı gönderme
# profile parametresini yok sayar. Bkz. NsAppRunner.cpp: 1505.
verme LOGNAME = hata. $ FOX_PROFILE

# Exec yerine arka plan yürütme kullanıldığında, davranış
# profil zaten çalışıyorken ve sadece
# başlıyor.
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"

# Büyük başarı.
çıkış 0

Komut dosyasını herhangi bir parametre olmadan çalıştırırsanız, varsayılan profili otomatik olarak seçer, ancak kabuğunuzda elle FOX_PROFILE ayarlayarak geçersiz kılabilirsiniz. Komut satırına bir URL iletilirse, her zaman onu açmak için bir profil ister, bunun nedeni çoğunlukla sohbet ve e-posta programımdan tıkladığım ve bu durumda her zaman bir profil seçmek istiyorum (takvim için google spam, doğum günü spamları için facebook vb.). Tabii ki mantığı kullanım tarzınıza uyacak şekilde değiştirebilirsiniz, bu sadece bir örnektir, önemli bilgi LOGNAME hilesi.

Ve elbette, bu sarmalayıcı komut dosyasının makinenizdeki tarayıcıyı başlatmanın tek yolu olduğundan emin olmalısınız. Çünkü doğru LOGNAME ayarı olmadan bir profil açarsanız, o profille artık iletişim kuramazsınız. Bu betiği yolumda ilk olarak x-www-tarayıcı, firefox, mantıklı tarayıcı gibi birden fazla sembolik isimle koydum ve BROWSER ortam değişkenine de koydum. Bunun nasıl yapılacağı tam olarak GNU / Linux dağıtımınıza bağlıdır.


Bunun için çok teşekkürler. Bana öyle geliyor ki profilin ayarlanması gerekli değil ve LOGNAME ayarının doğru olanı yapmak için yeterli olduğu görülüyor.
dset0x

0

Zaten çalışan bir örneğiniz varsa, Firefox bunu yeniden kullanır. Deneyin firefox -no-remote.


Ama bir örneği tekrar kullanmasını istiyorum! Sadece belirli bir tane, sevdiği herhangi bir rastgele değil. Komutuma "-no-remote" eklemeyi denediysem, şunu alıyorum: "Iceweasel zaten çalışıyor, ancak yanıt vermiyor. Yeni bir pencere açmak için önce mevcut Iceweasel işlemini kapatmalı veya sisteminizi yeniden başlatmalısınız."
miernik

Ah, bu onu daha ilginç kılıyor. Korkarım bunu nasıl yapabileceğinizi bilmiyorum. IIUC, -no-remote örnekler arasında "konuşmayı" devre dışı bırakır. Bu, hedef dışı ve toplamda fazla doldurulmuş olabilir, ancak merkezi bir dosyayı veya sunucu URL kuyruğunu yoklayan ve geçerli profil için kastedilen bir uzantı oluşturabilirsiniz. Daha sonra bu uzantıyı tüm örneklerinize yüklersiniz.
janmoesen

0

@miemik

"Ama bir örneği yeniden kullanmasını istiyorum! Sadece belirli bir tane, sevdiği herhangi bir rastgele değil. Komutuma" -no-remote "eklemeyi denediysem, şunu alıyorum:" Iceweasel zaten çalışıyor, ama yanıt vermiyor. Yeni bir pencere açmak için önce mevcut Iceweasel işlemini kapatmalı veya sisteminizi yeniden başlatmalısınız. "

Profilinizle ilgili bir izin sorununuz var ... İzni kontrol edin. Başka bir yerden (partition..disk ..) kopyaladınız veya taşıdınız mı?

Çözüm:

Root olun ve root olarak çalışıp çalışmadığını görmek için en üste gidin. Sonra profil dirs lld (hangi onların önünde bir nokta (.) İle ur ev dir altında olmalıdır ... görmek için "ls -al" kullanmak zorunda anlamına gelir.

Bu yöntemin diğer iznini doğrulayın ve uygun şekilde değiştirin.

Şerefe!


İzinleri kontrol ettim ve sonucu sorumu düzenlemeye yapıştırdım. Bu sorun değil.
miernik

0

Çalışmaz. Bir Mozilla uygulamasının 2 örneğini çalıştırmanın tek yolu, ikincisine uzaktan bağlantıları devre dışı bırakmaktır (genellikle MOZ_NO_REMOTE = 1 ile). Bu, diğer örneklerle iletişim kurma yeteneğini devre dışı bıraktığınız anlamına gelir (yeni bir sayfa açmak gibi).

Böylece, seçenekleriniz no remoteetkin olan yeni bir uygulama açmak veya uzaktan erişime izin veren örneği yeniden kullanmaktır.


Gerçekten işe yarıyor, errge'nin cevabına bakın. Ne demek işe yaramaz ?
pts

0

Bunu -no-remoteyalnızca test profili çağrısına (yazılım profili zaten açık olduktan sonra) şu şekilde ekleyebilirsiniz :

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

Bu, diğer tüm bağlantıların yine de diğer profilinizde uzaktan açılmasına izin vermelidir.

Bu çözüm işe yaramazsa, Firefox'u her zaman test etmek, kullanmak için ayrı bir kullanıcı olarak çalıştırabilirsiniz sudo -u. Firefox bunu profillerle gerçekten düzgün bir şekilde idare edebilmelidir.


Bu yanıt iyi olamaz çünkü -no-remotebayrakla yeni bir Firefox örneği başlatılır ve soru zaten çalışıyorsa mevcut Firefox örneklerinin yeniden kullanılmasını gerektirir.
pts

0

Mozilla Firefox zaten Varsayılan profille veya başka bir profille açıksa, şunu deneyin:

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

Benim için Mozilla Firefox ile 2.x'ten 12.x'e kadar test edildi ve çalıştı


Komut satırı kullanmak için gerekli profili içermediğinden bu yanıt iyi olamaz.
pts

0

Belirli bir profille ilk kez bir Firefox örneği başlattığınızda, şu komutu kullanın:

firefox -P foo -new-instance

Açmak için yukarıdaki komutun sonuna bir URL ekleyebilirsiniz. Daha sonra, bu örnekte bir URL açmak istediğinizde şunları kullanabilirsiniz:

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

Bir komut dosyası yazıyorsanız ve yukarıdaki komutlardan hangilerinin çağrılması gerektiğini görmek için o profili çalıştıran bir örnek olup olmadığını öğrenmek istiyorsanız, şunları kullanabilirsiniz:

firefox -P foo -remote 'ping()'

Linux'ta Firefox 34 ile test edildi.

Şu anda Firefox'ta mesajla hata yapan bir hata olduğunu unutmayın

Error: Failed to send command: 500 command not parseable

eğer -remote openurl()komutu (bir cin tarafından başlatılmış bir komut örneğin) bir kontrol tty olmadan yapılır.

KDE'de bir .desktop dosyasından (örn. Paneldeki bir başlatıcıdan) bir komut dosyası başlatırken bu hatayı vurdum, bu yüzden biraz sinir bozucu olan "terminalde çalıştır" seçeneğini işaretlemek zorunda kaldım.


-1

Kayıt için bir çözüm: KDE'de varsayılan tarayıcıyı aşağıdaki komutla çalışacak şekilde ayarladık:

firefox -P "default"

burada "varsayılan", her seferinde kullanmak istediğimiz profilimizdir.

Şimdi, Firefox örneğimize argüman olmadan başlıyoruz (varsayılan KDE Firefox başlatıcısı). Bu Firefox'u normal bir şekilde açar, şimdi başka bir profil açmak istiyoruz, bunun için KDE menü düzenleyicide başka bir başlatıcı yapıyoruz:

firefox -ProfileManager -no-remote %u

Bu profil yöneticisini açar, hangi profili kullanacağımızı seçeriz.

Aynı anda çalışan birkaç profil üzerinde test edildi, herhangi bir uygulamadan (sohbet istemcisi gibi) bir URL'yi tıkladığımızda, seçtiğimiz profilde yeni bir sekme açılır.

Umarım birisi bunu faydalı bulur :).

Gnome'da test edilmedi, ancak umarım çoğaltılabilir.


1
Bu soruya cevap vermiyor, OP otomatik olarak bir komut dosyasından farklı profillerle firefox başlatmak istiyor.
terdon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.