Start GNU/Linux Aero Snap mit GNOME und Compiz (veraltet)

Aero Snap mit GNOME und Compiz (veraltet)

516
65

Windows 7 hat mit Aero Snap eine praktische Funktion hinzugewonnen. Greift man mit der Maus ein Fenster am Rahmen und zieht es an den linken bzw. rechten Rand des Desktops, dann wird es auf der rechten/linken Bildschirmhälfte maximiert. Zieht man es an den oberen Rand, dann wird das Fenster komplett maximiert. Unter Tricks und Tricks zum Fenstermanagement mit GNOME hatte ich ja schon geschrieben, wie man diese Funktionalität auch mit Ubuntu und dem Grid-Plugin aus Compiz nachahmen kann.

Allerdings benötigte man hierfür noch Tastenkombinationen, um die einzelnen Aktionen auszulösen. Wie die Jungs von OMG!UBUNTU! jedoch herausgefunden haben, könnt Ihr die Funktionalität von Aero Snap praktisch vollständig mit Compiz nachbilden. Dazu muss nicht außergewöhnlich viel Gefrickelt werden, Ubuntu bringt alles nötige von Haus aus mit.

Zuerst müsst ihr den CompizConfig Einstellungs-Manager und das Tool wmctrl installieren. Beides ist in den Paketquellen vorhanden und lässt sich via…

$ sudo apt-get install compizconfig-settings-manager wmctrl

… auf Euer System laden. Nun startet Ihr den CCSM über SystemEinstellungenCompizConfig Einstellungs-Manager und geht in das Plugin Commands. Aktiviert das Plugin [1] und tragt dort das Kommando…

WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1

…in der ersten Zeile, den Befehl…

WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1

…in der Zweiten und letztendlich das Kommando…

wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz

…in der Dritten Zeile ein [2].

Die entsprechenden Befehle im CompizConfig Einstellungs-Manager eintragen
Die entsprechenden Befehle im CompizConfig Einstellungs-Manager eintragen

Geht dann in die Lasche Edge Bindings des Command-Plugins und legt die Befehle auf die entsprechenden Kanten des Bildschirms. Lasst Euch durch den Vertipper im Dialog nicht verwirren. Mit Befehl 12 ausführen ist der Befehl 2 gemeint…

...und mit den Kanten des Bildschirms verknüpfen
…und mit den Kanten des Bildschirms verknüpfen

Eventuell kollidieren die Einstellungen mit bereits von Euch getroffenen Einstellungen von Compiz. So braucht etwa der Würfel ebenfalls die Bildschirmkanten. Hier müsst Ihr Euch entscheiden, Aero Snap oder der Würfel 😉 Verlasst dann das Commands-Plugin und geht in die Allgemeinen Optionen. Es wäre unpraktisch, wenn Fenster sofort maximiert werden, sobald sich die Maus der Kante nähert. Daher solltet Ihr hier die Verzögerung der Rand-Aktionen erhöhen. Je nach Wunsch könnt Ihr hier einen Wert von rund 400ms einstellen.

Letzendlich nur noch die Verzögerung anpassen
Letzendlich nur noch die Verzögerung anpassen

Nun seid Ihr fertig. Nehmt ein Fenster und führt es zum rechten Rand, es sollte nun automatisch auf die rechte Bildschirmhälfte ausgedehnt werden. Zieht das Fenster wieder vom Rand weg und es ist wieder bei der alten Größe. Aero Snap, made by Compiz 🙂 Ein kleines Problem konnte ich entdecken… Compiz unterscheidet bei den Aktionen nicht, ob man gerade ein Fenster in der „Hand“ hat oder nicht. Compiz maximiert das aktuell aktive Fenster auch dann, wenn man einfach nur mit der Maus an den Bildschirmrand fährt und gar kein Fenster verschiebt. Aus diesem Grund sollte man die oben erwähnte Verzögerung nicht zu gering einstellen.

Vorheriger ArtikelHumanity Icons für den Karmic Desktop
Nächster ArtikelMeine Links der Woche (V)
Hallo, ich bin Christoph - Linux-User, Blogger und pragmatischer Fan freier Software. Wie ihr ohne Zweifel bemerkt haben solltet, schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Twitter oder natürlich dem Blog folgen.

