Crie atalhos de teclado para mover janelas para diferentes monitores sem o Compiz

7

Eu estou rodando o Ubuntu MATE 16.04 e eu adoro o produto imediatamente. A única coisa que preciso é a capacidade de mover minhas janelas para diferentes monitores usando o teclado.

Eu tenho usado Configurações do CompizConfig Manager e funciona, mas o Compiz faz com que uma longa lista de problemas no meu sistema desapareça quando eu desabilitá-lo. Compiz é um pacote grande e tudo que eu quero é a capacidade de mover minhas janelas para um monitor diferente. Todos os outros recursos já estão embutidos no menu de atalhos de teclado do Ubuntu MATE 16.04 LTS (áreas de trabalho de comutação, mover janela para o espaço de trabalho, lado esquerdo, direito, horizontal, vertical, etc).

Mover a janela para o lado leste (direita) da tela e Mover a janela para oeste (esquerda) da tela por algum motivo não funciona em todos os aplicativos (principalmente o Firefox, mas o Chrome e outros funcionam).

Existe um guia que mostra como criar seus próprios atalhos de teclado? Eu encontrei um site onde alguém fez o seu próprio para o Xubuntu. Enquanto eu estou tentando descobrir o que eles fizeram, alguém tem um método simples para criar atalhos de teclado que movem janelas entre monitores?

    
por jtlindsey 28.07.2016 / 23:44

1 resposta

8

Introdução

window_jumper.py é um script python que moverá a janela ativa em vários monitores em ciclo. Por exemplo, se você tiver 3 monitores A, B e C, pressionar a tecla repetida do atalho atribuído moverá a janela de A, para B, para C e de volta para A. O posicionamento da janela será o canto superior esquerdo de cada tela .

Uso

Para executar o script manualmente

python window_jumper.py

O script não tem opções de linha de comando (a partir de agora, mas pode no futuro).

Configurando o atalho de teclado

Passos do Ubuntu Unity:

  1. Vá para Configurações do sistema - > Teclado Aba de atalhos , selecione Custom Shortcuts e clique no botão + . O pop-up de atalho personalizado será exibido com dois campos Name: e Command:

  2. Para o campo Name , chame-o de window_jumper . Por Command: fornecer caminho completo para o arquivo de script. Por exemplo, python /home/ubuntu_user/bin/window_jumper.py . Clique em Aplicar

  3. Clique na coluna mais à direita, as palavras New accelerator aparecerão. Pressione o atalho de teclado que você deseja designar para este script. Por exemplo, eu escolhi Ctrl Super J

Instruções do Ubuntu Mate:

  1. Vá para Sistema Centro de Controle Atalhos de teclado , clique em Adicionar . O pop-up de atalho personalizado será exibido com dois campos Name: e Command:

  2. Para o campo Name , chame-o de window_jumper . Por Command: fornecer caminho completo para o arquivo de script. Por exemplo, python /home/ubuntu_user/bin/window_jumper.py . Clique em Aplicar

  3. A coluna mais à direita (rotulada Shortcut ) terá palavras Disabled na linha. Clique nas palavras, o texto mudará para New shortcut . Pressione a combinação de teclas que você deseja usar.

Fonte de script

Também disponível como no GitHub . Se você tiver uma conta do GitHub, envie questões e solicitações de recursos para lá.

#!/usr/bin/env python
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import GdkX11, Gdk, Gtk


def main():

    DEBUG = False

    screen = GdkX11.X11Screen.get_default()
    monitors = []
    for monitor in range(screen.get_n_monitors()):
        monitors.append(
            [screen.get_monitor_geometry(monitor).x,
             screen.get_monitor_geometry(monitor).y])

    if DEBUG:
        print monitors

    active_window = screen.get_active_window()
    active_window_location = screen.get_monitor_at_window(active_window)

    new_location = None
    new_location = active_window_location + 1
    if active_window_location + 1 >= monitors.__len__():
        new_location = 0
    new_screen = monitors[new_location]
    if DEBUG:
        print new_screen

    active_window.move(new_screen[0], new_screen[1])
    screen.get_active_window()
    # TODO: add resizing window routine in cases where
    # a window is larger than the size of the screen
    # to which we're moving it.

if __name__ == "__main__":
    main()

Notas laterais:

  • O código pode ou não ser alterado para incluir recursos adicionais.
  • Caso você receba ImportError: No module named gi run sudo apt install python-gi (Obrigado Dariusz para o comment )
por Sergiy Kolodyazhnyy 30.07.2016 / 08:47