web-dev-qa-db-fra.com

Aero-snap plus proche dans Ubuntu

Avant de me faire crier dessus pour avoir dupliqué une question. J'ai lu la fenêtre d'accrochage semblable à Windows 7 maximise et la fonctionnalité verticale et http://www.omgubuntu.co.uk/2009/11/get-aero-snap-in-ubuntu/

Il y a deux problèmes avec cette solution que j'essaie de contourner.

  1. Il n'est pas sensible au glissement d'une fenêtre
  2. Ce n'est pas intelligent pour les moniteurs à double vue.

Le premier problème est le plus urgent. J'ai les paramètres compiz avec wmctrl, mais cela n'est pas sensible au glissement des fenêtres si j'ai une fenêtre avec le focus et place ma souris dans le panneau J'obtiens la fenêtre agrandie, même si je ne fais pas glisser la fenêtre. Une bonne solution serait sensible à l'état de la souris, cliqué, cliqué avec le bouton droit, cliqué au milieu. Une solution idéale serait sensible au glissement d'une fenêtre ou non.

La seconde est au moins une gêne mineure pour moi. Avec les commandes telles qu'elles sont répertoriées, cela revient à maximiser les fenêtres car j'ai une configuration de moniteurs Twinview.

Existe-t-il un moyen d'ajouter ces sensibilités aux commandes?

4
Andrew Redd

Après avoir manipulé les choses pendant un certain temps, nous avons obtenu une solution qui fonctionne avec les gènes de souris, en suivant la suggestion de cet article .

J'ai créé deux scripts, un pour l'ancrage à gauche et un pour l'ancrage à droite.

dockleft:

#! /usr/bin/env bash
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x' `
HALF=$(($WIDTH/2))
QUARTER=$(($WIDTH/4)) 
winid=`xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+`
x=`xwininfo -id $winid | grep "Absolute upper-left X" | cut -f 2 -d ':'`
y=`xwininfo -id $winid | grep "Absolute upper-left Y" | cut -f 2 -d ':'`

if [ $x -lt $HALF ]; then
  wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$QUARTER,-1
else
  wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$QUARTER,-1
fi

dockright:

#! /usr/bin/env bash
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x' `
HALF=$(($WIDTH/2))
QUARTER=$(($WIDTH/4)) 
THREEQUARTERS=$(($WIDTH*3/4))
winid=`xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+`
x=`xwininfo -id $winid | grep "Absolute upper-left X" | cut -f 2 -d ':'`
y=`xwininfo -id $winid | grep "Absolute upper-left Y" | cut -f 2 -d ':'`

if [ $x -lt $HALF ]; then
  wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$QUARTER,0,$QUARTER,-1
else
  wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$THREEQUARTERS,0,$QUARTER,-1
fi

Ensuite, j'ai utilisé easystroke pour attribuer des gestes de souris pour le dock gauche, le dock droit et maximiser. Cela n'émule pas parfaitement la version de Windows mais au moins je ne maximiserai pas automatiquement mes fenêtres. De cette façon, je peux également affecter les scripts aux raccourcis clavier pour plus de commodité.

REMARQUE: Ceci est pour ma configuration de double moniteur Twinview qui prend en compte que je veux que la fenêtre soit ancrée sur le côté du moniteur et non le 'bureau' qui semblent ubuntu comme un très moniteur unique large.

Ce sera probablement suffisant pour moi, mais s'il existe une meilleure solution, j'aimerais vraiment l'entendre.

0
Andrew Redd

Je voulais cette fonctionnalité sur mon Ubuntu lorsque je suis passé de Windows7. J'utilise le composant de grille sur Compiz, mappé sur un clavier numérique, c'est vraiment efficace et je sais que je préfère cette façon d'organiser les fenêtres sur mon bureau.

1
teo96

Andrew, je vois que vous avez déjà répondu avec l'alternative EasyStroke, mais je vais mettre MA façon de le faire ici, juste pour enregistrer une alternative.

En fait, je suis resté avec l'alternative Compiz d'origine, mais à la place, j'ai modifié les scripts pour qu'ils fonctionnent immédiatement avec la fenêtre se traînant, pas en attendant la relâche d'un bouton. Je suppose que c'est une question de goût personnel, mais comme vous, je préfère également la manière de Win7 de maximiser le toucher Edge.

Pour les scripts gauche et droit, je viens de commenter la boucle qui attend la libération du bouton:

#while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
#do 
#   echo 'button pressed'
#done

et rien de plus. Eh bien, j'ai également ajouté les raccourcis clavier pour eux, mais ce n'est qu'un bonus Compiz. ;-) Félicitations pour une si bonne question.

P.S .: Ma modification est sur la version de détection de clic de souris, disponible sur http://ubuntuforums.org/showpost.php?p=9207510&postcount=6 .

0