Aero Snap mit GNOME und Compiz (veraltet)

Avatar von Christoph Langner

3 Min. Lesezeit

10 Aufrufe

Diese Umsetzung ist veraltet. Wer Interesse an CompizSnap (aka AeroSnap für Ubuntu/GNOME) hat, der sollte sich den Beitrag Aero Snap mit GNOME und Compiz (the next generation) ansehen. Bei dieser Version wurden einige lästige Fehler behoben, so dass die Umsetzung schon recht nahe an das „Original herankommt.

…und mit den Kanten des Bildschirms verknüpfen

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].

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…

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.

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.

Ähnliche Beiträge

65 Kommentare zu „Aero Snap mit GNOME und Compiz (veraltet)“

  1. Avatar von Martin

    Nur zur Info: KDE 4.4 wird eine Aero Snap Implementierung erhalten, welche standardmäßig aktiviert ist.

  2. Avatar von matthias

    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.

  3. Avatar von jens

    Klasse Artikel! Danke

  4. Avatar von DeKa

    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

  5. Avatar von detru

    cool, danke für den Artikel 🙂

  6. Avatar von Christoph

    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…

  7. Avatar von detru

    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?

  8. Avatar von Christoph

    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.

  9. Avatar von detru

    stimmt, hat funktioniert 🙂

  10. Avatar von blubb

    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.

  11. Avatar von me

    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

  12. Avatar von Christoph

    He me, die Installation von wmctrl wird oben erwähnt 😉 Danke für das Lob!

  13. Avatar von crudeOIL

    Danke!

  14. Avatar von Georg

    Super Anleitung, danke vielmals!

  15. Avatar von mkind

    sehr geil chris, hab ich direkt ma getrackbackt. hoffe, das funzt 🙂

  16. Avatar von detru

    > 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?

  17. Avatar von Tobias

    Sehr lässig, vielen Dank.

  18. Avatar von Päde

    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.

  19. Avatar von detru

    @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.

  20. Avatar von detru

    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)

    1. 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.

  21. Avatar von detru

    @Christoph danke…war gedanklich auf ubuntuusers 😉

  22. Avatar von Christoph

    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 😉

  23. Avatar von Kambo

    also der Mittelklick oder Rechtsklick auf das Maximieren Symbol reicht mir eigentlich

  24. Avatar von detru

    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.

  25. Avatar von detru

    hier der Screenshot (maus war am rechten Rand des Bildschirms)

    http://img81.imageshack.us/img81/8594/bildschirmfotof.png

  26. Avatar von Christoph

    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.

  27. Avatar von detru

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

    das wollte ich nur wissen 😉

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

  28. Avatar von seaman

    Hallo,

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

    Danke.

  29. Avatar von Christoph

    seaman, Martin von oben ist KDE-Entwickler, von daher tippe ich drauf, dass das stimmt, was er schreibt 🙂

  30. Avatar von seaman

    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.

  31. Avatar von haan

    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 1920×1200)“
    echo “ Kubuntu 9.10 (resolution 1920×1200)“
    echo “ Kubuntu 8.10 (resolution 1600×1200)“

    # define maximum size of usable screen
    wmctrl -r :ACTIVE: -b add,maximizedvert,maximizedhorz
    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,maximizedvert,maximizedhorz;
    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+KPBegin:“
    echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$HEIGHT“
    echo „“
    echo „Left Control+Alt+KP
    Left:“
    echo „wmctrl -r :ACTIVE: -b remove,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,0,0,$(($WIDTH/2-$BORDER)),$HEIGHT“
    echo „“
    echo „Right Control+Alt+KPRight:“
    echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;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,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDERY)))“
    echo „“
    echo „Bottom Control+Alt+KPDown:“
    echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;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,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,0,0,$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDERY)))“
    echo „“
    echo „Top Right Control+Alt+KPPrior:“
    echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;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,maximizedvert,maximizedhorz;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+KPNext:“
    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 KP5:“
    #echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(($TITLE+$TOP)),$WIDTH,$HEIGHT“
    echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$HEIGHT“
    echo „“
    echo „Left KP
    4:“
    #echo „wmctrl -r :ACTIVE: -b remove,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(($TITLE+$TOP)),$(($WIDTH/2-$BORDER)),$HEIGHT“
    echo „wmctrl -r :ACTIVE: -b remove,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,0,0,$(($WIDTH/2-$BORDER)),$HEIGHT“
    echo „“
    echo „Right KP6:“
    #echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,$(($WIDTH/2+(2*$BORDER))),$(($TITLE+$TOP)),$(($WIDTH/2-$BORDER)),$HEIGHT“
    echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;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,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(($TITLE+$TOP)),$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDER)))“
    echo „wmctrl -r :ACTIVE: -b remove,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,0,0,$WIDTH,$(($HEIGHT/2-($TITLE/2+$BORDER)))“
    echo „“
    echo „Bottom KP2:“
    #echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;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,maximizedhorz;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,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,$BORDER,$(($TITLE+$TOP)),$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))“
    echo „wmctrl -r :ACTIVE: -b remove,maximizedvert,maximizedhorz;wmctrl -r :ACTIVE: -e 0,0,0,$(($WIDTH/2-$BORDER)),$(($HEIGHT/2-($TITLE/2+$BORDER)))“
    echo „“
    echo „Top Right KP9:“
    #echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;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,maximizedhorz;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,maximizedvert,maximizedhorz;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,maximizedvert,maximizedhorz;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 KP3:“
    #echo „wmctrl -r :ACTIVE: -b remove,maximized
    vert,maximizedhorz;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“

  32. Avatar von Tini

    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!

  33. Avatar von Peter

    Super, klappt bei mir. Danke.

  34. Avatar von Peter

    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.

  35. Avatar von ElTeh

    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?

  36. Avatar von anubis

    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,maximizedvert,maximizedhorz

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

  37. Avatar von DesertF0x

    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?

  38. Avatar von Kekz

    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.

  39. Avatar von Kekz

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

    1. Avatar von Christoph

      Hallo Keks, ich denke nicht dass du das mit einem DualScreen-Setup hinbekommst. Für Compiz ist das ein großer Bildschirm.

    2. Avatar von roemer2201



      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.

  40. Avatar von thecasio

    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ß

    1. Avatar von Christoph

      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.

  41. Avatar von sunchase

    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?

  42. Avatar von Lastcoder

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

    1. Avatar von Christoph

      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?

      1. Avatar von Lastcoder

        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 …

        1. Avatar von Christoph

          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.

        2. Avatar von Lastcoder

          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 ?!?!

        3. Avatar von Christoph

          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)…

  43. Avatar von thorstenmz

    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.

  44. Avatar von Piccolino81

    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.

  45. Avatar von MaTo

    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

  46. Avatar von roemer2201

    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?

    1. Avatar von Christoph

      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.

      1. Avatar von roemer2201

        Das freut mich zu hören, dass man für einen doch so alten Artikel noch Support bekommt. 🙂

  47. Avatar von ElTeh

    Jop, das liegt wohl daran, dass das Fenster angeklickt und damit im Fokus ist, denke ich.

Über den Blog

Linux und Ich ist ein unabhängiger Blog rund um GNU/Linux-Distributionen, freie Software, Raspberry Pi, Android und Hardware für Bastler und Umsteiger.

Zuletzt auf Mastodon

Shotwell 0.33 ist da – und die freie Bildverwaltung für GNOME macht einen wichtigen Schritt: Nach jahrelanger Arbeit basiert sie erstmals auf GTK4. Ich habe die neue Version unter Arch…

Kategorien

Blog unterstützen

Gefällt dir der Blog? Mit einer kleinen Spende hilfst du, Hosting und neue Testgeräte zu finanzieren.

Linux und Ich — Aero Snap mit GNOME und Compiz (veraltet)
https://linuxundich.de/gnu-linux/aero-snap-mit-gnome-und-compiz-veraltet/ — gedruckt am 17. September 2026