The Arrival of NX, Part 5: Using NX

We know you've been waiting for it, so here's the next installment of our NX series. This time out, learn how to navigate with hands-on exercises that demonstrate all NX can do.

Things to Try with NX Testdrive Server

I hope you've succeeded to connect to one of the NoMachine testdrive
servers by now. As mentioned before, the testdrive servers aren't capable of handling a
ton of traffic, so you may not be able to try your own NX session
immediately after reading this article. But while you're on the site,
try a few things that don't work with the old FreeNX version contained
on your Knoppix CD, which we will be using for the next tests:

Use the key combination [Ctrl]+[Alt]+[f] to toggle
full-screen and
windowed NX session modes.

Use the mouse to drag the window border and resize the
NX session
window to any size you like, even in portrait shape.

These features are included in the NX Core libraries of the 1.5.0
release for the first time. They also work with older NX clients,
1.4.0-75 and 1.4.0-91, as they are included in Knoppix.

You also can familiarize yourself with a few other shortcuts that
work with the FreeNX server version included in Knoppix:

Click on the
magic
pixel located in the uppermost right corner of your desktop to
escape NX full-screen mode and minimize the window to a button hosted
in the task bar.

Use key combination [Ctrl]+[Alt]+[t] to terminate or
suspend your session.

Here are some neat tricks you may find useful in your future NoMachine
NX Client installations. You can start the NX Session Administrator with this
command /usr/NX/bin/nxclient --admin (Figure
15). This utility lets you comfortably
start new sessions, disconnect or kill running ones, view session logs
or remove old session files. Probably the most under-rated feature in
here is its capability to produce session statistics about the
efficiency of the NX protocol. Facts and figures compression ratios,
cache hits and misses as well as an overall summary are only one
mouseclick away. It's also a great tool for debugging sessions.

Most useful to administrators of sites that are planning big NX installations
with large numbers of clients may be the nopasswd, noexit and
noconfig special files. Create one or all of these as empty files
in /usr/NX/share/ with the touch
command and make sure the permissions are set to read-only:

The mere existence of these empty files lock down the NX client user
environment considerably. Try it for yourself: create the files and watch their
effect. Remove the functions again by simply deleting the files. You
should see the following:

file /usr/NX/share/nopasswd disables the functionality to save
the username and password in the NX session file. This is handy
when an NX terminal has multiple users and the administrator needs
to enforce the keying in of the NX user credentials before each
session. It ensures that only pre-established users can access the
NX server via NX client.

file /usr/NX/share/noexit disables all Close buttons in the
NX client GUI. When the user closes or loses a running session,
a new NX client dialog box automatically appears on the desktop,
ready for the next user to start a new session or for the current
user to re-connect to his lost session. This is welcome where
client terminals have multiple users who need to access their
session quickly and easily.

file /usr/NX/share/noconfig disables all user possibilities to
configure new session setups or modify existing ones. This allows
the administrator to completely lock down the types of sessions a
user can run. This feature works only when the NX client is
started with the --session or --plugin option.

A final hint: visit the excellent
NoMachine Knowledge
Base. There you will find a wealth of advanced
information about NX technology and its usage. The
FAQ section and the
collected articles may
save you a lot of time. Also be sure to check out the
NoMachine
support and
resources
Web sites rather than rely only on Google search results. I want to warn readers:
Google digs up many outdated pages on NX, several of which are plain
wrong in their advice to (Free)NX users.

The next installment of this series, Part 6, will show you how to run
the FreeNX server from a Knoppix CD. Moreover, it will introduce you to
a simple method that lets you emulate a slow modem link on the Knoppix
loopback network device. It also will teach you how to run a side-by-side
comparison of an NX session with an Xnest session to see some NX's
speed improvements over traditional X11 remoting.

Kurt Pfeifle is a system specialist and the technical lead of the
Consulting and Training Network Printing group for
Danka Deutschland GmbH,
in Stuttgart, Germany. Kurt is known across the Open Source and
Free Software communities of the world as a passionate CUPS evangelist;
his interest in CUPS dates back to its first beta release in June 1999.
He is the author of the KDEPrint Handbook and contributes to the
KDEPrint Web site.
Kurt also handles an array of matters for Linuxprinting.org and
wrote most of the printing documentation for the Samba Project.

I have a local linux ws and a remote one sitting across in a different continent where I need to do extensive Java development using Eclipse IDE. I have been using NX for quite sometime now and it is working very well for me. This series of articles have clearly explained why.

I've probably installed freenx and nxclient a dozen times, and each time it has been a hellishly difficult process. One can do a vanilla install on two hosts on the same LAN, with virtually everthing set up correctly, and still get the dreaded "Using auth method: publickey / Authentication failed" message. So my conclusion is that it might be better to seek other ways of remotely accessing machines at this point than freenx.

"I've probably installed freenx and nxclient a dozen times, and each time it has been a hellishly difficult process."

I can second that, I had to install freenx on some machines last year and the configuration almost drove me crazy. The same client asked me to update these machines to the new nx server. I tried to install it on some local machines and it went very smooth!

thanks for the great series of articles about FreeNX which you publish here.

One thing tho, to which I never found a solution on the nomachine site or elsewhere:

When using the rdesktop feature from a Windows NoMachine client to a FreeNX (Debian-based) server (as proxy) to a Windows 2003 server at some client's site, I don't get a german keyboard layout - no matter what I choose in the NXclient. Even after adding german locales (and setting them as default) on the Debian proxy, there's no way to change that. Using version 1.5 didn't make a difference, and, suprisingly: when using the client on Debian (english desktop) as well, all just plain works [TM]!

Hey Wolfgang,
I'm getting the exact same bug i think: I connect with a Windows-NX-Client (2.0.0.98) to a SUSE linux machine with recent FreeNX straight from nomachine.com and the f***ing Keyboard layout will only be English! Even though i have on both machines German-Keyboard as default, and also selected "German" in the NXClient.

This bug shouldn't affect the NoMachine NX server and, as far as I can say, it is not a bug of nxdesktop, as nxdesktop uses the keyboard correctly, according to the settings of the remote X server.

On Windows the keyboard settings are downloaded by the NX server to the client upon session startup. This is a feature of NX server that is activated whenever the remote X server is unable to handle the keyboard initialization locally, for example if the X server lacks the XKB tools and related keymap files. This makes much simpler to create thin client setups where only the X server is deployed, without the X libraries and the additional tools (as in the NX client for Windows).

I don't know how FreeNX handles this but the feature was implemented in November 2004. There was a long thread in the NX project's mailing list and Fabian and Kurt should have received copy of it. It shouldn't be difficult for the FreeNX guys to implement this in the same way as it is implemented in the NoMachine NX server.