Thursday, 12 April 2012

Reduce horizontal spacing between icons in GNOME 3.2

One thing that annoys me about the default GNOME shell is the amount of horizontal space it wastes in between icons/indicators in the status area (top right on the panel).

Urgh look how much space is between all the icons!

I wrote a very simple GNOME shell extension to fix this. (My first ever! More an exercise in how to do it than anything else).

It's available for one-click install from extensions.gnome.org. The repository (for anyone interested in the code) is here.

If for some reason you don't want to/can't install from extensions.gnome.org, you can go to the 'Downloads' page and download the .zip file. Then start gnome-tweak-tool, select "Shell Extensions", "Install Shell Extensions", and choose the .zip file. Restart the gnome-shell, enable the extension, and you're all done!

The result?

Nice and slim

Voila! Enjoy :)

What it Does

It basically just modifies these lines from the file /usr/share/gnome-shell/theme/gnome-shell.css:

.panel-button {
    -natural-hpadding: 12px;
    -minimum-hpadding: 6px;
    /* ... and so on */
}

The attribute -natural-hpadding is set by default to 12 pixels wide. My extension sets this to 6 pixels wide (you can modify this if you want; just change the relevant lines in stylesheet.css that comes with the extensions).

If you set -naturial-hpadding below 6 pixels you will have to adjust -minimum-hpadding to match it too.

Shell Extensions in Gnome 3.2/Fedora 16

I just upgraded my work computer from Fedora 15 to Fedora 16, which uses Gnome 3.2. This is my first real experience with the GNOME shell in Fedora, because I got rid of it straight away (fallback mode) in F15 since I couldn't stand it so haven't used it since.

Anyhow, I thought I'd give it a shot this time as the GNOME team have apparently been doing good things with the newer versions of GNOME shell.

My first impression - danger Will Robinson! Switch back to fallback mode!

  • poor support for dual monitor which I use at work: top panel is only on one screen
  • to get to the Overview to switch/view windows I have to hover over the top left corner of the left-most screen, rather than just clicking a window from the top panel
  • the clock is in the middle of my top panel, meaning I wouldn't be able to see my current window title, except that
  • the window title of the current window I'm in doesn't show in the top panel. Just the application name.

I was just about to switch to fallback mode again, when I discovered GNOME shell extensions. These are little plugins (think of them like browser plugins) that add functionality to the GNOME shell interface.

Below I'll summarise some of the shell extensions that I found at the GNOME shell extensions website that rectified my problems. You generally install them from that website, and then use gnome-tweak-tool (or "Advanced Settings" in Fedora) to toggle them on and off.

You'll need to log out and in again or restart the shell (Alt+F2, type 'r' for restart, press Enter) to have them take effect.

Top Panel

Frippery Move Clock moves the clock to the left

Frippery Move Clock This moves the clock from the centre of the panel to the left of the status menu button (over the right of the screen). This frees up space for extensions that show icons for open windows, etc. Essential.

Extend Left Box This allows extensions using the top panel (e.g. window list extensions) to use the whole of the top panel instead of just the left half. Essential.

Status Title Bar This shows the entire title (e.g. "Blogger: Mathematical Coffee - Edit post - Google chrome") of your current window in the top panel, rather than just the application name ("Chrome"). Whether to use this or not depends on your top panel real-estate.< /p>

Status Title Bar with Extend Left Box show the full window title

Notification Icons

The following extensions affect the notification icons up the top-right of the screen (accessibility, volume, ...) and the messaging tray at the bottom of the screen.

Evil Status Icon Forever There are many extensions that hide icons (e.g. accessibility) or move icons from the messaging tray to the notification bar (dropbox, ...), but this one seems to cover the functionality of all of them. This allows you to set which notification icons to move from the messaging tray to the top panel (I added dropbox and guake up there) and which to hide (the accessibility icon). For instructions see here.

Evil Status Icon Forever lets me put dropbox & other icons up the top;
notice also the workspace indicator.
Places menu

Places Status Indicator adds a folder to the notification tray that, when clicked, shows a list of folders to open in nautilus.

If you want to remove an individual icon (accessibility, bluetooth, volume, ..) from the notification bar, use Evil Status Icon Forever. If for some reason you don't want to do that, you can install the volume icon remover, bluetooth icon remover, or gnome-shell-extension-remove-accessibility-icon from the fedora repositories.

