Désolé pour la réponse tardive de 3 ans, je me suis intéressé à ce sujet tout à l'heure et j'ai trouvé cette question.
Je n'ai trouvé aucune solution documentée nulle part, j'ai donc vérifié le code source et voici une partie très pertinente:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Ici, le nullptr à la fin de la ligne signifie malheureusement que l'argument de profil n'est pas transmis à la fonction SendCommandLine, il n'est donc pas possible de sélectionner la fenêtre firefox correcte pour envoyer le message openurl.
Cependant, nous voyons que le nom d'utilisateur est passé et que le nom d'utilisateur est intiailized à partir de la variable d'environnement LOGNAME. Sur cette base, j'ai trouvé la solution suivante:
- J'enveloppe firefox avec ce script, appelé firefox.sh:
FOX_PROFILE = facebook
export LOGNAME = errge. $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
lors de sa première exécution, il démarre une nouvelle instance et le répertoire ~ / .mozilla_profiles / facebook doit exister,
lors de sa deuxième exécution si le profil facebook est déjà en cours d'exécution, il s'y connecte correctement,
il peut envoyer des commandes correctement à plusieurs profils d'exécution différents (bien sûr, vous devez modifier le paramètre FOX_PROFILE dans la première ligne des différents scripts).
J'ai testé cela avec Firefox 26 sur Linux et cela fonctionne.
Alternativement, voici ma solution à part entière que vous souhaiterez ou non utiliser:
#! / bin / bash
set -e
FOX = / opt / firefox / firefox
MESSAGE = $ @
if [-z "$ FOX_PROFILE"]; puis
if [-z "$ {MESSAGE}"]; puis
FOX_PROFILE = par défaut
autre
FOX_PROFILE = $ (kdialog --default default --menu "- $ {MESSAGE} -" default default google google facebook facebook errge errge spam spam)
Fi
Fi
exporter FOX_PROFILE
# Ce hack est nécessaire, car l'envoi de la ligne de commande à distance de Firefox
# ignore le paramètre de profil. Voir nsAppRunner.cpp: 1505.
export LOGNAME = errge. $ FOX_PROFILE
# Utiliser l'exécution en arrière-plan au lieu de exec, donc le comportement est
# cohérent lorsque le profil est déjà en cours d'exécution et lorsqu'il est juste
# démarrage.
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# Énorme succès.
sortie 0
Si vous exécutez le script sans aucun paramètre, il sélectionne automatiquement le profil par défaut, mais vous pouvez le remplacer en définissant FOX_PROFILE à la main dans votre shell. Si une URL est passée dans la ligne de commande, elle demande toujours un profil dans lequel l'ouvrir, c'est parce que je clique principalement à partir de mon programme de chat et de messagerie et dans ce cas, je veux toujours sélectionner un profil (google for calendar spam, facebook pour anniversaire spam, etc.). Bien sûr, vous pouvez modifier la logique pour l'adapter à votre style d'utilisation, ce n'est qu'un exemple, la connaissance importante est l'astuce LOGNAME.
Et bien sûr, vous devez vous assurer que ce script wrapper est le seul moyen de démarrer le navigateur sur votre machine. Parce que si vous ouvrez un profil sans l'ensemble LOGNAME correct, vous ne pourrez plus communiquer avec ce profil. J'ai mis ce script en premier sur mon chemin via plusieurs noms liés par des liens symboliques, comme x-www-browser, firefox, sensible-browser et je l'ai également placé dans la variable d'environnement BROWSER. Comment faire cela dépend exactement de votre distribution GNU / Linux.