View Single Post
Posts: 1,101 | Thanked: 1,184 times | Joined on Aug 2008 @ Spain
#1
Hi all!

I was tired of how bad qtnx works (Fn key doesn't work, crashes, only can run either gnome or kde sessions, etc), so I decided to have a try at it.
So, here it is: snx, written entirely in shell script (bash syntax), a command line NX client, able to run commands, any desktop, or even funnier things.

Notes:
The package and its dependencies (xmodmap, wmctrlm xbindkeys and x11-utils) are provided in extras-devel repository, for both N8x0 and N900.
In N8x0, you are advised to install Telescope to avoid problems managing NX windows. With the default diablo task switcher, some NX windows can be "lost" if minimized because they do not show an icon in the taskbar, Telescope will show all windows, fixing that problem.
In N900, some remote windows don't receive the input focus (a known problem with the N900 window manager). You can press Ctrl+Return to toggle fullscreen state and give the input focus to the active window.
Although it is a NX client, it won't use nxserver, nxssh protocol or the nx account. It just uses your regular ssh account. It works even if nxserver is not configured, as long as nxagent is installed in the remote server.

Advantages:
Very easy and fast to use. No setup.
Keyboard works fully
You can run single commands in rootless mode (default) and have the remote windows managed locally (to run several programs, launch them from a xterm)
You can run any remote desktop.
You can fullscreen the desktop window and the remote program windows with the fullscreen key

Limitations:
It requires a bash compatible shell in the server's user account (/bin/sh linking to bash is syntax restricted and doesn't work, it must be /bin/bash or /bin/ash...).
Actually you can run just one client session per server. This might be improved in the future.
Actually it doesn't run on desktops because it doesn't manage X cookies. This might be improved in the future.
It doesn't run persistent sessions, disconnecting or closing the NX desktop window will close the remote session. This will be improved in the future.
Only X remote sessions and programs. No vnc. No rdp.

Usage:
Open a xterm and type
snx user@host[:sshport] [command]
Type the ssh account password when asked.
For example: "snx user@host firefox" will open a remote firefox
The command is optional, if none is provided a xterm will open.
The sshport is optional, you can use it if the host ssh server is listening in a non standard port. Standard ssh client file configuration also works with snx.

To run a remote desktop:
snx -d user@host start_desktop_command
For example: "snx -d user@host startkde" will run a remote kde3 desktop

To avoid typing your ssh account everytime, you can set the NXHOST environment variable
export NXHOST=user@host
Then you can just type
snx [-d] [command]

Server side:
snx fails and you can read a message like: Server says: Error: Aborting session with 'Unable to open display 'nx/nx,link=modem,accept=127.0.0.1:1011''. This is due to a bug in your nxagent version. NX 3.4.0-14 binary packages from NoMachine are known to have this bug. You have to install newer packages from your distro to fix it.
Opensuse: Install the NX-3.4.0 package from X11:/RemoteDesktop OBS repository.
Ubuntu:Follow the instructions here https://help.ubuntu.com/community/FreeNX You need to install at least nx-common, nxagent, nxlibs and nxproxy packages (freenx packages are not really needed, but it doesn't hurt to install them either)

Last edited by maacruz; 2011-08-24 at 11:15. Reason: Make clear it is bash scripting
 

The Following 17 Users Say Thank You to maacruz For This Useful Post: