En utilisant Ubuntu 14.04, je cherche à obtenir un écran 40 "4k et j'ai trouvé comment redimensionner les fenêtres jusqu'aux quarts de section de l'écran, mais j'aimerais pouvoir les redimensionner davantage si vous le souhaitez. Par exemple, je voudrais pour associer la compiz par défaut pour prendre une fenêtre plein écran et la placer dans le quart supérieur gauche de l'écran, mais si vous appuyez à nouveau, réduisez-la davantage au huitième supérieur gauche de l'écran, ou pour placer la fenêtre dans le quart inférieur droit du quart supérieur de l'écran (occupant un huitième verticalement et horizontalement de l'écran). Cette fonctionnalité est-elle cachée dans compiz ou toute autre application que je ne connais pas?
Le script ci-dessous peut être utilisé comme une fonctionnalité supplémentaire à l'option "redimensionner au trimestre" dans 14.04. Il peut être exécuté avec les arguments: "gauche", "droite", "haut", "bas", pour réduire encore le quart en huit.
Si vous avez déplacé votre fenêtre au quart de votre écran:
le script coupera la fenêtre en deux, soit la gauche, la droite, la moitié supérieure ou inférieure, selon l'argument avec lequel vous l'exécutez (voir ci-dessous).
Le script utilise wmctrl
, qui n'est pas par défaut sur votre système:
Sudo apt-get install wmctrl
Copiez le script ci-dessous dans un fichier vide, enregistrez-le sous organize_w
dans le répertoire ~/bin
. Rendez le script exécutable. Vous devrez probablement encore créer le répertoire ~/bin
. Il a l'avantage que vous pouvez exécuter le script uniquement par son nom:
Ajoutez quatre commandes aux raccourcis clavier personnalisés. Ouvrez les paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Ajoutez quatre commandes aux combinaisons de touches.
Sur mon système, j'ai trouvé quatre raccourcis extrêmement adaptés encore disponibles: je suggérerais d'ajouter les commandes sous ces combinaisons de touches:
organize_w left
Shift+Ctrl+ Pavé numérique <
effet:
organize_w right
Shift+Ctrl+ Pavé numérique >
effet:
organize_w up
Shift+Ctrl+ Pavé numérique ^
effet:
organize_w down
Shift+Ctrl + Pavé numérique v
effet:
De cette façon, vous pouvez organiser les fenêtres comme ci-dessous en quelques touches:
#!/usr/bin/env python3
import subprocess
import sys
arg = sys.argv[1]
WA_correction = 28
def get(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8")
def execute(command):
subprocess.Popen(["/bin/bash", "-c", command])
xprop_data = get("xprop -root").split()
w_id = xprop_data[xprop_data.index("_NET_ACTIVE_WINDOW(WINDOW):")+4].replace(",", "")
frontmost = w_id[:2]+"0"+w_id[2:]
w_data = [l for l in get("wmctrl -lG").splitlines() if frontmost in l][0].split()
new_G = w_data[2:6]
new_G[1] = str(int(int(new_G[1])-WA_correction))
xy_corr = lambda x: -10 if int(x) < 100 else 0
if arg == "left":
new_G[2] = str(int(int(new_G[2])/2 + xy_corr(new_G[0])))
new_G[3] = str(int(int(new_G[3]) + xy_corr(new_G[1])))
Elif arg == "right":
new_G[0] = str(int(int(new_G[0])+int(new_G[2])/2))
new_G[2] = str(int(int(new_G[2])/2))
new_G[3] = str(int(int(new_G[3]) + xy_corr(new_G[1])))
Elif arg == "up":
new_G[2] = str(int(new_G[2]) + xy_corr(new_G[0]))
new_G[3] = str(int(int(new_G[3])/2 + xy_corr(new_G[1])))
Elif arg == "down":
new_G[1] = str(int(int(new_G[1]) + int(new_G[3])/2))
new_G[2] = str(int(new_G[2]) + xy_corr(new_G[0]))
new_G[3] = str(int(int(new_G[3])/2))
execute("wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz")
execute("wmctrl -ir "+frontmost+" -e 0,"+(",").join(new_G))
modifier:
Avec quelques modifications mineures, le script peut également être utilisé pour redimensionner les fenêtres en demi/quart ou huit sur XFCE (testé le 14.04).
Utilisez-le exactement comme la version pour Unity:
#!/usr/bin/env python3
import subprocess
import sys
arg = sys.argv[1]
WA_correction = 48
def get(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8")
def execute(command):
subprocess.Popen(["/bin/bash", "-c", command])
xprop_data = get("xprop -root").split()
w_id = xprop_data[xprop_data.index("_NET_ACTIVE_WINDOW(WINDOW):")+4].replace(",", "")
frontmost = w_id[:2]+"0"+w_id[2:]
w_data = [l for l in get("wmctrl -lG").splitlines() if frontmost in l][0].split()
new_G = w_data[2:6]
new_G[1] = str(int(int(new_G[1])-WA_correction))
if arg == "left":
new_G[2] = str(int(int(new_G[2])/2))
Elif arg == "right":
new_G[0] = str(int(int(new_G[0])+int(new_G[2])/2))
new_G[2] = str(int(int(new_G[2])/2))
Elif arg == "up":
new_G[3] = str(int(int(new_G[3])/2))
Elif arg == "down":
new_G[1] = str(int(int(new_G[1]) + int(new_G[3])/2))
new_G[3] = str(int(int(new_G[3])/2))
execute("wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz")
execute("wmctrl -ir "+frontmost+" -e 0,"+(",").join(new_G))
(La version XFCE a également été publiée sur Gist.gisthub )