Exporting KDE on Slackware to a remote host over TightVNC

Tili recently got me a new laptop. It is a Dell Inspiron 1501, running Microsoft Windows Vista. I bet people are going to strangle me to death for saying this (and I myself hate to have to say it), but I really do like Vista. I don’t like it enough, though, to do everything on it. 90% of the major work I do is still done on Slackware. In fact, I have a couple of convenient things configured on Vista.

I installed Slackware-12 on the headless Dell desktop a week ago. KDE is galloping like a horse on steroids. I already have my old yet faithful Thinkpad T21 booting Slackware-11 on which I do most of the development work and other assorted stuff that really has some significance for me. The SVN repos are hosted on T21, plus Kmail runs from there. Also, all development servers run on it, including MySQL, Django, etc. As part of the migration plan that has taken the back-seat for now, I have duplicated some of the more important stuff from T21 on the desktop on account of a failing hard-disk on T21, which is really very bad news for me. Even though T21 is scarce on resources, it runs KDE pretty fine.

On both the Slackware systems, I have vncserver setup to launch KDE. I have to invoke the server once at boot-up. I could automate the process, but for now, I am content with keeping it manual, since there are times when I only boot up one of the systems for shell access. (I use TightVNC on slackware which I build from sources using the slackbuild scripts provided by the fine folks running SlackBuilds.org)

On Vista, however, I have VNC sessions opened up to both the Slackware systems. Not only am I using Vista for browsing and IM’ng, I am doing all of the major work on two different KDE sessions over VNC. And that is actually pretty cool.

Anyone who has configured TightVNC on Slackware knows that it comes configured by default to start TWM, which is a simple Window Manager. For power users, TWM is sufficient. However, I tend to use my Slackware systems as desktop systems, and TWM is just not enough. I want KDE on them.

If you, therefore, want TightVNC to start KDE, for example, instead, you need to edit your ~/.vnc/xstartup to look like this:

#!/bin/sh
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
startx &

Of course, do note that you must first tell startx(1) to load KDE by running xwmconfig(1).

Hosting the remote desktop over an VNC session isn’t the only way to export your desktop to a remote machine. You can do something close to this through what is known as X11-forwarding, but with a lot of effort and pain.

Previously, in what has turned out to be the most popular post in terms of hits received, I described a way to remotely access the GUI running on a remote Linux box from Windows (or another Linux box, for that matter). The method I highlighted in that post makes use of the XDMCP protocol — the X Display Manager Control Procotol (I think, for I am too lazy to expend the few seconds it would take to Google up what XDMCP stands for). While that method worked for me, and it does work, it is very messy to set up, pretty unstable when used, and requires the use of third-party tools like Xmins or Cygwin. For my case, Xmins proved sufficient, but, to be honest, apart from the one machine I got it to work, I couldn’t manage to get it to work elsewhere. I don’t remember why.

Of all these, the solution that uses VNC is the easiest to set up. Your mileage, however, may vary.