Archive:Getting Started/Run/Nested Session

Jump to: navigation, search

Nested KDE 4 Session


Instead of using a full-blown new X session for developing software you can use Xephyr to run your development build of KDE 4 in a session parallel to your normal working session.

You can also do this with xnest, but as xnest cannot handle extensions like Render many people prefer Xephyr.

In some cases Xephyr/xnest will make the keyboard work incorrectly because of bug:19365. The workaround is to run KDE on a standalone X as described below.

Assuming you setup your build environment following the instructions in Getting_Started/Build/Environment, simply put the following script in ~/kde/src/run_kde_nested.

Xephyr :1 -screen 1024x768 &
sleep 3
export DISPLAY=:1
dbus-launch $KDEDIR/bin/startkde

Make this file executable. Entering the ~/kde/src directory should set up the required environment variables, so do that before running the script.

You can also use Xephyr with KDM via the Xdmcp protocol and simply a new KDE 4 session to KDM.

On Kubuntu, you can enable it by changing

# Whether KDM should listen to incoming XDMCP requests.
# Default is true

in /etc/kde3/kdm/kdmrc to

# Whether KDM should listen to incoming XDMCP requests.
# Default is true

Adjust your /etc/kde3/kdm/Xaccess to allow your local machine access. Additionally you should make sure to set up a port blocking policy on all external interfaces for the Xdmcp port if you are doing this on a laptop or a PC in an untrusted environment.

If you are done, simply launch Xephyr:

Xephyr -query localhost :1 -host-cursor -screen 1024x768&

where -host-cursor tries to reuse the host's cursor and -screen sets the screen dimensions.

If you get lots of refused connection errors, you might want to use the -ac option of Xephyr. When I tried to launch an application into the Xephyr instance, but I received 3-4 "No protocol specified", after finally saying "could not connect to X Server :1". The below code fixed it for me. It only happens when I am crossing users though, as opposed to doing it all in my main user.

Xephyr -ac :1&

Another option to try if you get lots of refused connection errors is you may need to grant access to your kde-devel user to your X server. Do that using:

xhost +local:kde-devel

If you do not have Xephyr, you can also use Xnest:

Xnest -ac :1& export DISPLAY=:1

You may run into this error:

Call to lnusertemp failed (temporary directories full?)
  Check your installation."

If so, try this:

mkdir /var/tmp/kde-devel-kde4

The above code assumes you work with user kde-devel.

This page was last modified on 31 July 2012, at 15:54. Content is available under Creative Commons License SA 4.0 unless otherwise noted.