restaurar janelas do chromium / firefox para a área de trabalho / área de trabalho original

9

Eu tenho uma configuração de três monitores, com dois monitores controlados diretamente pelo Ubuntu 12.04 para uma área de trabalho / área de trabalho total de 3840x1200¹. Normalmente trabalho com 5 áreas de trabalho virtuais, geralmente mais se trabalhar em vários projetos em paralelo. Normalmente, tenho pelo menos 15 janelas do navegador abertas (principalmente o Firefox todas as noites, mas também o padrão 12.04 Firefox e Chrome).

Sempre que os navegadores precisarem reiniciar como resultado de uma atualização (falha cq) ou precisarem iniciar após um logon, as janelas do navegador retornarão às posições originais, mas todas estarão no mesmo espaço de trabalho. Depois disso, tenho que mover tediosamente pelo menos 80% das janelas para outros espaços de trabalho².

Nem o Firefox nem o Chrome salvam as informações EWMH extras necessárias para a restauração no espaço de trabalho original. Eu li relatórios de erros não resolvidos que datam de 4-5 anos atrás sobre isso.

Parece que, pelo menos alguns anos atrás, o KDE gerenciava os espaços de trabalho como compensações grandes (maiores que a largura da tela), o que permitia ao navegador restaurar o espaço de trabalho correto. Mas isso não parece mais ser o caso (deduzido de um relatório de erro, não da experiência pessoal).

Existe um gerente de espaço de trabalho / área de trabalho que não tenha esse comportamento de restaurar tudo para um espaço de trabalho com o Firefox e o Chrome (de preferência no Ubuntu ou Linux Mint)?

Ou existe outra maneira de aprimorar o Firefox e o Chrome (por exemplo, complemento) para impor esse comportamento?

O meu não é um layout fixo, em que o Navegador X na área de trabalho Y sempre é aberto em um URL específico. A função de restauração fornece as janelas, posições e URLs exatamente da maneira que eu quero. Eles "apenas" precisam estar no espaço de trabalho correto.

¹ Um terceiro monitor de 1200x1920 está em uma máquina separada x2vncusada para compartilhar um único mouse e teclado. Isso mantém muito bem meu material de leitura, como páginas de manual e documentação (no modo retrato).
² Todo o material de U&L está no espaço de trabalho 3. Normalmente, deixo a máquina em funcionamento e permaneço conectado por semanas a fio, uma das razões para isso ser a restauração das várias janelas.

Anthon
fonte

Respostas:

6

Parece não haver muita motivação para implementar algum suporte a EWMH no Firefox nem no Chrome, mesmo que isso resolvesse a questão da restauração do espaço de trabalho com um grande número de desktops. Um bug está aberto para o Firefox desde 2007 e um para o Chrome desde 2009.

O que você pode fazer fora do Firefox e Chrome, se as guias ativas em diferentes janelas do navegador apontarem para URLs diferentes, é usar a tendência de que URLs diferentes geralmente tenham títulos diferentes associados às páginas e, portanto, à janela em que são exibidos.

Começando com essa ideia, você pode usar a saída da wmctrl -l -G -pqual fornece

  • id da janela
  • número da área de trabalho
  • identificação do processo
  • posição x, y da janela
  • largura e altura da janela
  • nome da maquina
  • título da janela (se houver)

para cada janela. Dada uma identificação de processo PID, você pode ver para onde o link /proc/PID/exeaponta e filtrar as janelas que não são do navegador. Para as janelas relacionadas ao navegador, salve pelo menos o título da janela e o número da área de trabalho (possível também o tipo de navegador e todas as outras informações).

Após a reinicialização do navegador, quando todas as janelas forem restauradas, mas ativadas em um espaço de trabalho, use os dados salvos para procurar o novo ID da janela, WID, associado a um título específico e enviá-lo para o espaço de trabalho relacionado recuperado wmctrl -i -r WID -t workspacenumber.


Se você não quiser implementar o que foi mencionado acima (na maioria das vezes, é um processamento de texto e uma pesquisa de link simbólico) na sua linguagem de shell ou de script preferida, você pode baixar um programa que faz tudo isso para você (e um pouco mais). Ou você pode instalá-lo a partir do PyPI usando:

sudo pip install ruamel.bws

após o qual o bwscomando deve estar disponível com opções para save(várias gravações são mantidas, 10 por padrão), list(mostra as datas salvas com o número de janelas salvas) ou restore(por padrão, as últimas informações salvas).

Anthon
fonte
O Firefox 75 inclui a API necessária para isso com várias ressalvas hg.mozilla.org/integration/autoland/rev/323e2a212629
Braiam