J'ai une machine Linux à laquelle je me connecte régulièrement via ssh (putty) à partir de Windows. J'exécute VcXsrv X-server sur mon bureau Windows. Je l'utilise principalement pour exécuter un débogueur (ddd) et firefox pour accéder à notre système de révision de code basé sur le Web. Il est pratique d'utiliser Linux Firefox pour que je puisse le lancer à partir d'un script. Je lance normalement ceci avec "-new-tab" afin de ne pas continuer à créer de nouvelles fenêtres.
Maintenant, j'ai une nouvelle machine Linux de mise à jour que j'exécute à côté de l'ancienne pour le moment. Ce que j'ai remarqué, c'est un comportement étrange: lorsque je lance une nouvelle session Firefox s'il y en a déjà une sur l'une ou l'autre machine, elle l'utilise.
Ce que j'aimerais pouvoir faire, c'est toujours lancer sous un nouvel onglet mais uniquement sous l'instance de Firefox de la machine actuelle, pas une instance d'une autre machine qui se trouve être affichée sur le même X-Server.
J'ai joué avec divers drapeaux, y compris -no-remote, -new-instance et également définir et utiliser des profils spécifiques. Cependant, je n'ai pas pu obtenir le résultat souhaité. Soit j'obtiens le comportement que j'ai décrit ci-dessus, soit je reçois une erreur disant quelque chose comme "Firefox est déjà en cours d'exécution mais ne répond pas, veuillez le fermer".
EDIT: on m'a demandé de modifier cela pour fournir des exemples.
D'ACCORD. Dans ce qui suit, je ferai référence à M_OLD et M_NEW. Il s'agit de machines distinctes exécutant différentes versions de Linux avec différentes versions de Firefox (1.5 et 19). Je me connecte à eux deux via un client ssh appelé Putty et je transfère X vers un serveur X sur mon bureau Windows. Il n'y a qu'un seul serveur X impliqué.
Exemple 1:
Donc, de ma session de mastic à M_OLD, je lance:
firefox www.google.com &
et depuis ma session M_NEW putty je lance:
firefox www.imdb.com &
puis je reçois une fenêtre firefox 1.5 avec deux onglets. Si je fais la même chose en sens inverse, j'obtiens le même résultat mais avec firefox 19. En d'autres termes, comme décrit dans un commentaire ci-dessous, la première commande lance une instance de firefox la seconde dit simplement à l'instance existante d'ouvrir un nouvel onglet. Même si l'instance se trouve sur une autre machine, tant qu'il s'agit du même serveur X.
Mais je n'en veux pas. Je veux avoir des instances distinctes pour des machines distinctes. Donc:
Exemple 2:
Donc, de ma session de mastic à M_OLD, je lance:
firefox -no-remote www.google.com &
et depuis ma session M_NEW putty je lance:
firefox -no-remote www.imdb.com &
Maintenant, j'ai deux instances distinctes de Firefox. Cependant, si je lance ensuite sur M_NEW:
firefox -no-remote www.google.com &
j'aurais
Firefox is already running, but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system.
et même si j'essaye
firefox -no-remote -new-instance www.google.com &
ou juste
firefox -new-instance www.google.com &
alors j'obtiendrai toujours l'erreur.
Ce que je veux vraiment - et ce n'est peut-être pas possible - c'est d'avoir une instance distincte pour chaque machine mais si une nouvelle URL est lancée à partir de cette machine, elle ouvre un nouvel onglet. Il semble que je ne puisse avoir qu'une seule instance avec de nouveaux onglets pour chaque URL, ou une instance par machine, mais une seule à la fois.
J'espère que c'est plus clair.
ssh -X
correct?--no-remote
. Pourriez-vous modifier votre question et nous dire quand vous recevez le message "Firefox déjà en cours d'exécution"? L'exécutionfirefox -no-remote
devrait démarrer une nouvelle instance de Firefox exécutée sur la machine distante mais affichée sur votre serveur X local.-p -no-remote
. Cela permet de commencer avec un nouveau profil Fx. Voir Options de ligne de commande . Pour vous connecter au processus Fx existant, vous pouvez essayerfirefox https://www.mozilla.org
oufirefox -remote "openURL(https://www.mozilla.org, new-tab)"
Réponses:
Les instances distinctes de Firefox (par exemple créées avec
--no-remote
) doivent avoir des profils distincts.Option 1: Créez deux profils (ou plus), un pour chaque système exécutant Firefox. Exemple
Maintenant, lancez Firefox et sélectionnez un profil au démarrage
ou
Option 2: Mettre en place une solution dynamique pour créer un profil "jetable" au démarrage, par exemple un échec dans le sens de:
Vous souhaiterez peut-être ajouter des étapes pour supprimer le profil temporaire par la suite (le direcotry à supprimer peut être trouvé en analysant la sortie de la commande CreateProfile, stockée via la commande ci-dessus dans /tmp/.mozprofile.$TEMPPROFILE
la source
-no-remote
...D'accord ... je ne sais pas si cela fonctionnera, mais c'est la première chose que j'essaierais:
Que diriez-vous si vous créez un deuxième script sur chaque machine, qui n'essaie pas de créer le nouvel onglet, juste une nouvelle instance. Si vous n'avez pas FF en cours d'exécution sur cette machine, vous utilisez ce nouveau script, mais s'il est déjà en cours d'exécution, vous utilisez l'ancien script qui crée le nouvel onglet.
Si cela fonctionne, vous pourrez peut-être effectuer une analyse syntaxique regex de la sortie ps dans un seul script pour voir si FF est déjà en cours d'exécution sur la machine, et utiliser le commutateur -new-tab ou -no-remote, selon ce qu'il trouve; mais vous voudrez probablement attendre que cette méthode soit testée, car c'est une bonne quantité de codage pour quelque chose qui pourrait ne pas fonctionner ...
la source
En regardant XRemoteClient.cpp , je pense que vous devriez faire:
et:
Ensuite, quand vous voulez aller quelque part, faites quelque chose comme
ou bien, je pense que vous pouvez deviner quoi faire sur host2.
De toute évidence, vous pouvez choisir de meilleurs noms. La façon dont vous créez les profils ne devrait pas non plus avoir d'importance. L'important est de spécifier un nom de profil sur la ligne de commande chaque fois que vous l'appelez, où chaque instance a son propre nom de profil.
Cela pourrait même fonctionner .
la source
J'ai une solution assez élégante ici si vous en avez encore besoin. Pour l'instant, j'ai, comme, 5 instances indépendantes de Firefox en cours d'exécution et autant que je veux.
la source