Accessing my Ubuntu 9.04 Gnome desktop from the built in Mac OS X 10.6.2 VNC viewer took a bit of tweaking on the Ubuntu Gnome side. I have an OpenVPN SSL tunnel between the Mac and the Ubuntu desktop, however a SSH tunnel could also be used to protect the VNC session. In this post, I’ll just cover the VNC server setup assuming a secure connection between the Mac and the desktop.
Initially I followed the guidance at sanity, inc.”How to OS X Leopard Screen Sharing with Linux“, on Ubuntu I installed tightvnc:
apt-get install tightvncserver
Then tested it out by starting up the vnc server on the Ubuntu system as the user I want to run the remote session as:
tightvncserver -geometry 1024x700 -depth 24 :1
As tightvncserver starts up the VNC service, it will check for a .vncpasswd file in the user home directory. If it doesn’t exist, you will be prompted for a password to use to protect the remote session. Note VNC is not designed to be used for multi-user remote access.
On the Mac, rather than use Bonjour to automatically discover the Ubuntu screen sharing service, I just referred to the VNC session directly within Finder which invokes the built in VNC viewer. Enter the VNC session password when prompted and the Ubuntu desktop is displayed. Within Finder, either use Go -> Connect to Server or Apple-K to bring up the Connect to Server window. The server address is the URL that points to the Ubuntu VNC instance vnc://10.10.1.2:5901
where the port is 5900 + the display number specified when starting up the tightvncserver (5901).
This all worked fantastic, except for the keyboard mapping within Gnome – it was scrambled. After googling several possible solutions, the only one that was successful for me was to disable the keyboard plugin in Gnome
Amit Gurdasani wrote on 2008-04-28: #51
I’ve also encountered this issue with TightVNC and the hardy release. My solution was to capture the xmodmap -pke output as ${HOME}/.Xmodmap at the login screen (DISPLAY=:0 XAUTHORITY=/var/lib/gdm/:0.Xauth sudo xmodmap -pke > ${HOME}/.Xmodmap). When gnome-settings-daemon starts up and finds an .Xmodmap, it asks if it should be loaded — I answer yes. As a side effect, if gnome-settings-daemon were to be restarted without the .Xmodmap, it’d scramble the keyboard layout again. With an .Xmodmap in place, it’ll load the .Xmodmap every time.
Due to another issue (#199245, gnome-settings-daemon crashing with BadWindow every time a window is mapped), I disabled the keyboard plugin using gconf-editor, at /apps/gnome_settings_daemon/plugins/keyboard. Since it’s not being loaded, I suspect it might not garble the layout even if I remove the .Xmodmap now.
So maybe disabling the keyboard plugin is a better fix.
On the Ubuntu system, invoke the Gnome configuration editor (gconf-editor on command line), then navigate to apps -> gnome_settings_daemon -> plugins -> keyboard uncheck the Active keyword. Kill the VNC daemon and relaunch it – problem fixed.
pkill vnc
tightvncserver -geometry 1024x700 -depth 24 :1
Various methods exist to automatically start and kill the VNC server, but for now this will do it for me.