Firefox, duas máquinas Linux, um X-server

10

Eu tenho uma máquina Linux na qual faço logon regularmente via ssh (putty) do Windows. Estou executando o VcXsrv X-server na minha área de trabalho do Windows. Eu principalmente uso isso para executar um depurador (ddd) e firefox para acessar nosso sistema de revisão de código baseado na web. É conveniente usar o firefox do Linux para que eu possa iniciá-lo a partir de um script. Eu normalmente lanço isso com "-new-tab" para não continuar criando novas janelas.

Agora eu tenho uma nova atualização da máquina Linux que estou correndo ao lado da antiga por enquanto. O que eu notei é um comportamento estranho: quando eu inicio uma nova sessão do Firefox se já existe um em qualquer uma das máquinas, então ele usa isso.

O que eu gostaria de poder fazer é lançar como uma nova aba, mas somente sob a instância do firefox da máquina atual, não uma instância de uma máquina diferente que esteja exibindo no mesmo servidor X. .

Eu tenho jogado com várias bandeiras, incluindo -no-remote, -new-instance e também definindo e usando perfis específicos. No entanto, não consegui obter o resultado desejado. Ou eu recebo o comportamento que descrevi acima, ou recebo um erro dizendo algo como "O Firefox já está em execução, mas não está respondendo, por favor, feche-o".

EDIT: Fui convidado para editar isso para fornecer alguns exemplos.

OK. No que segue, vou me referir a M_OLD e M_NEW. Estas são máquinas separadas que executam diferentes versões do Linux com diferentes versões do Firefox (1.5 e 19). Eu me conecto a eles através de um cliente ssh chamado Putty e estou encaminhando X para um servidor X na minha área de trabalho do Windows. Há apenas um servidor X envolvido.

Exemplo 1:

Então, da minha sessão de putty para M_OLD eu corro:

firefox www.google.com &

e da minha sessão putty M_NEW eu corro:

firefox www.imdb.com &

então eu recebo uma janela do firefox 1.5 com duas guias. Se eu fizer o mesmo na ordem inversa, obtenho o mesmo resultado, mas com o firefox 19. Em outras palavras, como descrito em um comentário abaixo, o primeiro comando inicia uma instância do firefox e o segundo simplesmente diz à instância existente para abrir uma nova guia. Mesmo se a instância estiver em outra máquina, desde que seja o mesmo servidor X.

No entanto, eu não quero isso. Eu quero ter instâncias separadas para máquinas separadas. Então:

Exemplo 2:

Então, da minha sessão de putty para M_OLD eu corro:

firefox -no-remote www.google.com &

e da minha sessão putty M_NEW eu corro:

firefox -no-remote www.imdb.com &

Agora tenho duas instâncias separadas do firefox. No entanto, se eu correr em M_NEW:

firefox -no-remote www.google.com &

Eu vou pegar

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 mesmo se eu tentar

firefox -no-remote -new-instance www.google.com &

ou apenas

firefox -new-instance www.google.com &

então ainda receberei o erro.

O que eu realmente quero - e talvez não seja possível - é ter uma instância separada para cada máquina, mas se uma nova URL for lançada dessa máquina, ela abrirá uma nova guia. Parece que só posso ter uma instância com novas guias para cada URL ou uma instância por máquina, mas apenas uma por vez.

Espero que seja mais claro.

    
por PaulM 07.11.2013 / 12:31

4 respostas

1

Instâncias distintas do Firefox (por exemplo, criadas com --no-remote ) devem ter perfis separados.

Opção 1: Crie dois (ou mais) perfis, um para cada sistema executando o Firefox. Exemplo

firefox --no-remote -CreateProfile localuser
firefox --no-remote -CreateProfile host2

Agora inicie o firefox e selecione um perfil na inicialização

firefox --no-remote -P localuser

ou

firefox --no-remote -P host1

Opção 2: Configure uma solução dinâmica para criar um perfil "descartável" na inicialização, por exemplo, um scrupt ao longo das linhas de:

TEMPPROFILE=$(date +%Y%m%d%H%M%S)
firefox --no-remote -CreateProfile $TEMPPROFILE 2>/tmp/.mozprofile.$TEMPPROFILE
firefox --no-remote -P $TEMPPROFILE

Você pode querer adicionar etapas para remover o perfil temporário depois (O diretório a ser removido pode ser encontrado analisando a saída do comando CreateProfile, armazenado por meio do comando acima em /tmp/.mozprofile.$TEMPPROFILE

    
por 13.01.2014 / 12:52
0

Ok ... não sei se isso funcionará, mas é a primeira coisa que eu tentaria:

Que tal se você criar um segundo script em cada máquina, que não tente criar a nova guia, apenas uma nova instância. Se você não tem o FF atualmente em execução nessa máquina, você usa esse novo script, mas se ele já estiver em execução, use o script antigo que cria a nova guia.

Se isso funcionar, você poderá fazer uma análise regular da saída do ps em um único script para ver se o FF já está em execução na máquina e usar o switch -new-tab ou -no-remote, dependendo no que encontra; mas você provavelmente vai querer esperar até que este método seja testado, já que é uma quantidade razoável de código para algo que pode não funcionar ...

    
por 31.12.2013 / 22:17
0

Analisando XRemoteClient.cpp , acho que você deve fazer:

user@host1$ firefox -CreateProfile profile1

e:

user@host2$ firefox -CreateProfile profile2

Então, quando você quiser ir a algum lugar, faça algo como

user@host1$ firefox -P profile1 -new-tab http://example.com

ou, bem, acho que você pode adivinhar o que fazer no host2.

Obviamente, você pode escolher nomes melhores. Também não importa muito como você cria os perfis. O importante é especificar um nome de perfil na linha de comando toda vez que você invocá-lo, onde cada instância tem seu próprio nome de perfil.

Isso pode até mesmo funcionar .

    
por 21.01.2014 / 02:07
0

Eu tenho uma solução bastante elegante aqui se você ainda precisar. Por enquanto eu tenho, como, 5 instâncias independentes do firefox rodando e tanto quanto eu quero.

    
por 22.10.2014 / 05:57