Programaticamente mova a janela para viewport no compiz

1

Pergunta

Usando uma linguagem de script shell, python ou qualquer outra coisa, como posso mover uma janela de uma viewport para outra?

Embora eu seja bastante desesperado, prefiro que a solução funcione em segundo plano. Como em, não activate window 1, move window 1, active window 2, move window 2, ... , enquanto eu tenho que sentar e esperar que tudo isso aconteça. (Vou me referir a isso como o problema de ativação lenta.)

Eu até aprecio referências a onde mais eu deveria fazer essa pergunta, como fóruns de pessoas com conhecimento sobre Linux e gerenciadores de janelas.

Ambiente

Estou usando o Gnome Flashback com o Compiz (não o Unity ou o Metacity). Eu estou no Ubuntu 14.04, mas espero que as soluções funcionem em outras versões como pretendo atualizar.

O que eu tentei

Apenas coisas de linha de comando com programas existentes.

wmctrl

Primeiro, wmctrl não funciona aparentemente com compiz. Aqui está o que eu recebo com wmctrl -d :

$ wmctrl -d
0  * DG: N/A  VP: N/A  WA: N/A  N/A

wmctrl -l não é completamente inútil, mas não mostra todas as janelas. Por exemplo, eu corri apenas agora e ele relatou 8 janelas do Chrome, mas eu sei que tenho pelo menos 21. Slack está aberto, mas não está na lista de janelas.

plugin compiz-dbus

Eu usei o plug-in compiz-dbus com o put plugin, e tentei usar ./compiz-send.py put put_viewport_1_key , mas isso tem vários problemas:

  1. Funciona apenas com a janela ativa, portanto, fornece o problema de "ativação lenta" mencionado acima. E presumindo que eu poderia usar outra ferramenta para encontrar uma janela por título e ativá-la.
  2. É um buggy para janelas maximizadas, que são 95% das minhas janelas. Para mim, às vezes é possível mover a janela de visualização da janela, mas sempre colocá-la no monitor do meio, mesmo que tenha começado no monitor direito. Outras vezes, ele moverá a viewport e depois a moverá de volta! (e ainda colocá-lo no monitor do meio). Obviamente isso não é bom.

História de fundo

Eu odeio reiniciar meu computador, porque todas as janelas começam em uma única viewport, e levo vários minutos para mover todas as minhas janelas de volta para as viewports em que estavam anteriormente. Por exemplo, eu terei várias janelas do Chrome na viewport 1, várias na janela de visualização 2 etc. Isso é muito movimento de janelas, toda vez que eu reinicio meu computador.

Muitas vezes, não reinicio meu computador por períodos prolongados devido a esse problema, que é ruim para correções de segurança, etc. Por que tenho tantas janelas abertas? Sou empreiteiro e trabalho em vários projetos simultaneamente, cada um com suas próprias preocupações, exigindo pesquisa na web, escrita de código, material de linha de comando, etc. Tenho 32 GB de RAM e muitas janelas não são um problema de desempenho.

Geralmente, as janelas são fáceis de identificar por título, onde eu gostaria que elas fossem. Por exemplo, eu sempre quero que o "Gmail - Google Chrome" esteja na viewport 1.

    
por Tyler Collier 25.06.2017 / 21:37

2 respostas

1

Também é possível usar o plug-in Place Windows no Gerenciador de Configurações CompizConfig para que os programas sempre abram em uma determinada janela de visualização. O plug-in Lugar do Windows pode ser encontrado na categoria Gerenciamento da janela .

Uma vez dentro do plug-in Lugar do Windows , vá para a guia Colocação da janela fixa na parte superior. Na parte inferior, você verá o Windows com viewport fixo . Clique no botão Novo para adicionar um novo programa. Em seguida, clique no sinal de mais verde para configurar quais janelas devem ser posicionadas. Use um tipo de classe de janelas . Use o botão Agarrar para obter as informações de uma janela aberta do tipo que você deseja posicionar quando iniciado. Você também precisará definir o local da viewport horizontal e vertical onde deseja que o programa seja posicionado na inicialização.

Esta informação é de um artigo webupd8.org intitulado . Há também um link para um screencast no Youtube que passa por essas etapas nessa página.

    
por frederickjh 26.07.2017 / 20:52
0

Veja esta resposta para a questão " Salvar a sessão Unity Desktop ". O respondido fornece um link para um script, ~ / session.config que ajuda você a configurar um script, ~ / .sessionconfig com a inicialização automática do arquivo da área de trabalho, ~ / .config / autostart / sessionconf.desktop .

Eu tenho usado esse script há algum tempo. A única pegadinha é que ela usa as dimensões de exibição física padrão. Isso significa que, se você conectar um adaptador de monitor externo ao seu laptop com dimensões diferentes, os programas não serão colocados na viewport desejada.

    
por frederickjh 26.07.2017 / 20:48