Tengo una máquina Linux a la que inicio sesión regularmente a través de ssh (masilla) desde Windows. Estoy ejecutando VcXsrv X-server en mi escritorio de Windows. Principalmente uso esto para ejecutar un depurador (ddd) y firefox para acceder a nuestro sistema de revisión de código basado en la web. Es conveniente utilizar Linux Firefox para poder iniciarlo desde un script. Normalmente ejecuto esto con "-new-tab" para no seguir creando nuevas ventanas.
Ahora tengo una nueva máquina Linux de actualización que estoy ejecutando junto a la anterior por el momento. Lo que he notado es un comportamiento extraño: cuando inicio una nueva sesión de Firefox si ya hay una en ejecución en cualquiera de las máquinas, entonces la usa.
Lo que me gustaría poder hacer es iniciar como una nueva pestaña, pero solo bajo la instancia de Firefox de la máquina actual, no una instancia de una máquina diferente que se muestra en el mismo servidor X.
He estado jugando con varias banderas, incluyendo -no-remote, -new-instance y también definiendo y usando perfiles específicos. Sin embargo, no he podido obtener el resultado deseado. O aparece el comportamiento que describí anteriormente, o aparece un error que dice algo como "Firefox ya se está ejecutando pero no responde, ciérrelo".
EDITAR: Me han pedido que edite esto para proporcionar algunos ejemplos.
OKAY. En lo que sigue me referiré a M_OLD y M_NEW. Estas son máquinas separadas que ejecutan diferentes versiones de Linux con diferentes versiones de Firefox (1.5 y 19). Me conecto a ambos a través de un cliente ssh llamado Putty y reenvío X a un servidor X en mi escritorio de Windows. Solo hay un servidor X involucrado.
Ejemplo 1:
Entonces, desde mi sesión de masilla hasta M_OLD, ejecuto:
firefox www.google.com &
y desde mi sesión de masilla M_NEW ejecuto:
firefox www.imdb.com &
entonces obtengo una ventana de Firefox 1.5 con dos pestañas. Si hago lo mismo a la inversa, obtengo el mismo resultado pero con firefox 19. En otras palabras, como se describe en un comentario a continuación, el primer comando lanza una instancia de firefox, el segundo simplemente le dice a la instancia existente que abra una nueva pestaña. Incluso si la instancia está en otra máquina, siempre que sea el mismo servidor X.
Sin embargo, no quiero esto. Quiero tener instancias separadas para máquinas separadas. Entonces:
Ejemplo 2
Entonces, desde mi sesión de masilla hasta M_OLD, ejecuto:
firefox -no-remote www.google.com &
y desde mi sesión de masilla M_NEW ejecuto:
firefox -no-remote www.imdb.com &
Ahora tengo dos instancias separadas de firefox. Sin embargo, si ejecuto en M_NEW:
firefox -no-remote www.google.com &
Lo tendré
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.
e incluso si lo intento
firefox -no-remote -new-instance www.google.com &
o solo
firefox -new-instance www.google.com &
entonces aún tendré el error.
Lo que realmente quiero, y puede que no sea posible, es tener una instancia separada para cada máquina, pero si se inicia una nueva URL desde esa máquina, se abre una nueva pestaña. Parece que solo puedo tener una instancia con nuevas pestañas para cada URL, o una instancia por máquina, pero solo una a la vez.
Esperemos que sea más claro.
ssh -X
correcta?--no-remote
. ¿Podrías editar tu pregunta y decirnos cuándo recibes el mensaje "Firefox ya se está ejecutando"? La ejecuciónfirefox -no-remote
debería iniciar una nueva instancia de Firefox que se ejecute en la máquina remota pero se muestre en su servidor X local.-p -no-remote
. Esto permite comenzar con un nuevo perfil Fx. Ver las opciones de la línea de comando . Para conectarse al proceso Fx existente, puede probarfirefox https://www.mozilla.org
ofirefox -remote "openURL(https://www.mozilla.org, new-tab)"
Respuestas:
Las distintas instancias de Firefox (por ejemplo, creadas con
--no-remote
) deben tener perfiles separados.Opción 1: cree dos (o más) perfiles, uno para cada sistema que ejecute Firefox. Ejemplo
Ahora inicie firefox y seleccione un perfil al inicio
o
Opción 2: configurar una solución dinámica para crear un perfil "desechable" en el inicio, por ejemplo, un escrutinio a lo largo de las líneas de:
Es posible que desee agregar pasos para eliminar el perfil temporal después (el directorio para eliminar se puede encontrar analizando el resultado del comando CreateProfile, almacenado a través del comando anterior en /tmp/.mozprofile.$TEMPPROFILE
fuente
-no-remote
...Ok ... no sé si esto funcionará, pero es lo primero que probaría:
¿Qué tal si crea un segundo script en cada máquina, que no intenta crear la nueva pestaña, solo una nueva instancia? Si no tiene FF ejecutándose actualmente en esa máquina, utiliza este nuevo script, pero si ya se está ejecutando, utiliza el antiguo script que crea la nueva pestaña.
Si esto funciona, es posible que pueda realizar un análisis de expresiones regulares de la salida ps en un solo script para ver si FF ya se está ejecutando en la máquina, y usar el interruptor -new-tab o -no-remote, dependiendo de qué encuentra; pero probablemente desee esperar hasta que se pruebe este método, ya que es una buena cantidad de codificación para algo que podría no funcionar ...
fuente
Mirando XRemoteClient.cpp , creo que deberías hacer:
y:
Luego, cuando quieras ir a algún lado, haz algo como
o bien, creo que puedes adivinar qué hacer en host2.
Obviamente, puedes elegir mejores nombres. Tampoco debería importar mucho cómo se crean los perfiles. Lo importante es especificar un nombre de perfil en la línea de comando cada vez que lo invoque, donde cada instancia tiene su propio nombre de perfil.
Esto incluso podría funcionar .
fuente
Tengo una solución bastante elegante aquí si todavía la necesitas. Por ahora tengo, como, 5 instancias independientes de Firefox ejecutándose y todo lo que quiero.
fuente