Archive:Getting Started/Run/Shell
Using the normal shell with sux
For this method, the tool sux (http://fgouget.free.fr/sux/sux-readme.shtml) is required. sux is available on most distributions. Otherwise you could rely on the normal shell without sux method below. sux allows you to change to another user with an implicit managing of the X forwarding details (authentication and DISPLAY exporting) in a clean and simple way.
To login, type
sux - kde-devel
All environment variables and everything else should be set up correctly by your .bashrc. To start an application, simply type it's name; for example
kwrite
unset XDG_DATA_DIRS ; kbuildsycoca4
Using the normal shell without sux
The simplest method to launch KDE 4 applications is using su to login as the kde-devel user and then simply start any KDE 4 application from command line. To login, type
su - kde-devel
and then, after entering your password
export DISPLAY=:0
All environment variables and everything else should be set up correctly by your .bashrc. To start an application, simply type it's name; for example
kwrite
- run
unset XDG_DATA_DIRS ; kbuildsycoca4
sudo xhost +local:kde-devel
as your regular KDE 3 user to ensure that the application can connect to your current X session.
Although your X server should accept incoming TCP connections, this is often switched off as a distribution default (like with Kubuntu Feisty). When using kdm you must edit /etc/kde3/kdm/kdmrc as root and make sure it does not contain:
ServerArgsLocal=-nolisten tcp
Once you have fixed this, you will need to restart your X server. The xhost command should no longer return an "unable to open display" error.
For convenience, you should put this in the Autostart of your regular user. To do this, create a new file in the $HOME/.kde/Autostart directory of your regular user with the following content:
#! /bin/sh
xhost +local:kde-devel
Make sure that the new file is executable by using chmod +x on it.
If you'd like to find out more about the security issues involved with using xhost, see this article
Using SSH
The simplest way to run a KDE 4 application with SSH in your current desktop environment is to get an X-aware shell prompt as the kde-devel user like this:
ssh -X kde-devel@localhost
Now you can launch KDE apps as usual, for example:
kwrite
The two lines can be conveniently combined:
ssh -X kde-devel@localhost kwrite
Passwordless login
Before anything serious can be done using this method, a passwordless login needs to be set up. To start, run the following command as the regular desktop user:
ssh-keygen -t rsa
Hit enter three times to accept the path of ~/.ssh/id_rsa and an empty passphrase. Now, copy the single line in ~/.ssh/id_rsa.pub that's printed after running this command:
cat ~/.ssh/id_rsa.pub
After that line is copied, ssh back into the kde-devel user and put the copied line in the file $HOME/.ssh/authorized_keys:
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite \
$HOME/.ssh/authorized_keys
Paste in the line, save the file, and quit KWrite.
Next make sure $HOME/.ssh/authorized_keys has the correct permissions:
ssh kde-devel@localhost chmod og-xrw ~kde-devel/.ssh/authorized_keys
Now try running KWrite again with the same SSH command; you shouldn't have to enter a password anymore:
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite
chmod og-xrw ~/.ssh/id_rsa
The SSH desktop file
If you want to be able to launch apps more easily than running them with an SSH command from the command line, one way is to create .desktop files that ssh into the other account.
You can start with an existing .desktop file as a template (like one from your desktop) or you can make one from scratch. The main idea is to prefix the command being run with this string:
ssh -X kde-devel@localhost $HOME/kde/bin/
A simple .desktop file that runs KWrite would have the following contents:
[Desktop Entry]
Categories=Qt;KDE;TextEditor;
Comment=
DocPath=kwrite/index.html
Encoding=UTF-8
Exec=ssh -X kde-devel@localhost /home/kde-devel/kde/bin/kwrite %U
GenericName=Text Editor
Icon=kwrite
InitialPreference=8
MimeType=text/plain
Name=KWrite (kde-devel)
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-StartupType=Multi
X-DCOP-ServiceType=non
X-KDE-StartupNotify=true
X-KDE-SubstituteUID=false
X-KDE-Username=