Localizando informações da sessão sobre o Firefox

5

Atualmente, estou desenvolvendo um software cuja funcionalidade depende de saber o estado atual da sessão do Firefox em execução no computador Ubuntu do usuário. As informações necessárias para saber o seguinte:

  • Quantos Windows estão abertos?
  • Quantas guias existem em cada janela?
  • Qual é o URL atualmente aberto em cada guia?
  • Até que ponto cada aba tem o usuário rolado?

Ao receber um comando explícito do usuário, o aplicativo procurará essas informações de onde elas residirem no sistema. O problema é que não tenho idéia de onde devo programar o aplicativo para procurar isso. Meu primeiro palpite foi que a inspeção dos processos do Firefox no kernel produziria as informações desejadas, mas usei o monitor do sistema para observar processos adicionais sendo iniciados quando mais janelas e guias são abertas, mas o único processo do Firefox mencionado é 'firefox-bin', levando-me a concluir que esta suposição é incorreta.

Estou preparado para fazer algumas leituras significativas, se alguém puder me apontar na direção certa, é que meu tempo é limitado e não posso me dar ao luxo de começar a bisbilhotar dentro do kernel na esperança de me deparar o que estou procurando.

Alguém sabe como posso encontrar as informações acima sem recorrer à instalação de um plugin no Firefox que o exporte?

    
por Chris Wilson 12.05.2011 / 13:05

2 respostas

3

Que tal você ler /home/*/.mozilla/firefox/*/sessionstore.js ?

    
por 12.05.2011 / 14:38
3

Você não encontrará nenhuma informação no kernel, você deve perguntar ao processo do firefox. (Há apenas um. O Firefox usa vários encadeamentos, mas um único processo.) Guias, URLs e rolagem em uma página são conceitos puramente internos ao navegador.

O Firefox tem uma interface remota que permite executar alguns comandos a partir de um prompt do shell.

firefox -remote 'openurl(http://www.example.com/, new-tab)'

Eu não sei se existem outras funções não documentadas que você pode usar através da interface remota. Uma ideia completamente não testada é abrir um script Javascript ( file:// ) local para reunir informações, mas o script pode não ter as permissões necessárias.

Você também pode carregar o chrome em um processo em execução: firefox -chrome file://… . Novamente, não sei quais recursos isso oferece.

Uma coisa que você pode saber de fora do Firefox são as janelas e seus títulos:

wmctrl -xl | 
awk '$3 == "Navigator.Firefox"
     {sub(/^([^ ]+ +)([^ ]+ +)([^ ]+ +)([^ ]+ +)/,""); print}'
    
por 12.05.2011 / 14:11