Ubuntu / Linux news and application reviews.

Xmonad / Bluetile are awesome but the use their own window decorations. You can use the Compiz Grid plugin or even an AWN applet for organizing your windows, but there's one tool that stands out: PyWO - Python Window Organizer.

PyWO is inspired by Quicktile and Compiz Grid, Put and Maximuze plugins and it allows you to easily organize windows on the desktop using keyboard shortcuts. It works with Compiz, Metacity, KDE, XFCE, E16, OpenBox and FVWM.

PyWO can organize your windows in multiple ways: you can move a window in any director without resizing it and snap it to other windows' edges, you can move and resize the window in the same time (according to the grid you set) and even shrink and expand the windows. PyWO is also very customizable - it doesn't have a GUI for this and everything is done through a configuration text file, but it's very easy and well documented on its wiki page.

What I instantly liked about PyWO is that you can both resize the windows you move and only move a window without resizing it. So if for instance you have a wide screen monitor and want your web browser to use 2/3 of the screen width, you can move and fit any window(s) in the remaining 1/3 area of the screen.

To understand better what PyWO Python Window Organizer can do, here is a video I've recorded:

(Video available in HTML5 if you've enabled it on YouTube)

Some more PyWO Python Window Organizer animated .gif examples can be found HERE but the best way to understand what PyWO can do and how great it is, is to try it out for yourself.

How to Run PyWO Python Window Oragnizer

To be able to run PyWO, you need Python 2.5 and python-xlib. Install python-xlib in Ubuntu using the following command:
sudo apt-get install python-xlib

Then, to run PyWO, download the latest version, extract it and run it via a terminal like so:

Using PyWO

By default, PyWO uses the Ctrl / Shift / Alt keys combined with the numeric keypad (1-9 keys) to place windows. Think of the keypad as if it was your monitor divided into 9 sections: Ctrl, Alt or Shift combined with the "7" key will for instance move / resize the window to the top left corner of the screen, "3" is for the bottom left corner and so on. It makes sense, right?

Here are the default PyWO keyboard shortcuts:

Alt-Ctrl-Shift-Q - exit PyWO
Alt-Ctrl-Shift-R - reload configuration file
Alt-Ctrl-Shift-I - print debug information about window manager and current window

Alt-KP_Divide - switch windows (change position of the window)
Alt-Shift-KP_Divide - cycle windows (change contents of the window)

Alt-KP_1-9 - move window in a direction (KP_1-9 - numpad keys)
Shift-KP_1-9 - expand window in a direction (5 works as maximumize compiz plugin)
Alt-Shift-KP_1-9 - shrink window
Alt-Ctrl-KP_1-9 - put window to predefined position
Ctrl_KP_1-9 - put and resize (grid), and cycle widths
Ctrl-Shift_KP_1-9 - put and resize (grid), and cycle heights

You can change these by editing the PyWO configuration file. More about that @ PyWO wiki.

See also: Gnome: Maximize A Window Vertically Or Horizontally Using A Single Click