Windows 7-style Snapping Windows in Ubuntu Linux 10.04 (Lucid)
Having spent too many long hours at work with a Windows 7 machine, it’s really awkward going back to Ubuntu and not having windows snap to the edges when I drag windows to the edge of the screen. Luckily, it’s rather easy to customize Compiz (the default window manager for Ubuntu) so that it acts in this way. Most of these instructions can already be found on Google, but I’m compiling them here for future reference. Windows 7 only allows three main types of snapping – left half, right half, and full screen by dragging the window to the left, right, and top of the screen respectively, although the grid plugin I’m using below lets you dock windows in all the obvious places so feel free to adjust the procedure as you see fit. These instructions have only been tested on a single-monitor setup, but then again, even Windows 7 acts funny when you try to use Aero Snap (or whatever it’s called) on a dual-head setup. (If the monitors are side-by-side, snapping to the top snaps full screen to the current monitor. You can only snap to the left-most edge of the left-most monitor, and likewise for the right-most monitor. I haven’t tested Aero Snap for two monitors that are arranged vertically; and don’t intend on doing so in the near future.) Before You Begin You will need to install the following packages if they’re not already installed: - compizconfig-settings-manager - compiz-fusion-plugins-extra - xautomation
Most of this software isn’t “officially supported” by Canonical, but that shouldn’t stop you from using it in most cases. You may need to add additional repositories in order to install the packages. For the lazy, you can just enter the following command into a terminal. (Note: If you don’t understand what the following command does, it is highly recommended that you use Synaptic Package Manager to install the software yourself instead.)
sudo aptitude install compizconfig-settings-manager
compiz-fusion-plugins-extra xautomation
Open the CompizConfig Settings Manager Click System | Preferences | CompizConfig Settings Manager. If you can’t find this menu item, make sure that you installed the compizconfig-settings-manager package. Enable the Grid Plugin Click the Window Management category. Select Grid. If Grid does not appear, make sure you installed the compiz-fusion-plugins-extra package. Note the default key shortcuts. The key shortcuts use Ctrl and Alt, as well as the keypad numeric keys (not to be confused with the number keys above the letters on your keyboard). So KP6 corresponds to the 6 key on the keypad. If you change these, you will need to update the parameters given to xte, below. Enable the Grid Plugin. Create Edge Bindings Click the All category. Click Commands Here we will create commands using the xte program that will trigger the keyboard shortcuts for the Grid plugin.
xte 'keydown Control\_L'
'keydown Alt\_L' 'key KP\_4' 'keyup Control\_L' 'keyup Alt\_L' xte
'keydown Alt\_L' 'key F10' 'keyup Alt\_L' xte 'keydown Control\_L'
'keydown Alt\_L' 'key KP\_6' 'keyup Control\_L' 'keyup Alt\_L'
After entering the commands, the screen should look like this. Update: Setting command 1 (the top edge binding) to read ALT-F10 (instead of Ctrl-Alt-KP_5 as per the screen shot) will cause the current window to be “properly” maximized. Using the old method will allow you to toggle maximizing by moving the mouse to the top edge, which may be confusing. Click the Edge bindings tab. To set the bindings for the commands we created earlier (click the button that says None). Select the edge in this window. If you get this pop-up, disable the other binding. Here are the finished edge bindings. Adjust Edge Trigger Delay If you use it now, just touching the edge will cause the window to change size, which is annoying. So we set an edge trigger delay. Click General Options General Options Adjust the edge trigger delay by using the mouse or entering a value. A value of 400-500 ms is reasonable, but feel free to adjust it. Final Thoughts Voila! The finished product. Of course, this “emulation” isn’t perfect: - You won’t get the huge blue silhouette of the window’s new position. - The binding will trigger regardless of whether you are dragging a window or whether you just leave the mouse cursor at the edge of the screen - If a window has a minimum size, when the window is resized by the grid plugin, it may take up more than half the screen.
But it does the job, for someone who’s used to gestures introduced in Windows 7 and can’t be bothered to resize windows manually any more.