Eu tenho duas janelas, A e B. É possível, de alguma forma, vincular duas janelas, de forma que a mudança para A também aumenta B ou a mudança para B também aumenta A?
Entendo que o uso de vários espaços de trabalho é uma opção alternativa, mas queria saber se isso também é possível?
command-line
scripts
shortcut-keys
window-manager
window
Simon Tong
fonte
fonte
Respostas:
Introdução
O script a seguir permite selecionar duas janelas e, enquanto as duas estiverem abertas, ele aumentará as duas janelas quando o usuário focalizar uma delas. Por exemplo, se alguém vincula as viúvas A e B, passar para A ou B fará com que ambos se elevem acima das outras viúvas.
Para interromper o script, você pode usar
killall link_windows.py
no terminal ou fechar e reabrir uma das janelas. Você também pode cancelar a execução pressionando o botão Fechar Xem qualquer uma das caixas de diálogo pop-up de seleção de janela.Potenciais ajustes:
Uso
Execute o script como:
O script é compatível com o Python 3, portanto, também pode ser executado como
Existem duas opções de linha de comando:
--quiet
ou-q
, permite silenciar as janelas da GUI. Com esta opção, você pode simplesmente clicar com o mouse em duas janelas, e o script começará a vinculá-las.--help
ou-h
, imprime as informações de uso e descrição.A
-h
opção produz as seguintes informações:Informações técnicas adicionais podem ser visualizadas via
pydoc ./link_windows.py
, onde./
significa que você deve estar no mesmo diretório que o script.Processo de uso simples para duas janelas:
Um pop-up aparecerá pedindo para você selecionar uma janela nº 1, pressionar OKou pressionar Enter. O ponteiro do mouse se transformará em uma cruz. Clique em uma das janelas que você deseja vincular.
Um segundo pop-up será exibido, solicitando que você selecione a janela nº 2, pressione OKou aperte Enter. Novamente, o ponteiro do mouse se transformará em uma cruz. Clique na outra janela que você deseja vincular. Depois que a execução começará.
Sempre que você focalizar uma das janelas, o script aumentará a outra janela, mas retornará o foco para a selecionada originalmente (observe - com um atraso de um quarto de segundo para obter o melhor desempenho), criando a sensação de que as janelas estão ligadas.
Se você selecionar a mesma janela as duas vezes, o script será encerrado. Se a qualquer momento você clicar no botão Fechar da caixa de diálogo pop-up, o script será encerrado.
Origem do script
Também disponível como GitHub Gist
Notas:
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Elas podem ser ignoradas.fonte
time.sleep
intervalo entre a troca, eu sou capaz de colocar isso em zero? existe uma razão para o atraso?# time.sleep(0.25)
e ela não será executada. A razão para isso é garantir que cada janela seja levantada corretamente. Na minha experiência no passado, eu precisava ter atrasos para operar no Windows. Eu acho que o atraso de um quarto de segundo não é tanto assim. Na verdade, deixe-me adicionar apenas mais uma linha ao script, que pode acelerar. OK ?Aumente um número arbitrário de janelas como uma
A solução abaixo permitirá que você escolha qualquer combinação de duas, três ou mais janelas a serem combinadas e elevadas como uma só com um atalho de teclado.
O script faz seu trabalho com três argumentos:
para adicionar a janela ativa ao grupo
aumentar o grupo definido
para limpar o grupo, pronto para definir um novo grupo
O script
Como usar
O script precisa
wmctrl
exdotool
:groupwindows.py
Teste - execute o script: abra duas janelas de terminal, execute o comando:
em ambos. Cubra-os com outras janelas (ou minimize-os). Abra uma terceira janela do terminal, execute o comando:
As duas primeiras janelas serão levantadas como uma.
Se tudo funcionar bem, crie três teclas de atalho personalizadas: Escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione os comandos abaixo a três atalhos separados:
no meu sistema, eu usei:
Alt+ A, executando o comando:
... para adicionar uma janela ao grupo.
Alt+ R, executando o comando:
... para criar o grupo.
Alt+ C, executando o comando:
... para limpar o grupo
Explicação
O script funciona de maneira bem simples:
add
, o script armazena / adiciona o ID da janela da janela ativa em um arquivo oculto~/.windowlist
Quando executado com o argumento
raise
, o script lê o arquivo, eleva as janelas da lista com o comando:clear
, o script remove o arquivo oculto~/.windowlist
.Notas
Mais flexibilidade?
Como mencionado, o script acima permite adicionar janelas a qualquer momento às janelas agrupadas. A versão abaixo também permite remover qualquer uma das janelas (a qualquer momento) da lista agrupada:
O argumento adicional para executar o script é
delete
:exclui a janela ativa das janelas agrupadas. Para executar este comando, no meu sistema, defino Alt+ Dcomo um atalho.
fonte