Remote X sessions on Nokia 770
Nov 17th, 2005 by RealNitro
Some topics on internettablettalk.com have great views on what the N770 might have to offer in the future. One nice possibility is forwarding X sessions to a N770. I started with forwarding Gedit from my pc to my N770, but later on I had a go at ‘oowriter2′ (OpenOffice.org 2 Writer), Supertux and The Gimp. My experiences about those apps on the N770 are at the end of this post. First I’ll tell you how to try it yourself.
Some basic requirements:
- a computer running the X-server and sshd (a decent linux box
) - a (fast) network connection between your N770 and the server
- openSSH for the maemo platform
To install openSSH on your N770, download the openSSH .deb package to your N770. Next,open an X-terminal, and gain root access. If the .deb openSSH package is on your mmc, navigate to it:
cd /media/mmc1/
And install openSSH (it doesn’t install using the graphical package installer):
dpkg -x ssh_*.deb /
Caution: make sure that your servers sshd allows X forwarding! Time to connect to the server:
ssh -X user@server
Change user to your login-name, and change server to your servers IP or domain name. The first time you log into your server from your N770, ssh wil ask you a question. Answer ‘yes’. Then it will ask your password. Enter it. You should get a command prompt as ‘user’ on your server. Time to execute a program! I use the Gnome desktop environment, and the default text editor (like notepad in Windows — but waaay better
) in Gnome is Gedit. The command to start Gedit from a terminal is ‘gedit’ (duh! :-p ). Execute
gedit
Give it some time to start, and you’ll see Gedit running on your N770! To try any other programs, just tap their commands into the terminal and have fun!
But there are a few downsides. The first big downside is text-input: The onscreen-keyboard does not appear when you put the cursor inside a text-field of an X-forwarded window. Copy-pasting text is possible though. Maybe people with working Bluetooth keyboards will be able to type some text. Is somebody willing to try? One other downside is that X-forwarded windows vanish when they are minimized. There seems to be no way to get them back, killing the parent program and restarting it is the only solution. (You can kill the parent program by bringing your X-term back up, opening ‘X Terminal’->’Terminal’->’Send Ctrl-some key’, and tapping the ‘c’ keyboard button.) The fullscreen button didn’t work aswell. Gedit just doesn’t recognise/receive the signal emited by that fullscreen button, I guess.
Beside those little anoyances, Gedit ran quite smooth. So I decided to start the OpenOffice.org 2 Writer. And it worked too! The gui wasn’t 100% snappy (i.e. scrolling was laggy), but it seemed fast enough to be usable. Later that day, I decided to give Supertux a try. (Supertux is a Super Mario clone.) The verdict: not playable. The bluetooth connection between my pc and my N770 just wasn’t fast enough to transfer all that graphical goodness without (a LOT of) lag. The Gimp suffers from the same problem. Drawing with your stylus is possible, but the result lags several seconds behind.
A possible solution for the lag problems would be to compress the data that’s being sent between the X-server and the client (your N770). A FreeNX-client would be great as the NX protocol is in fact a compressed (and secured) forwarded X-session. (FreeNX is a free alternative to NoMachine NX.)