65 Kommentare

  1. Danke für deine Anleitung! Sehr schön geschrieben und hilfreich.
    Ich habe die Befehle für das anpassen der Fenster auf halbe Bildschirmhälften an die Ecken unten Links geklammert, so kann ich meinen schönen Würfel behalten und kann trotzdem Aero Snap nutzen, auch wenns nicht genauso wie bei Win funktioniert, für mich eine sehr schöne Lösung, es geht ja auch nicht daran Windows genau nachzubilden, sondern eine sinnvolle und gut Funktion zu haben.

  2. Danke Chrissss,

    wieder einmal eine Super Anleitung um enthaltene versteckte Funktionen zu aktivieren.
    Drehe meinen Würfel mit der mittleren Maus-Taste (Drehrad).

    Gruß DeKa

  3. Danke für das Lob von Euch. Ich hab mittlerweile die obere Bildschirmkante deaktiviert, so dass Fenster nicht mehr komplett maximiert werden. Es passiert einfach ZU oft dass ich irgendein Fenster aus Versehen maximiere, nur weil ich gerade im Startmenü war…

  4. ach noch etwas wie macht man eigentlich einen Trackback in identi.ca? Hab das noch nie hinbekommen und bevor ich den Artikel jetzt wieder auf identi.ca schmeiß und keinen trackback bekomm wollt ich doch lieber mal fragen 😉

    Oder geht das nicht?

  5. detru, das passiert eigentlich automatisch. Ich wüsste nicht dass man da irgendwas besonderes machen müsste. Wenn ich via identi.ca einen Blog via Dent ankündige, dann landet automatisch ein Trackback im Blog.

  6. Sehr unspektakuläre Funktion muss ich sagen, aber kaum hat sie Windows muss sie natürlich jedes System nachahmen. Bewirbt man minimale Neuerungen mit genügend Marketing Budget scheint es aber, dass ein patch für ein Betriebssystem auf einmal zu einer Erfolgreichen neuen Version mutiert.

  7. Hi Chris,
    danke für den wiedermal spitzenmäßigen Beitrag =)

    kleine Info: Bei mir wollten die Befehle nicht, da hab ich die mal via Terminal ausführen lassen:

    Ich musste das Paket wmctrl nachinstallieren, dann gings einwandtfrei.

    Grüße

  8. > Sehr unspektakuläre Funktion muss ich sagen, aber kaum hat sie >Windows muss sie natürlich jedes System nachahmen. Bewirbt man >minimale Neuerungen mit genügend Marketing Budget scheint es >aber, dass ein patch für ein Betriebssystem auf einmal zu einer >Erfolgreichen neuen Version mutiert.

    das hat damit nichts zu tuen. Diese Funktion ist einfach enorm genial. Es vereinfacht vieles. Ich muss oft Text tippen und dazu was im Web suchen, oder bspw. in einem Forum hilfe geben und in einer 2. FF instanz nach lösungen suchen (falls mir mal keine Einfällt).

    Jedesmal die Fenster genau (oder annäherend) gleich groß zu positionieren ist enorm unschön…da ist das einfache an den Rand geziehe doch schon viel besser.

    Das einzige was mich jetzt noch stört: Bei Windows ist das ganze noch etwas besser: Man zieht das aktive Fenster nach (bspw) links, das zuletzt aktive Fenster/alle anderen Fenster werden dann rechts optimal angeordnet.

    Sowas müsste doch auch zu realisieren sein?!

    Ich hab im settings manager ein „virtual grid“ entdeckt. Das tut im Prinzip genau das, aber es hat keine Möglichkeit das ganze per Maus-am-Rand Befehl durchzuführen.

    Someone?

  9. Bei mir werden die Fenster leider nicht passenden nebeneinander angeordnet, sie überlappen mit ca 5 Pixel. Sieht sehr hässlich aus und darum nützt mir diese Funktion leider nichts.

  10. @Päde

    wenn ich das ganze richtig verstehe, sollte das hier funktionieren.

    1. Befehl:

    WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2)-3) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1
    

    2. Befehl:

    WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2)-3) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1
    

    ich weiß gerad nicht ob man in der „HALF“ Variablen auch Kommawerte speichern kann, ich denke mal nicht, daher -3. Damit sollte dann zwischen 2 Fenstern exakt 1 Pixel frei sein.

    Was ich getan habe ist einfach nur die Breite des Fensters (was in der Variablen „HALF“ gespeichert wird, die sich durch die Breite des Bildschirms/2 berechnet) 3 Pixel abzuziehen (-3).

    Gruß
    detru

    //Edit: Passende Tags gesetzt.

  11. sooo. Ich hab jetzt mal ein bisschen damit rumgespielt und so funktionierts jetzt:

    1. Befehl (bzw. linke Seite):

    WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$((($WIDTH/2)-5)) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1
    

    mit der -5 (oder welche Zahl auch immer) reduziert man die breite des Fensters. Soweit kein problem…(3 Klammern sind btw. notwendig, nicht wie vormals geschrieben 2)

    2. Befehl (bzw. rechte Seite):

    WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$((($WIDTH/2)+5)) && HALFWIDTH=$((($WIDTH/2)-5)) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALFWIDTH,-1
    

    bis ich verstanden hatte wie der funktioniert hats etwas gedauert: Man gibt mit $Half den „startpunkt“ vom Fenster an. Gesehen wird dieser vom linken Rand. „HALFWIDTH“ gibt die breite des Fensters an, dürfte soweit klar sein. Das gemeine: wmctrl „shrinkt“ das Fenster beidseitig, nicht einseitig. Daher muss man den Wert den man bei der breite abzieht zum „startpunkt“ dazuzählen.

    und wie schon vermutet: kommawerte werden nicht akzeptiert.

    achja, meine Auflösung ist btw.: 1920*1200, dafür ist das auch „optimiert“.

    //Edit: Passende Tags gesetzt.

  12. Die Syntax-Vielfalt ist auch einfach furchtbar. Hab hier auch schon mit verschiedenen Markups experimentiert, aber irgendwas zerschießt es immer, daher bleibe ich bei Good-Old-Html 😉

  13. was mir gestern noch aufgefallen ist: Wenn ich kein Fenster offen habe und an den rechten Bildschirmrand gehe, dann wird die linke Seite meines Desktops (Hintergrundbild + Icons) nochmal auf die rechte Seite gepackt.

    Ich kann heut Abend mal nen Screenshot hochladen.

  14. detru, das sieht so aus als ob sich da irgendwie die Effekte von Compiz überlagern, sieht komisch aus, kann ich auch bei mir nicht nachvollziehen. Ich würde man versuchen Compiz auf den Standard zurückzusetzen (~/.gconf/apps/compiz löschen) und dann nochmal neu anzufangen.

  15. > sieht komisch aus, kann ich auch bei mir nicht nachvollziehen

    das wollte ich nur wissen 😉

    es ist nicht schlimm, aber war halt irgendwie strange^^

  16. Hallo,

    kann man denn Aero Snap auch schon in KDE 4.3.x aktivieren? Oder geht das wirklich erst mit KDE 4.4?

    Danke.

  17. Ah, ok. Danke dir.

    Aber dieses „standardmäßig“ ließe mich mutmaßen, dass es jetzt schon geht, es aber unter Umständen noch nicht ausgereift ist.

    Aber ok, dann warte ich noch bis Januar/Februar, wenn KDE 4.4 erscheint.

  18. Avoid annoying overlapping windows

    Execute the following script to generate wmctrl commands for GNOME and/or KDE for your resolution (without annoying overlapping windows). See the script itself for more info.

    The script is also available at:
    http://ubuntuforums.org/showthread.php?p=8441295#post8441295
    grid.sh:

    #!/bin/bash
    echo ""
    echo "Ubuntu (GNOME) contains a nice utility Compiz Grid:"
    echo "Tile, position and resize your windows to fit an imaginary grid."
    echo "The functionality is based on Winsplit Revolution for Microsoft Windows."
    echo "For more info, demos etc. see: http://winsplit-revolution.com"
    echo ""
    echo "This script can be used to define wmctrl commands for Kubuntu (KDE)"
    echo "for your monitor resolution. These commands can be attached to"
    echo "Key Bindings (keyboard shortcuts), so you have the same functionality"
    echo "under KDE without the need to install a Tiling Window Manager like"
    echo "xmonad, awesome or ion3."
    echo ""
    echo "The commands can also be used to emulate Windows 7 Aero Snap"
    echo "without annoying overlapping windows."
    echo "For more info about this subject see youtube or for example" 
    echo "http://www.omgubuntu.co.uk/2009/11/aero-snap-ubuntu-linux.html"
    echo ""
    echo "NOTES:" 
    echo "- This scipt uses xwininfo (part of x11-utils package) and wmctrl."
    echo "  For (K)ubuntu:"
    echo "  sudo apt-get install x11-utils wmctrl"
    echo "- This script is tested with:"
    echo "  Ubuntu 9.10 (resolution 1920x1200)"
    echo "  Kubuntu 9.10 (resolution 1920x1200)"
    echo "  Kubuntu 8.10 (resolution 1600x1200)"
    # define maximum size of usable screen
    wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
    sleep 1
    WIDTH=$((`xwininfo -id $WINDOWID | grep 'Width:' | cut -f 2 -d ':'`))
    HEIGHT=$((`xwininfo -id $WINDOWID | grep 'Height:' | cut -f 2 -d ':'`))
    BORDERY=$((`xwininfo -id $WINDOWID | grep 'Corners:' | cut -f 11 -d ' ' | cut -f 2 -d '-'`))
    wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;
    sleep 1
    wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$HEIGHT
    sleep 1
    BORDER=$((`xwininfo -id $WINDOWID | grep 'Absolute upper-left X:' | cut -f 2 -d ':'`))
    BOTTOM=$((`xwininfo -id $WINDOWID | grep 'Corners:' | cut -f 11 -d ' ' | cut -f 2 -d '-'`))
    BORDERY=$(($BORDERY-(`xwininfo -id $WINDOWID | grep 'Corners:' | cut -f 11 -d ' ' | cut -f 2 -d '-'`)))
    TOP=$((`xwininfo -id $WINDOWID | grep 'Relative upper-left Y:' | cut -f 2 -d ':'`))
    if [ $TOP -eq 0 ]
    then #KDE
    echo ""
    echo "----------------------"
    echo "Assuming KDE, Correct?"
    echo "----------------------"
    WIDTH=$(((`xwininfo -id $WINDOWID | grep 'Width:' | cut -f 2 -d ':'`)-2*$BORDER))
    HEIGHT=$(((`xwininfo -id $WINDOWID | grep 'Height:' | cut -f 2 -d ':'`)-2*$BORDERY))
    TITLE=$((`xwininfo -id $WINDOWID | grep 'Absolute upper-left Y:' | cut -f 2 -d ':'`))
    echo ""
    echo "Below are the wmctrl commands for KDE (Kubuntu)."
    echo ""
    echo "The Key Bindings (keyboard shortcuts) can be set in the following way:"
    echo "sudo apt-get install xbindkeys xbindkeys-config"
    echo "xbindkeys --defaults > ~/.xbindkeysrc"
    echo "echo \"xbindkeys\" > ~/.kde/Autostart/startxbindkeys.sh"
    echo "chmod u+x ~/.kde/Autostart/startxbindkeys.sh"
    echo "~/.kde/Autostart/startxbindkeys.sh"
    echo "xbindkeys-config"
    echo "finally add the commands below"
    echo ""
    echo "Centre       Control+Alt+KP_Begin:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$HEIGHT"
    echo ""
    echo "Left         Control+Alt+KP_Left:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,0,$(($WIDTH/2-$BORDER)),$HEIGHT"
    echo ""
    echo "Right        Control+Alt+KP_Right:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+($BORDER))),0,$(($WIDTH/2-$BORDER)),$HEIGHT"
    echo ""
    echo "Top          Control+Alt+KP_Up:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDERY)))"
    echo ""
    echo "Bottom       Control+Alt+KP_Down:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,$(($TITLE+$BORDERY+$TOP+($HEIGHT/2-($TITLE/2+$BORDERY)))),$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDERY)))"
    echo ""
    echo "Top Left     Control+Alt+KP_Home:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,0,$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDERY)))"
    echo ""
    echo "Top Right    Control+Alt+KP_Prior:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+($BORDER))),0,$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDERY)))"
    echo ""
    echo "Bottom Left  Control+Alt+KP_End:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,$(($TITLE+$BORDERY+$TOP+($HEIGHT/2-($TITLE/2+$BORDERY)))),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDERY)))"
    echo ""
    echo "Bottum Right Control+Alt+KP_Next:"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+($BORDER))),$(($TITLE+$BORDERY+$TOP+($HEIGHT/2-($TITLE/2+$BORDERY)))),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDERY)))"
    else #GNOME
    echo ""
    echo "------------------------"
    echo "Assuming GNOME, Correct?"
    echo "------------------------"
    WIDTH=$((`xwininfo -id $WINDOWID | grep 'Width:' | cut -f 2 -d ':'`))
    HEIGHT=$((`xwininfo -id $WINDOWID | grep 'Height:' | cut -f 2 -d ':'`))
    wmctrl -r :ACTIVE: -e 0,0,$TOP,$WIDTH,$(($HEIGHT-2*$BOTTOM))
    sleep 1
    TITLE=$(((`xwininfo -id $WINDOWID | grep 'Absolute upper-left Y:' | cut -f 2 -d ':'`)-$TOP-$BORDER))
    TOP=$(($TOP-$TITLE))
    echo ""
    echo "Below are the wmctrl commands for GNOME (Ubuntu)."
    echo "The Key Bindings (keyboard shortcuts)"
    echo "or Edge Bindings (like Aero Snap) can be set under:"
    echo "System -> Prefences -> CompizConfig Settings Manager ->"
    echo "Commands -> Commands/Key Bindings/Edge Bindings"
    echo ""
    echo "Centre       KP_5:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(($TITLE+$TOP)),$WIDTH,$HEIGHT"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$HEIGHT"
    echo ""
    echo "Left         KP_4:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(($TITLE+$TOP)),$(($WIDTH/2-$BORDER)),$HEIGHT"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,0,$(($WIDTH/2-$BORDER)),$HEIGHT"
    echo ""
    echo "Right        KP_6:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+(2*$BORDER))),$(($TITLE+$TOP)),$(($WIDTH/2-$BORDER)),$HEIGHT"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+(2*$BORDER))),0,$(($WIDTH/2-$BORDER)),$HEIGHT"
    echo ""
    echo "Top          KP_8:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(($TITLE+$TOP)),$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo ""
    echo "Bottom       KP_2:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(((2*($TITLE+$BORDER))+$TOP+($HEIGHT/2-($TITLE/2+$BORDER)))),$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,$(((2*($TITLE+$BORDER))+$TOP+($HEIGHT/2-($TITLE/2+$BORDER)))),$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo ""
    echo "Top Left     KP_7:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(($TITLE+$TOP)),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,0,$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo ""
    echo "Top Right    KP_9:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+(2*$BORDER))),$(($TITLE+$TOP)),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+(2*$BORDER))),0,$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo ""
    echo "Bottom Left  KP_1:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(((2*($TITLE+$BORDER))+$TOP+($HEIGHT/2-($TITLE/2+$BORDER)))),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,0,$(((2*($TITLE+$BORDER))+$TOP+($HEIGHT/2-($TITLE/2+$BORDER)))),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo ""
    echo "Bottum Right KP_3:"
    #echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+(2*$BORDER))),$(((2*($TITLE+$BORDER))+$TOP+($HEIGHT/2-($TITLE/2+$BORDER)))),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo "wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+(2*$BORDER))),$(((2*($TITLE+$BORDER))+$TOP+($HEIGHT/2-($TITLE/2+$BORDER)))),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))"
    echo ""
    echo "TIP: For GNOME (Ubuntu) Key Bindings use Compiz Grid instead. Go to:"
    echo "     System -> Prefences -> CompizConfig Settings Manager ->"
    echo "     Window Management -> Grid"
    fi
    wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$HEIGHT
    echo ""
    echo "Current used values:"
    echo "border: $BORDER pixels"
    if [ $TOP -eq 0 ]
    then #KDE
    echo "bordery: $BORDERY pixels"
    fi
    echo "width:  $WIDTH pixels"
    echo "height: $HEIGHT pixels"
    echo "bottom: $BOTTOM pixels"
    echo "top:    $TOP pixels"
    echo "title:  $TITLE pixels"
    
  19. Super, super und nochmal super! Ich freu mich wie ein Schneekönig. Vielen Dank, die Funktion ist für mich eine ganz große Bereicherung.

    Super Blog den du hast!

  20. Habe die Funktion einige Stunden getestet und festgestellt, dass Sie nur funktioniert, wenn man kein Fenster unter dem zu skalierenden Fenster hat. Überlappen die Fenster nämlich, klappt die Funktion nicht mehr. Würde mich über abhelfende Tipps freuen.

  21. Hm, Irgendwie funktionieren die Seiten nicht richtig, den Code habe ich 1:1 Kopiert eingefügt und an die Edge bindings eingepasst. Benutze Gnome, jemand eine Idee woran das liegt?

  22. Die Umsetzung klappt super. Ich habe die Funktionen auf super+left, super+right, usw. gesetzt und nicht auf Edge Binding. Durch die Tastennutzung passiert es einem nicht ausversehen, dass die Größe der Fenster verändert werden.

    Zusätzlich habe ich noch folgenden 4. Befehl hinzugefügt:

    wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz

    Dieser wird mittels super+down benutzt. Damit wird das Fenster wieder auf den ursprünglichen Zustand gebracht.

  23. Bei mir unter Lucid funktioniert irgendwie das wiederherstellen der alten Größe nicht… Wenn die den Befehl im Terminal ausführe geht es allerdings. Wenn der Befehl einmal im Terminal ausgeführt wurde funktioniert das wiederherstellen mit dem Terminal dann auch immer wieder.
    Jemand eine Idee?

  24. Hallo,

    super Anleitung. Leider funktionieren die Key Bindings bei mir nur, wenn ich die Maus ohne Fenster in die Ecken fahre. Ich verwende nun Key-Bindings.

  25. Welche Werte braucht man bei zwei Monitoren? Momentan springt das Fenster vom linken auf den rechten Monitor und umgekehrt 🙁


    • Kekz:

      Welche Werte braucht man bei zwei Monitoren? Momentan springt das Fenster vom linken auf den rechten Monitor und umgekehrt

      Das Width musst du statt durch 2 durch 4 teilen. Hatte bei mir jedoch zwei komische Nebeneffekte:
      1. Das lässt sich nur auf dem Monitor teilen und von rechts nach links schieben, auf dem es ursprünglich war.
      2. wenn man mit der Maus über den Fensterrahmen oben ‚hovert‘, dann wird das Fenster maximiert.

      Vielleicht setze ich mich die Tage nochmal ran, um das zu ändern, das mit dem „durch 4“ war nur eine schnelle Idee.

  26. Hey,
    erstmal eine Superanleitung, war genau das was ich gesucht hab. Das lief bei mir problemlos ca. 3 Tage. Und ab heute hab ich das gleiche Problem wie es detru vor ca. 9 Monaten schon geäußert hat. Das löschen von .gconf/apps/compiz hat leider nichts gebracht. Hab das ganze mal näher im hackerboard beschrieben. http://www.hackerboard.de/linux-unix/42185-geteilter-bildschirm.html

    Danke schon mal wenn hier wer eine Ahnung hat wie ich meinen PC wieder zum funktionieren bringe!
    Gruß

    • Du schreibst dort „Compiz zu deaktivieren bringt nur etwas Besserung, die rechte Hälfte wird links und anders rum angezeigt“, dann kann das ja gar nicht mit dem „Aero Snap“ zu tun haben. Denn ohne Compiz, keine Desktop Effekte, kein Fake Aero Snap. Von daher denke ich eher dass die xorg.conf verkonfiguriert ist.

  27. Hallo,
    besten Dank für die Anleitung. Funktioniert unter Ubuntu 10.04 super, unter Debian squeeze leider nicht. Wenn ich die Kommandos manuell in der shell ausführe, funktioniert alles. Sobald ich die Fenster aber an den Rand des Bildschirms ziehe, passiert leider gar nichts. Jemand eine Idee wie ich AeroSnap auch unter Debian zum Laufen bekomme?

  28. Fahre zwar auch Ubuntu 10.04, allerdings mit aktuellstem Compiz via PPA. Funktioniert bei mir überhaupt nicht, sprich alles wie bisher, keine erkennbare Reaktion ….

    • Hmmmm, ich habe das alles unter Maverick vor ein paar Tagen getestet und es lief. Ist ja eigentlich auch keine große Magie dahinter. Hast du das „commands“ PLugin auch aktiviert?

      • oops … sudo apt-get install wmctrl .. *lol* mein Fehler, jetzt läuft’s, wenn auch nicht ganz so smooth wie unter win7, aber brauchbar. Ich finde die Funktion im Übrigen auch sehr geil, gerade bei der Arbeit mit zwei Dokumenten …

        • Ohne wmctrl kann das natürlich nicht gehen 😉 Die „Brauchbarkeit“ der Lösung würde ich so ca. bei 45% einordnen (wenn sich das überhaupt machen lässt). Mich persönlich stört es dass die Fenster auch dann in ihrer Größe geändert werden, wenn ich mich mit der Maus einfach nur am oberen Bildschirmrand aufhalte. So kommt es dann schon öfters vor, dass ich Fenster unabsichtlich maximiere. Ich muss mal rausfinden, ob man die Aktion nur dann ausführen kann wenn zusätzlich ein Mausbutton gedrückt ist. Müsse ja eigentlich machbar sein.

        • habe zunächst auf Edge-Binding Top-Left
          umgestellt, nachdem mir gnomenu immer
          in der Position verrutscht ist, wenn ich mal kurz
          links hingekommen bin.

          Mir scheint „Button Bindings“ praktikabel
          zu sein, da man dort scheinbar Edge-Binding
          mit einer Taste verknüpfen kann ?!?!

        • Meine Idee wäre es den wmctrl-Aufruf gegen ein kleines Bash-Skript zu ersten. Das Skript überprüft ob die linke Maustaste gedrückt ist und führt bei einer positiven Antwort den wmctrl-Aufruf aus. Dadurch passiert erst dann was mit den Fenstern, wenn man ein Fenster „in der Hand hat“. Gut, es können bei Klicks innerhalb des oberen/linken/rechten Bildschirm-Randes immer noch unerwünschte Aktionen ausgelöst werden, doch es würde die Situation verbessern. Ich schaue mir das heute Abend mal an. (Wenn ich die Zeit dafür finde)…

  29. Bei mir funktioniert es leider nicht.

    Wenn ich die Zeile in der bash eingebe, erhalte ich folgende Fehlermeldung:

    bash: /2: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \“/2\“).

    Offenbar kriegt er die Division nicht hin.

  30. Super Anleitung, wie immer! Allerdings musste ich das ganze auf Tastaturkombinationen (CTRL+ALT+RIGHT/LEFT/UP) legen. Es passierte einfach zu oft, dass ich aus Versehen ein Fenster nach links, rechts verschoben oder maximiert habe. Danke für die detaillierte Beschreibung.

  31. Hallo,

    Super Anleitung!!! Funktioniert alles so weit, bis auf Evolution… Der lässt sich bei mir nicht auf die Hälfte des Bildschirms minimieren. Zumindest nicht Bei meim 14 Zoller…

    LG

  32. Ist es bei Euch auch so, dass ein nicht maximiertes Fenster sich maximiert, wenn ihr mit der Maus an den oberen Bildschirm kommt, OHNE den Fensterrahmen gegriffen zu haben?

    • Hi, die hier vorgestellte Methode hat ein paar Schwächen, unter anderem den von dir festgestellten Effekt. Ich habe das Ganze überarbeitet, so dass man besser arbeiten kann, der Beitrag wird heute Abend online gehen.

Kommentarfunktion ist geschlossen.