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:
-
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 camposName:
eCommand:
-
Para o campo
Name
, chame-o dewindow_jumper
. PorCommand:
fornecer caminho completo para o arquivo de script. Por exemplo,python /home/ubuntu_user/bin/window_jumper.py
. Clique em Aplicar -
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:
-
Vá para Sistema Centro de Controle Atalhos de teclado , clique em Adicionar . O pop-up de atalho personalizado será exibido com dois campos
Name:
eCommand:
-
Para o campo
Name
, chame-o dewindow_jumper
. PorCommand:
fornecer caminho completo para o arquivo de script. Por exemplo,python /home/ubuntu_user/bin/window_jumper.py
. Clique em Aplicar -
A coluna mais à direita (rotulada
Shortcut
) terá palavrasDisabled
na linha. Clique nas palavras, o texto mudará paraNew 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()