web-dev-qa-db-fra.com

Créez des raccourcis clavier pour déplacer des fenêtres sur différents moniteurs sans Compiz

Je suis sous Ubuntu MATE 16.04 et j'adore le faire. La seule chose dont j'ai besoin est la possibilité de déplacer mes fenêtres sur différents moniteurs à l'aide du clavier.

J'utilise CompizConfig Settings Manager et cela fonctionne, mais Compiz provoque une longue liste de problèmes sur mon système qui disparaissent lorsque je le désactive. Compiz est un gros package et tout ce que je veux, c’est la possibilité de déplacer mes fenêtres sur un autre moniteur. Toutes les autres fonctionnalités sont déjà intégrées dans Ubuntu MATE 16.04 Menu des raccourcis clavier LTS (changement d’espace de travail, déplacement de la fenêtre sur l’espace de travail, mosaïque gauche, droite, horizontale, verticale, etc.).

Déplace la fenêtre du côté est (droite) de l'écran et Déplace la fenêtre du côté ouest (gauche) de l'écran pour une raison quelconque ne fonctionne pas sur toutes les applications (notamment Firefox, mais Chrome et d'autres fonctionnent).

Existe-t-il un guide indiquant comment créer vos propres raccourcis clavier? J'ai trouvé n site où quelqu'un a créé le sien pour Xubuntu. Pendant que j'essaie de comprendre ce qu'ils ont fait, quelqu'un a-t-il une méthode simple pour créer des raccourcis clavier qui déplacent les fenêtres entre les moniteurs?

7
jtlindsey

Introduction

window_jumper.py est un script python qui déplacera la fenêtre active sur plusieurs moniteurs dans un cycle. Par exemple, si vous avez 3 moniteurs A, B et C, une pression répétée sur le raccourci attribué déplacera la fenêtre de A, B, C et de nouveau à A. La fenêtre sera placée dans le coin supérieur gauche de chaque écran. .

Usage

Pour exécuter le script manuellement

python window_jumper.py

Le script n'a pas d'options de ligne de commande (pour le moment, mais le sera peut-être à l'avenir).

Configuration du raccourci clavier

Étapes d'Ubuntu Unity:

  1. Aller à System Settings -> KeyboardShortcuts tab , sélectionnez Custom Shortcuts et cliquez sur + bouton. Un raccourci personnalisé apparaîtra avec deux champs Name: et Command:

  2. Pour le champ Name, appelez-le window_jumper. Pour Command:, indiquez le chemin complet du fichier de script. Par exemple, python /home/ubuntu_user/bin/window_jumper.py. Cliquez sur Apply

  3. Cliquez sur la colonne la plus à droite, les mots New accelerator apparaîtront. Appuyez sur le raccourci clavier que vous souhaitez affecter à ce script. Par exemple, j'ai choisi CtrlSuperJ

Instructions pour Ubuntu Mate:

  1. Aller à SystemControl CenterKeyboard Shortcuts , Cliquez sur Add. Un raccourci personnalisé apparaîtra avec deux champs Name: et Command:

  2. Pour le champ Name, appelez-le window_jumper. Pour Command:, indiquez le chemin complet du fichier de script. Par exemple, python /home/ubuntu_user/bin/window_jumper.py. Cliquez sur Apply

  3. La colonne la plus à droite (intitulée Shortcut) aura les mots Disabled sur la ligne. Cliquez sur les mots, le texte deviendra New shortcut. Appuyez sur la combinaison de touches que vous souhaitez utiliser.

Source du script

Également disponible sous GitHub . Si vous avez un compte GitHub, veuillez soumettre vos problèmes et demandes de fonctionnalités.

#!/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 __== "__main__":
    main()

Notes de côté:

  • Le code peut ou non changer pour inclure des fonctionnalités supplémentaires.
  • Si vous recevez ImportError: No module named gi exécutez Sudo apt install python-gi (Merci Dariusz pour le commentaire )
8
Sergiy Kolodyazhnyy