Workspace indicator adds a little drop-down menu from the notification area letting you switch between workspaces (The '1' in the box in the above picture). Since I added this functionality on my docklet (later in this post), I didn't need this any more).

Status Icon

The "Status Icon" is the menu at the top-right of your panel with a speech bubble next to your user name. The speech bubble is your chat availability - you can control it from there. The menu also contains the "System Settings", "Log out", etc options.
Chat, Hibernate, Power Off options;
No name on the button

Alternative Status Menu By default the status menu only gives a "Suspend" option for closing your computer, and you have to hold down Alt to see "Hibernate" or "Power Off". This extension adds the "Hibernate" and "Power Off" buttons permanently to the menu. Very useful (for me anyway), because I want to power off my computer much more often than suspend it.

Status Only icon removes your username from next to the speech bubble, leaving just the speech bubble. I know my name already so there's no use having it there taking up space!

Empathy Menu You can set your availability for chat with the status menu, but you can't actually start a chat from it. What a pain! This extension adds an option "Chat" to the menu that launches empathy (there are similar ones for Pidgin and Gwibber). I still think I'd like to be able to click on a contact's name from that menu though, like Unity.

Notifications Alert this paints the speech bubble on the status menu red when you have a new notification (e.g. IM messages).

Window list

My biggest gripe is not having a one-click window list. I just want something like the good old gnome-panel. There are a number of extensions providing this functionality. These all work best with Frippery Move Clock extension and the Extend Left extension.

Dock this puts a permanent dock on the left or right side of the screen, the same dock that appears in the overview. You can configure it to autohide or not, and which side of the screen to put it on (not top and bottom though, and doesn't support one per monitor). Quite slick, although not very customisable.

Window List does what it says on the can. Adds window buttons (icon and text) to the top panel. Like the Windows XP task bar.

Window list

Window Icon List Adds icons for open windows to the top panel, like Windows 7.

Panel Docklet S I've saved the best til last! This is the extension I ended up going with - sleek, infinitely customisable. It lets me create either a panel or docklet (my chose) on any side of the screen I like. I can show one icon per group of icons (text too if I want), or one icon per application, and best of all, I can put one docklet per monitor, and I'll only get icons for applications on that monitor! I can also add a workspace switcher (depreciating the need for a separate workspace switcher app), add a button to go to the desktop, add my 'favourites' (on the side dock) as icon shortcuts, and much, much more. I strongly recommend this. The only downfall is that I find that the panel on the second monitor sometimes shows icons of applications even though they've already been closed, and if I right click on them gnome-shell crashes :(.

Panel Docklet S in 'docklet' mode
Panel Docklet S in 'panel-docklet' mode over my top panel

Other

User Themes: this allows you to install custom skins for the GNOME shell and switch between them from gnome-tweak-tool.

Lame Extensions Manager while you're playing around with all the shiny extensions on extensions.gnome.org, this provides a button in the status bar allowing you to toggle them on and off quickly.\

Summary

In the end, I managed to fix most my gripes - removed notification icons I don't use, moved the clock to the left, removed the name from the status bar, and these freed up a lot of space in the top panel.

With that free space I dumped a Panel Docklet S there (in the 'docklet panel' mode) which allows me to quickly see what windows I have open on a particular monitor and go to them (as well as letting me switch between workspaces), and changed the title bar to show the full name of the current window rather than the application name.

All in all, that covers most the gripes I started with! The fact that I can make one docklet per monitor soothes the gnome-shell dual-monitor pain, and the docklet really lets me do most things I wanted (workspace and window switching, shortcuts).

Thursday, 29 March 2012

Getting straight single quotes for code/verbatim in Sweave/knitr

Update 16 April 2012: Yihiu has fixed this from knitr 0.5! Thanks!

I've recently started using knitr to write reports, mainly about code I've written in R.

One thing that I insist upon in documentation on code is that code snippets within the document be able to be copy-and-pasted easily so the user can follow along.

This is why I don't like having the following in my documents:

> words <- c('Hello','world!')
> paste(words)
[1] "Hello"  "world!"

If the user wants to perform the code I've just written, they can't simply select everything and copy-paste; the > symbols are going to get in the way.

I much prefer something like this:

words <- c('Hello','world!')
paste(words)
## "Hello"  "world!"

This is why I like knitr as opposed to Sweave on which it is based; knitr seems to be more flexible in suppressing the leading > in input commands, and putting comments (##) in front of the outputs.

However, knitr has an annoying drawback that Sweave doesn't when it comes to typesetting code: a single quote mark/apostrophe ' in Sweave will stay as such in the output; in knitr, it will be converted to a left or right single quote.

By default, LaTeX will change "straight" single quotes ' into left and right single quotes that are curled depending on whether the quote is open or closed.

If you try and copy-paste these into a terminal you will run into trouble, and R will complain about "unexpected input in "??"", where the "??" may be a funny looking symbol (depending on your terminal) that basically means "I don't understand this fancy symbol you gave me!"

Now, Sweave has some way of dealing with this. It converts all of these funky quotes into normal straight quotes that can be safely copy-pasted into R. Knitr doesn't.

weird curly quotes in knitr

How to fix this? Well, there is a LaTeX package upquote that converts all single quotes that occur in a verbatim environment (or \verb commands) from left/right single quotes into straight single quotes.

It uses the textcomp package to access the command \textquotesingle which is the straight single quote (it also does backticks via \textasciigrave). The upquote package basically says "if you encounter a quote in a verb-like environment, make sure it's \textquotesingle!".

So how does this tie into getting straight quotes in Sweave/knitr? Easy: add \usepackage{upquote} and a fairly arcane command to your preamble:

\documentclass{article}
\usepackage{upquote} % to convert funny quotes to straight quotes
\setbox\hlnormalsizeboxsinglequote=\hbox{\normalsize\verb.'.}%
\begin{document}
<<eval=TRUE,echo=TRUE,tidy=FALSE>>=
    words <- c('Hello','world!')
@
\end{document}

Now you can just run knitr on this and then pdflatex, and voila! Straight quotes.

straight quotes in knitr!

How does this work?

For the more TeX-inclined among you, this is why it works.

First of all, when knitr process a Rnw file (and makes a tex file as an output), it defines a whole bunch of individual characters and uses them in the output. Have a look at the preamble of a knitted document and you will see a whole bunch of:


\newsavebox{\hlnormalsizeboxclosebrace}%
\newsavebox{\hlnormalsizeboxopenbrace}%
....
\setbox\hlnormalsizeboxopenbrace=\hbox{\begin{normalsize}\verb.{.\end{normalsize}}%
\setbox\hlnormalsizeboxclosebrace=\hbox{\begin{normalsize}\verb.}.\end{normalsize}}%

There are lots and lots of these definitions. There appears to be one for each punctuation character and text size.

In particular there is one for the single quote mark, called \hlnormalsizeboxsinglequote. Every single time you have a single quote in a code chunk, knitr replaces this single quote with \usebox{\hlnormalsizeboxsinglequote}. Every single time you use any punctuation character at all within a code chunk, knitr will replace it with the relevant \hlnormalsize[charactername]. It's bizarre, and leads to very ugly code!

For example, the simple chunk in the example above gets rendered (in the tex document) like so:


\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}
\begin{flushleft}
\ttfamily\noindent
{\ }{\ }{\ }{\ }\hlsymbol{words}{\ }\hlassignement{\usebox{\hlnormalsizeboxlessthan}-}{\ }\hlfunctioncall{c}\hlkeyword{(}\hlstring{\usebox{\hlnormalsizeboxsinglequote}Hello\usebox{\hlnormalsizeboxsinglequote}}\hlkeyword{,}\hlstring{\usebox{\hlnormalsizeboxsinglequote}world!\usebox{\hlnormalsizeboxsinglequote}}\hlkeyword{)}\mbox{}
\normalfont
\end{flushleft}
\end{kframe}
\end{knitrout}
How gross!

Anyhow, remember that knitr inserts all the savebox commands before the preamble you put in your Rnw document. Well, \setbox operates such that it calculates the contents of the box straight away and saves it to the box register, and then forgets the definition of the box (i.e. the \normalsize\verb.'.).

What this means is that \hlnormalsizeboxsinglequote gets defined before the upquote package is even loaded, and hence the effect of upquote (redefining ' to \textquotesingle within verbatim commands) happens too late to affect the \verb.'. that occurs in \hlnormalsizeboxsinglequote.

To fix this, we would like to retrieve the definition of the \hlnormalsizeboxsinglequote command after we load the upquote package so that its definition gets re-parsed. Then we'd just have to type something like \edef\hlnormalsizeboxsinglequote\hlnormalsizeboxsinglequote to say "set \hlnormalsizeboxsinglequote to what it used to be, but re-read the definition first".

Unfortunately there appears to be no way to do this. Hence the only fix is to look up how knitr defines \hlnormalsizeboxsinglequote by grabbing it out of the preamble of a knitted document, and copy its definition into the preamble of the source document.

This works for now, but it just means that if the knitr package changes how it defines \hlnormalsizeboxsinglequote (maybe in one revision they decide to make all quotes blue in colour), it is up to you to make sure that your redefinition of \hlnormalsizeboxsinglequote in your Rnw file matches that used by Sweave.

Wednesday, 7 March 2012

Be a NethackR!

Net Hack is one of the most amazing games of all times.

It's a rogue-like game, where the quest is to retrieve the Amulet of Yendor from the bottom of the dungeon and bring back it up to the top in order to sacrifice it to your deity and achieve immortal fame & glory, etc. Along the way, one must avoid the many (and I mean many) ways to die, including from the evil Wizard of Yendor, also known as Rodney.

Adventuring through the dungeon (aww, I died)

There are many, many, many ways to die in Net Hack. Also, there's no saving except to resume your game later - once you die, you die. You have to restart the game from scratch. Finally, the game comes with a small hints book to get you started, but no real instructions (like "don't look at Medusa or you'll die! Don't touch a cockatrice or you'll turn to stone! Don't eat to much or you'll die of overeating (not kidding!)").

These factors all make Net Hack a very, very, hard game. And yet addictive! I have yet to win the game after a couple of years of on and off playing, but I still love it.

Anyhow, I decided to write an R package that would let me play Net Hack in R (terminal version, of course! I wouldn't play the graphics version unless I didn't have a keyboard!).

Why would I want to play Net Hack from R? Well ... why not? :D

You can download it from here - either go to the 'Downloads' page and grab the .zip file and install within R (Packages -> Install package(s) from local zip files... OR install.packages('nethackR_1.0.1.zip',repos=NULL)), or if you feel hackerish and are running Cygwin or Linux (or Mac? haven't tested it there), you can grab the source, unzip, and type:

make
make install

After that, go into R, read the help file, and start a game!

library(nethackR)
?nethackR  # read some help files
?nethack   # read some help files
nethack()  # start a game!

You can even feed in nethack options:

nethack(dogname='Indy',catname='lolcatz',hilite_pet=TRUE,time=TRUE)

Enjoy! (and let me know of bugs, I'm sure there are some).

As a note - the package comes bundled with the Net Hack executable already. You may not feel secure running an exe that the package author (me) guarantees you is the actual NetHack.exe and not one filled with viruses. If so, download NetHack yourself and place it within the bin/your_OS-type folder in the nethackR folder of your R library. your_OS-type is either 'unix' (for Linux and Mac) or 'windows' (for Windows). That way you can be sure the executable is safe.

Onward NethackRs!

RIP yet another character!

Extra rambling (mainly for R people):

This was mostly an exercise in writing R packages - it was the first one I ever wrote and wanted something fun to motivate me.

It turned out to be much easier than I thought - you can just call system('nethack'), and R takes care of the rest, even the interactive part - it's as if I'd just run nethack from the terminal instead.

However, I then took this to Windows to test, and if I used the GUI console for R (Rgui.exe as opposed to Rterm.exe), NetHack would start but hang my system until I forcibly closed the NetHack.exe process using the System Manager.

I figured out the solution today by looking at the help file for system in R in Windows (turns out the help file is different in Linux and didn't include this all-important information) - turns out I can't run interactive (text) programs in Rgui, it just doesn't work.

So instead, if the user uses Rgui, the package will launch a command prompt from which the user can play.

Wednesday, 15 February 2012

11.10 Oneiric: "Bad password" and rtlwifi

Today my wireless decided to stop working (under Linux; it of course worked in Windows).

Whenever I tried to connect to a network, it (wicd, that is) would spend ages on the "authenticate" stage before eventually saying "Bad password". Of course, the password was correct. "Bad password" seems to be a generic error wicd gives you that covers all manner of actual errors.

Looking at dmesg | tail, I'd get a whole bunch of:

[  134.347782] rtl8192c: Loading firmware file rtlwifi/rtl8192cfw.bin
[  134.686790] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[  135.037001] rtl8192c: Loading firmware file rtlwifi/rtl8192cfw.bin
[  135.376045] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[  135.548216] rtl8192c: Loading firmware file rtlwifi/rtl8192cfw.bin
[  135.887744] ADDRCONF(NETDEV_UP): wlan0: link is not ready

...and so on.

lsmod | grep rtl yields:

rtl8192ce              84775  0 
rtl8192c_common        75767  1 rtl8192ce
rtlwifi               110972  1 rtl8192ce
mac80211              462046  3 rtl8192ce,rtl8192c_common,rtlwifi
cfg80211              199630  2 rtlwifi,mac80211

And lspci | grep -i network gave

04:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)

After ages of googling, I found this bug, actually a Fedora bug, that sounds a lot like mine.

Looking through the various attempts at fixes, etc, the only one that worked for me was:

ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up

I know the first line switches off my wireless for a bit, the second sets the mode to 'monitor' (whatever that means??!!), and the third switches it on again, but I have no idea what this all actually means.

It'd love to have an understanding of what was wrong and why that fixed it, but I'll definitely settle for having it fixed :).

Tuesday, 7 February 2012

Indicators in Oneiric

New annoyed-with-unity-o-meter (indicators made me feel happier):

Indicators

Today I discovered about Indicator Apps. They are just like the applets of GNOME 2 that I could add to my panel, except they're upgraded for GNOME 3 instead. They all sit up the top-left of your screen.

Also, instead of having a nice, single list of these applets where I can choose which ones to add to my panel (like in old Ubuntu), they are now....all over the place.
You basically have to look them up on the internet, add a new repository for each one, install it, and then manually run the program each time you start up to get it showing (well, I lie; you can add them into your auto-startup list to have them runn on their own).
I found this page very helpful in giving a list of the most popular indicator applets and how to install them. Then, this page gives a much bigger list of applets (although less helpful in how to install them).

Installing Indicator Applets

Since they're not in the standard ubuntu repository, you usually have to update your list of repositories that Ubuntu looks in to get packages.
Let's do an example with the Workspace indicator, which sits in your top panel and lets you switch between workspaces.
Going to its launchpad page, we see "Use this ppa for install: ppa:geod/ppa-geod".
launchpad page for inicitator-workspaces
sudo add-apt-repository ppa:geod/ppa-geod
Then, we update the list of available packages and install indicator-workspaces:
apt-get update
apt-get install indicator-workspaces
But wait! You're not done yet! Go to the dashboard and actually start the indicator. Then it will appear in your notification tray. If you right-click this one and look at the preferences you'll also see a "Start indicator at login", which you should check, if that's what you want.
Workspace switcher indicator.

List of applets I added.

  • Workspace switcher: add-apt-repository ppa:ppa/geod and apt-get install indicator-workspaces.
  • System Load Indicator - you can just apt-get install indicator-multiload this one.
  • Google Reader Indicator: lets me read my rss feeds from the panel. add-apt-repository ppa:atareao/atareao and apt-get install google-reader-indicator.
    google reader indicator (top left icon)

User menu/indicator

I don't like the "User Menu" (the little person and your username up the top left) - it only has "switch user" etc and I'm the only user on my laptop, so it just takes up space.
To remove it, go to dconf-editor and apps>indicator-session, and untick 'show-user-menu'.
Log out and back in to have it take effect (or just do unity --replace).

Current snapshot

My current snapshot is:
Left to Right: Dropbox, Google Reader, System Monitor, Workspace switcher, Messages, Battery, Volume, Date/time.

First tweaks to Oneiric Unity

These are the first things I did to Oneiric to try make it more palatable to me.

Fed-Up-With-Unity-O-Metre:

After all the tweaks so far (left is "happy", right is "argh downgrade to 10.x or use Classic Ubuntu!":

Terminal text

The terminal text is this fancy different font. I just want the normal monospace. No big deal this time --- Terminal -> Edit Profile -> General -> don't use system default font, change to Monospace size 10 (my preferred size).

Wireless icon not there/network manager not showing networks

I can't seem to get any wireless. The wireless icon I expect is not in my notification area like it used to be. When I go into System Settings > Networking > Wireless, I get no network names detected, and the 'Configure...' button is greyed out. ifconfig and iwconfig do yield the expected wlan0 interface though.

I used to have wicd installed (and apparently it still is) but I can't see the tray icon, so I go to my "Dash", type in "wicd" and open up the Wicd Network Manager (as an aside: wicd-client and wicd-gtk from the command line didn't open up any visible interface, what's its command?).

Woohoo! I can see networks and connect to them! The reason the in-built network manager wasn't doing anything is (I guess) that wicd is managing all the networks instead.

My problem was not that wireless wasn't working, but just that I can't see the wicd wireless indicator in my notification area.

So, how do I get it showing?

Following this answer, I install dconf-tools, and then run dconf-editor. I navigate to desktop>unity>panel and add Wicd to systray-whitelist. As an aside, if you want to allow any tray icon to appear, use 'all'.

Then I log out and back in. Hey presto!

Wireless slowing down startup

Another thing I noticed is that when I start up the laptop, it spends forever on the startup screen (purple-black with "Ubuntu" and the dots underneath) saying "waiting for network configuration...", followed by "waiting another 60 secondsmore for network...", ended by "starting up without network configuration". However, my wireless does work (with wicd, I don't use the standard network-manager).

Looking at this post which references this answer on this bugreport, it does appear that this is a bug, and you may get it if you upgrade (you won't get it from a fresh install) (?). The solution (the usual DANGER THERE BE DRAGONS disclaimer):

mkdir -p /run /run/lock
rm -rf /var/run /var/lock
ln -s /run /var
ln -s /run/lock /var

What these do:

  1. make directories /run and /run/lock
  2. remove directories /var/run and /var/lock
  3. create symbolic links: /var/run points to /run, and
  4. /var/lock points to /run/lock.

Argh! This didn't solve my problem. To be continued.

Argh I hate hovering over the bar to open up my application!

I do like that the side launcher hides itself when you're not using it, giving you more screen real estate. I also like the Mac-style merging of the top bit of any given window (with the min/max/restore/close buttons and the window title) is merged with the File/Edit/etc menus.

Unfortunately the side-launcher hiding means that when I want to switch between programs I can't just click on its icon and get there instantly --- I have to hover my mouse at the side of the screen to get the launcher to show, and then select my icon.

I have a few alternatives:

  • I can press the meta key (windows key for my laptop) and it will show the side bar. I'll stick with this for a while --- it's a pretty good alternative. This is enabled by default.
  • I can remove the autohide on the side bar to have it permanently show. I might do this on my big laptop, since it only takes up a small amount of horizontal space and the screen is big enough that I only worry about vertical space.

For completeness:

Disabling autohide on the side bar.

Option 1: use ccsm.

ccsm is the compiz config settings manager. You can sudo apt-get install it. (I already had it from my previous incarnation of Ubuntu).

Go to the 'Ubuntu Unity' plugin and you can set "Hide launcher" to "Never", or you could change the "Edge Reveal Timeout" to something small to get the launcher to autohide but appear instantly when your mouse goes to the edge of the screen.

Option 2:use dconf

(This is what I was initially going to do --- I discovered the compiz method by accident whilst getting my Wobbly Windows back).

You have to use dconf again! It's annoying, because you should be able to just right-click the side launcher and select "enable/disable autohide". ahh well:

dconf write /com/canonical/unity-2d/launcher/use-strut true
dconf write /com/canonical/unity-2d/launcher/hide-mode 0

Alternatively open dconf-editor, navigate to /com/canonical/unity-2d/launcher/. Change hide-mode to 0 and tick use-strut to make it True.

While you're there, have a look at the explanation for hide-mode:

Possible values: 0: never hide; the launcher is always visible. Always set /com/canonical/unity-2d/launcher/use-strut to true when using that mode. 1: auto hide; the launcher will disappear after a short time if the user is not interacting with it. 2: intellihide; the launcher will disappear if a window is placed on top of it and if the user is not interacting with it

So to go back to autohide, change hide-mode back to 2 and use-strut to false.

You have to log out and in again for this to work.

Auto-login

User Accounts > Unlock > toggle "Automatic login"

Disable lockscreen

System Settings > Screen > toggle "Lock" off

I want my wobbly windows back :(

Install/run ccsm (I already had it from my previous version of Ubuntu) and re-enable.

Customising the messenger menu

It's that little icon in the notification area that looks like an envelope:

Easily launch and receive incoming notifications from messaging applications including email, social networking, and Internet chat.

I do like having the email notifications and functionality (the "compose email" opening up thunderbird is very cool (I set thunderbird as my default mail app)), but don't want the chat/evolution bit.

Argh --- I can't work out how to get rid of the "chat" bit and leave the "email" bit --- my only option is to remove the entire menu (sudo apt-get remove indicator-messages), which I don't want to do. Oh well.

Further tweaks.

This blog post is one I just found and it has a whole list of further tweaks.