A solução para este problema não é um script .xsession, mas uma sessão personalizada do gnome, assim como unity, unity2d, gnome-classic são todas as variedades do desktop gnome.
O arquivo de sessão
Coloque isso em /usr/share/gnome-session/sessions
e nomeie-o como docky.session
[GNOME Session] Name=Neither Ubuntu nor Gnome Required=windowmanager;panel;filemanager; Required-windowmanager=compiz Required-panel=docky Required-filemanager=nautilus DefaultApps=gnome-settings-daemon;synapse;
O arquivo xsession
Coloque isso em /usr/share/xsessions
e nomeie-o como docky.desktop
[Desktop Entry] Name=Docky Comment=This session logs you into Ubuntu Exec=gnome-session --session=docky TryExec=gnome-session Icon= Type=Application X-Ubuntu-Gettext-Domain=gnome-session-2.0
É muito trabalhoso descobrir quais coisas do freedesktop como DBus, policykit, gvfs devem ser iniciadas em que ordem, apenas deixe a sessão do gnome fazer o trabalho pesado e se concentrar no que é considerado essencial.
EDITAR : Funciona com o 11.04 e o gdm, mas o formato do arquivo de sessão foi alterado em 11.10, portanto, docky.session
precisa se parecer com:
[GNOME Session] Name=Docky RequiredComponents=gnome-settings-daemon; RequiredProviders=windowmanager;panel;launcher; DefaultProvider-windowmanager=compiz DefaultProvider-panel=docky DefaultProvider-launcher=synapse IsRunnableHelper=/usr/lib/gnome-session/gnome-session-check-accelerated DesktopName=Docky