Let me answer my own question; the answer is bizarrely involved. The trick is that the desired desktop behavior (which held in 10.04) is now (in 11.04) controlled by Compiz, which has a notion of "outputs": that is, screens to draw on. These are configured in the CompizConfig Settings Manager (package compizconfig-backend-gconf
or -kconfig
), in the "general options" menu, under the "Display Settings" tab.
This thing has three settings, all of which are important. The most important is "Detect outputs": that must be unchecked, because the whole point is that I want to create an unphysical screen setup, whereas autodetection will just pick up the size of my screen.
The second most important is the "Outputs" box, which is a list of resolutions. At first glance you may expect that the thing to put in here is "1024x768", but that's wrong: it tells Compiz to use the whole virtual screen, so maximized windows will flow into the bottom; that's the wrong behavior. But writing "1024x600" doesn't work either, since that will tell Compiz to pretend that the screen is only 600 pixels high; the counterintuitive result is therefore it decides to stretch every window. This is ugly and also nonfunctional, causing amazing graphical glitches and, mysteriously, displacing buttons from the place you need to click to activate them. Not good.
A much better option is to write "1024x600+0-168", which tells Compiz that there are actually 168 unused pixels on the bottom: that reproduces the "black bar" behavior I was complaining about. It's good to know where that comes from, but I still don't want it. But it tells me what it means: it means that Compiz is simply ignoring those pixels: it won't draw windows there. My mouse still goes there, though, because that behavior is controlled by X, which comes before Compiz. It seems that the thing to do is somehow tell Compiz to draw there (so windows can go there) but also not to draw there (so they don't want to go there).
The totally correct solution is therefore to describe two output devices to Compiz: one "1024x600+0-168", and one "1024x768", thus telling Compiz to draw and not draw on those bottom pixels, at the same time. But how to make sure it knows which one to "want"? That's the first option in this tab: "Overlapping Output Handler". Set it to "Prefer smaller output", which is exactly what I said in words up there.
So the answer: run xrandr --mode 1024x700 --fb 1024x768 --panning 0x768
; go to Compiz' display options and put in two outputs "1024x600+0-168" and "1024x768"; uncheck "Detect Outputs"; and make "Overlapping Output Handler" prefer smaller outputs. Whew.
CCSM (short for CompizConfig Settings Manager) lets you configure the settings of Compiz. Unity is a plugin of Compiz whereas gnome-shell is a plugin of mutter. That's why changes made using CCSM doesn't have any effect on gnome-shell.
If you want to customize gnome-shell, you can try gnome-tweak-tool . To install it, search for 'gnome-tweak-tool' in the software center or by running this command in a terminal: sudo apt-get install gnome-tweak-tool
You can also try the gnome-shell extensions that let you customize the various features of gnome-shell. To try out these extensions, visit the official gnome-shell extensions site.
Best Answer
It's part of the theme.
Look into
/usr/share/themes/Ambiance/metacity-1/metacity-theme-1.xml
and change thepadding
properties to zero (or remove them), e.g:--- Update ---
There's now also a bug report to follow. The bug has been fixed, if you still see this, I'd report a new bug (unless it's happening with windows that can only be resized in fixed sized steps like gnome-terminal).