Another solution to the latency problem is to use a GUI that is based solely on X primitives. What this does is minimize the amount of network traffic by having the client application on the remote host only have to send instructions over the network to the X terminal as to what kind of display screen needs to be drawn. This avoids sending all the pixel information. Remote displays which are merely pixel bitmaps are static anyway, and it is far better if the remote display is a data-driven, dynamic display that a GUI built out of X primitives is.
VNC has its advantages - it works great whether or not X is installed on the remote host. When X is installed on the remote host, however, VNC is not the best way to serve up remote displays. That’s what X is for and the development of the 20-year-old X Window System is far more intense today than at any time in its history. X has desperately needed the 770 or something very much like it since X was introduced to the world in 1984. Now that the 770 is here we all need to learn how to exploit X. That means how to write apps for it which make use of GUIs that are based directly on the X primitives themselves. That’s how to lower latencies and how to avoid having to use all the WWW layers when they are not appropriate. X is a network transparent windowing system and it can do a lot without relying on the Web. The Web does make X even more versatile, for sure.
Remote X sessions on Nokia 770
The exploration of the Nokia 770 as a remote device has begun.
…
I forgot to mention one thing. If and when you establish an icon on the 770’s display that contains the command to connect to a specific client application (which implies that it’s remote) you may have to also indicate that it is to leave the terminal window open. The display you open is displayed in a terminal window and you can be connected to two or more client apps at once - each one is served up in its own terminal window.
It is easy for a client app to present itself in a full-screen mode and without the window header at the top, too. In such a case the 770 user can literally have no idea that the application driving the GUI is somewhere else. In fact, when a 770 user can launch a remote app with the touch of an icon and doesn’t even have to know where the app is located then the 770 will have achieved a new standard in the ease of use and in usefulness.
Since I don’t have my 770 yet perhaps you can take the step of creating such an icon on the 770, one that launches a secure window on a remote app.
I guess the gedit typing problem is there because what you display are no GTK+ widgets, but plain X11 shapes. This way the platform can’t “know” you’re inside a GtkTextEntry, or one of it’s descendants (assuming Maemo’s GTK+ is patched somehow to tell the platform to display the keyboard widget when a GtkTextEntry got focus).
You could try using Dasher
@Gene Mosher
—
Another solution to the latency problem is to use a GUI that is based solely on X primitives. What this does is minimize the amount of network traffic by having the client application on the remote host only have to send instructions over the network to the X terminal as to what kind of display screen needs to be drawn. This avoids sending all the pixel information.
—
Where can I find some more information on this?
—
If and when you establish an icon on the 770’s display that contains the command to connect to a specific client application (which implies that it’s remote) you may have to also indicate that it is to leave the terminal window open.
—
I don’t think it will be necessary to leave the terminal open (or open it in the first place).
—
In fact, when a 770 user can launch a remote app with the touch of an icon and doesn’t even have to know where the app is located then the 770 will have achieved a new standard in the ease of use and in usefulness.
—
Even if the ‘bugs’ I encountered get solved, those remote apps will not be able to open any files on your device. The windows really run on the server, so they can only open files that are on the server aswell.
—
Since I don’t have my 770 yet perhaps you can take the step of creating such an icon on the 770, one that launches a secure window on a remote app.
—
I’ll give it a try.
try with the command :
ssh -X user@server -c blowfish -C
-c blowfish is a protocol for ssh less secure but enough
-C is to compress data transfert
i think with that it could be ok
may be the port of ssh don’t have blowfish (you can try without)
Remote X on Nokia 770: schreenshots
Due to the fact that the screenshot tool had a bug at the time I gave remote X windows a try on the N770, I could’t post any ‘proof’.
But, that screenshot-bug has been solved, and today I connected …
I don’t have a 770 yet so I really appreciate your willingness to try out these ideas on the 770.
A couple of points… Having data files remote to the 770 is as natural as having the apps remote to the 770. You absolutely want most of the data right where the app is running. If you don’t do that you have to pass data all over the network, and that is to be avoided. What you want over the network is to be minimized. The network should only be used to send new display info to your 770 and to pass info back to the app about how you are interacting with the display. Still, yes, there are some exceptional cases where you want some data local to the user. The primary purpose of the 770, though, is as a device to connect to the network, to serve up a rich user input experience (including voice which will be processed for command and recognition processing remotely) and to serve up a rich audio/video experience to the user (which now means all kinds of touchscreen applications).
Let me dirgress… There’s only one issue in technology which will always be an open window of opportunity and which will always remain an area where improvement is needed: the User Interface. For the first time we all literally hold this in our hands. It’s all based on free (GPL & MIT) software and it doesn’t cost us anything to participate, thanks to Richard Stallman. Nokia has built the device and, in the past week you’ve helped us all see how to readily connect to all those X apps remotely. Among the steps ahead are self-discovering icons on the 770 desktop. The 770 desktop becomes a self-discovering, self-organizing portal to remote X apps everywhere.
X is so neat because even many the people who built all those X apps generally didn’t understand that X had the ability to serve them up remotely as you have shown, and their touchscreen driven, too, without any realization of this by the app developers. So, the toolkits that have been used to build these apps weren’t designed with any thought as to how they would look on a touchscreen device like the 770. Such app development frameworks in the future will have to not only recognize this but be specialized to succeed in this new GUI context. Desktop users are looking for Open Office, yes, but all the people who don’t sit at a desk all day need other apps for the 770 - apps that haven’t been built yet. They need to be built quickly.
If you’ve browsed my web site you’ll see that this is what I’ve been up to since, probably, before you were born. I have another 30 or 40 years of work ahead of me, though, and now that the 770 I’ve been waiting for for several decades is finally here I need to change the way I go about things. Check your email in a couple of days for more about that. I’m not a programmer or sysadmin, you see. I’m a user, and I can’t respond to anyone except in that context, so if my remarks to you seem to come from a different level than you’d expect, well, that’s the reason, and it’s something I can’t avoid. This has its advantages to you, too, as I’ll soon explain. Meanwhile, just keep doing what you’re doing. You’re a key player in the next technomwenteling.
Spiffy
Well, it arrived earlier than expected. I had heard about the Nokia 770 and had a sense that it would be in popular demand (i.e., shortly unavailable after the press release). So far, so good. Built-in web browsing, secure e-mail
Wonderful! I am running xine via the USB, it drops frames and it does not support sound, but I double clicked and it runs in full screen!
I used -C but didn’t notice any difference in speed. Perhaps it only works with blowfish (which I was not using).
Very cool stuff, I was able to run firefox, even with extensions on.
iv got a new nokia 770 and want to connect to my brothers bluetooth phone without him knowing iv been told it is possible but dont know how please can anyone help me thanks carl