Friday, February 08, 2008

krdc: falling in love all over again

Today's KDE4 application love session is all about remote access via VNC and RDP via the somewhat cryptically named krdc (which stands for "KDE Remote Desktop Client", in case you're wondering).

I remember back in the day when it only did VNC, and did it fairly slowly at that. At least it had a GUI, and it did get faster over time. A real watershed moment was when it gained RDP support: the rdesktop project accepted a patch to make it easy to XEmbed the rdesktop window in another window. This allowed krdc to provide some user friendly window dressing to the otherwise bare rdesktop window.

In fact, I remember applying the rdesktop patch manually to rdesktop and building it from sources before it the patch was available in their repository. I did this so I could keep using KDE on Linux where I was working. I would logg into a Windows terminal server box and using that one pesky Windows-only, doesn't run in WINE, but required app from there. Thank you, Tim Jansen for krdc and the rdesktop team for that wonderful little RDP tool!

Sounds like I was already deeply appreciative of krdc, no? Well, I was. However while functional, the krdc user interface wasn't the most gorgeous thing in the world. It looked like this:


krdc in KDE3


If you are wondering what to put in the text box there, if you clicked on the "Examples" line edit you'd get some instructions. So it wasn't all that bad, and it had a history of the machines you'd previously connected to as well. It could also detect VNC and RDP systems by scanning a given network block. Not bad ...

So when it looked for a while like krdc was not going to get any attention for 4.0 and it ended up rather broken I began to quitely despair. But then: enter the dragon .. I mean .. Urs Wolfer. Urs stepped up and gave it not only some interface love, but also made some important internal changes and added some truly sweet features.



You notice that there's the breadcrumb widget (again!) at the top of the window. You can select between vnc and rdp from the drop down, and type in the address of host next to it. As usual, clicking to the right of the breadcrumb gives you the traditional unadorned line edit.

But what if you didn't notice that little edit? Well, that's where the rather nicer looking intro screen comes from. (And yes, you can turn that off if you like.) It makes it really clear what you can do and clicking on one of the buttons sets up the breadcrumb, pops up a little help box and sets you on your way.

Once connected, though, that's when things start to be a bit different. In the screenshot above, you can see how the start page is in a tab. This is because each connection you make is put into a tab, allowing you to keep multiple sessions open in one window and switch between them easily. Tabbed browsing, meet vnc and rdp. Tabs were my first reason to fall in love all over again with krdc.

In both versions of krdc, as with most vnc/rdp tools, you can switch to full screen mode. In kde4's krdc a rather pretty little widget sits atop the screen in full screen mode offering a selection of tools. When not in use it slides out of the way (though you can also "stick" it open so it doesn't slide out). There was a top-of-screen widget in KDE3's krdc as well, but it wasn't as pretty, nor quite as functional. krdc in KDE4, for instance, can take screenshots of the running session. Easy access to the special key input interface, minimize and other such tools makes using vnc or rdp rather nice and easy.

I also noticed that KDE4's krdc doesn't try and scale connections to lower resolutions in full screen mode. In KDE3 the tendency to scale by default led to pixely slow views.

Speaking of speed ... krdc now uses libvnc to do it's vnc magic. It is noticebly quicker than it was in KDE3, and I'm guessing it's at least in part due to this switch. Speed is goodness, and I love goodness. =)

krdc now also sports bookmarks, session management (so you can restore your open connections automatically when it starts up again) and much more via its configuration dialog. Just as in KDE3, it can use KWallet to store your authentication information as well.

Not all is perfectly rosy in krdc-land, though: the scanning feature seems to have gone AWOL. Hopefully this shows up again, perhaps using ddns/zeroconf/bonjour/avahi/whatever-the-cool-kids-are-calling-it-today. The tab bar also lack the usual new and close buttons on it (these are in the toolbar above instead), the welcome page could be a bit more helpful by doing a bit more than just popping you to the breadcrumb ...

... but given than krdc was without home and master for so long, I'm just happy it got such a solid KDE4 port to get things rolling. Well, that's selling it short, really: tabs, beauty and speed also came along for the ride. Thanks, Urs! =)

23 comments:

kontakt said...

Hi Aaron,

krdc is nice, but it lacks the support of NX. In my opinion it would be nice, if krdc have NX support in the argumentation of UNIX: one (perfect) tool for the task ;)

Leo S said...

Wow. You're just cranking these out. Nice work. I love krdc as well.

uwolfer said...

NX support is on my TODO list. I hope to get it done any time soon.

marseillai said...

"Tabs were my first reason to fall in love all over again with krdc."

You can not know how i trust you, and how i would be happy to fall in live with dolphin like you fall in love with krdc.

Some patch allready exist for that it's easily do-able, it's easy to make it transparent for user but even if many people ask it it's still not include......

Tío Rubo said...

uwolfer said...
NX support is on my TODO list. I hope to get it done any time soon.


w00t! Now that's good news :D

arendjr said...

"A real watershed moment was when it gained RDP support: the rdesktop project accepted a patch to make it easy to XEmbed the rdesktop window in another window. This allowed krdc to provide some user friendly window dressing to the otherwise bare rdesktop window."

While I've only been a KDE contributor in some occasions, and mostly just to scratch some personal itches, I still like to read the Digests and planetkde.org and it's nice to see how some contributions are still valuable to others so far down the road.

Having to use a Windows application from my Linux desktop at my previous job was exactly one of those itches, and the reason I implemented RDP support in KRDC :)

Have fun, and keep up the good work!

Cheers,
Arend jr.

Anonymous said...

It is so sad to see you high-praising a Remote-VNC-Client-App (VNC being the only option to remotely access KDE, RDP is for remote-accessing Windows only), while at the same time developing a KDE4 framework (Plasma) that completely sucks with remoting.

It is even sadder to remember that there was a time (years ago) when you boasted in your blog that you was working on a remote NX client for KDE, but you never-ever released one line of code for that.

So it is no wonder that you are not even _mentioning_ NX any more....

segedunum said...

It's far, far better than the old KRDC interface, but I've never been 100% keen on applications asking me questions. I agree with making the application more browser-like, and this is coming from someone who basically lives in Microsoft's RDP client a lot of the time. Using bookmarks is a great idea, especially for those who have a lot of machines they connect to.

The only thing it needs is NX support, and I personally think that NX should basically be the default and assumed terminal services connection method. It's great.

Aaron J. Seigo said...

@anonymous: "while at the same time developing a KDE4 framework (Plasma) that completely sucks with remoting."

i'm glad you brought that up. here's the scoop:

i wanted to balance the needs of modern client side hardware with the needs of thin client solutions.

the former wants bling and animations and all sorts of nice eye candy. the latter just wants a screen that can zip over the network as fast as possible.

people interested in "remoting" as you put it pretty much kept the screws on the interface people so our interfaces continued to look like something out of the mid 90s. good job! ;)

so when designing plasma i made the sourcing of image data centralized, i made the animation management centralized ... you know why? so it could easily be modified and throttled *centrally*.

as of this past week plasma now respects the new desktop global animationsEnabled setting and turns off *all* animations automatically when that is set.

as of this past week Plasma::Theme detects current colour depth on the screen and opts for locolor alternatives in the SVG theme.

we can, and will, do even more, such as continue to track down repaints and other such round-trippings (we rooted out many of those in the last few months already).

this way plasma doesn't screw over the modern world while also being able to degrade gracefully to that which will fit down today's pipes. pretty neat, huh?

and yes, these design decisions were purposeful from the start to make it possible to do this.

so you're judgement is wrong from the design perspective, and you managed to be just a few days late from the implementation POV since we now have the locolor and animation negation actually working (which would never have been possible had it not been designed with this in mind, btw)

happy?

Anonymous said...

OK, my judgement may have been wrong from the design perspective.

I reserve my judgement about the implementation (from a user's point of view) once I've used it.

Given that I can't daily-use KDE4 or Plasma even _now_ (due to Konqueror's inability to use proxies in general, and SOCKS in particular -- which "features" sadly extend to pretty much all KDE4 and big parts of KDE3 applications), even if it has acquired some more stability meanwhile... this will probably have to wait for another year.

Haha, your accusation of the "people interested in remoting" being responsible for keeping the screw in interface people is... ridiculous and bizarre.

To tell the truth, _noone_ _with_ _any_ _influence_ on GUI developments in the Unix world was really interested in remoting X11 in the last decades. That's why.

That's why the built-into-its-genome capability of X11 for remoting did so much deteriorate. That regress and stunt was so bad that even the originally not-at-all-remote-capable Win32 platform overtook Unix with its own splendidly retro-fitted RDP.

GUI developers on the Unix platforms stultified the remoting capabilities by their own free will and lack of foresight... the few who had need and interest in remoting did not at all have enough say in the last 15 years to hinder the GUI masters from their endulging into all sorts of bloat and useless bling that added so many roundtrips to remoting applications...

Happy, I?

Far from it. Happiness 'bout this topic I'll start to feel again if I can see progress in action, arriving at my own desktop.

Too long I've seen the remoting neglected (I'm a veteran in this industry carrying ~25 years of experience and of mistakes on my backside). A few years ago NX arrived on the scene, and these guys proofed that the potential in X11's genomes is still there, and that the atrophy _could_ be reversed in general. Some people saw and recognized these prospects (according to your historic blog entries, even you did at one point). But alas, that dawning is already being lost again.

You are living proof for this. Even after being challenged, you still manage to avoid mentioning NX.

Aaron J. Seigo said...

Win32 is irrelevant in this discussion, so why you even bring it up is beyond me.

As for interest in thin client applications, yes, i will tell you as a software implementor that those interests keep their voices very vocal and whenever something might violate that precious space they scream and holler, just as you did here.

Has that kept all software in line? Obviously not. But for those of us who do try and care about these things, trust me, the "must be thin client friendly" camp have done pretty much *nothing* to find a way to make the two worlds (thin and thick client) coexist nicely without sacrifice.

It's one of the things i'm happy about with Plasma: it doesn't require compromise on other end.

As for NX, yeah, it's cool, interesting and useful. It's not the end-all, be-all either. All the same I hope I see even more of it.

My main responsibility is Plasma these days, however, which is why I addressed those issues. I try and stay out of useless ratholes like the one you laid with "wither the NX?!"

Honestly, if you want us (software devs) to take into consideration the needs of thin client, you'd be trumpeting efforts like plasma rather than giving me grief here. Why? Because it gives you want you need while keeping the rest of society happy at the same time.

There are very, very few pieces of software that have managed this.

In KDE4 (4.1+, anyways) we even have a global "turn off animations". So KDE in general is sensitive to this issue.

Your annoyance is misplaced.

Anonymous said...

uwolfer: I can't wait for NX support. Thanks for a REALLY stellar and great app. I look forward to Krdc's future.

What's the current status of Krdc through the KDE Windows Project?

Anonymous said...

MS Win32 isn't irrelevant in the discussion about remoting capabilities. Because it is your/our main competitor and adversary. But whom do I tell this?!

Oh, 't was you yourself, who pointed at RDP, and his once existing need to access a Win32 application, 't was you who opened the possibility to argue about X11 remoting when you express your love for an application that does VNC and RDP remoting, but not X11...

You're normally a very intelligent and reasonable guy, just how the reason to use Win32 as a comparison can escape you right now is beyond me.

I pointed at MS Win32 because that platform had _not_ built in any multi-user and remoting capabilities at its inception. Unix/X11 had. Win32 was single-user and local computing ('PC', remember?) from Day 1....

Yet meanwhile MS Win32 has left behind X11 when it comes to remoting! And this despite your so-highly-praised and efficient thin-client-pressure-groups that were all over you and tried to keep the GUI guys sane...

It would be interesting to see how the NX guys react to your association of their efforts with a "rathole". But, fear not, I'll not point them to your blog and this arrogant attitude of yours. I'll let you alone with this now.

As for the Plasma goodness that now is in SVN according to your assurances: I do believe you. But nevertheless I do reserve my final judgement until the day it arrives on my own desktop. I did believe a lot of people already (including you) in the past 25 years, and a lot of times I had to change my final judgement nonetheless.

Yes, and if I haven't to change it this time, I'll trumpet Plasma, promise! Otherwise I'll just stay quiet (like I do with KDE4's current incarnation).

I'm sorry if my reminders give you grief. That is not my intention.

Anonymous said...

hey aaron, just ignore the trolls

use your energy for something better, use it for plasma ;)

Anonymous said...

(a bit off-topic but couldn't resist!)

To all Apple fanboys

Apple shamelessly steals design ideas from the Germans.

And then every Apple fanboy always says how innovative Apple products are.

Aaron J. Seigo said...

"Yet meanwhile MS Win32 has left behind X11 when it comes to remoting!"

what they do have is nicer management tools and a better network use by default (NX fixes that, however)

"And this despite your so-highly-praised and efficient thin-client-pressure-groups that were all over you and tried to keep the GUI guys sane..."

indeed; see, the pressure put on us was all in the wrong places. "keep the UI easy to send over the wire!" was often leveled at those of us working on desktop apps instead of at the X people. it wasn't for NX, we'd be in a very sore situation. it's been frustrating to watch the efforts in keeping remoting well supported placed often in the wrong places.

"It would be interesting to see how the NX guys react to your association of their efforts with a "rathole". But, "

you misunderstood the sentence. i referred to your "what about NX?" statement as a rathole in the context of plasma (which was your original, off-topic, rant). i think NX is great, i don't hold your original comment in the same esteem.

"do believe you. But nevertheless I do reserve my final judgement until the day it arrives on my own desktop."

that is completely fair =)

Fabien said...

Yes, NX support will be great.

(And in my dreams, to see NX protocol in'upstream into xorg ...)

segedunum said...

Haha, your accusation of the "people interested in remoting" being responsible for keeping the screw in interface people is... ridiculous and bizarre.

He's right. Some of us are old enough (and you don't need to be that old) to remember when Unix-like systems were among the real contenders for desktop usage in the nineties, and any chance they had was scuppered by not accepting the client. The traditional Unix crowd wouldn't accept that things like games and 3D was happening, and lots of other things were happening on the desktop (hence SGI's capture of the expensive Unix workstation market).

They believed that they could carry on their own merry way, and it didn't matter what Microsoft or anyone else did - if they said it was a standard, that was enough. A lot of what has gone on these days is slightly reminiscent of that.

That regress and stunt was so bad that even the originally not-at-all-remote-capable Win32 platform overtook Unix with its own splendidly retro-fitted RDP.

Excuse me? RDP, and more specifically Terminal Services, is an absolute kludge. TS happened (or rather Microsoft took it over) because Microsoft saw remote desktops and applications for what they were - a very serious threat to their business model, and the need to keep the distinction between client and server.

You have always been able to remotely run any X application through a very simple command. Granted, you need a good network to do it (NX proves you can do something with the X protocol though), but that is simply not the case with TS and Windows.

jramskov said...

What I would like to see is a simple and secure remote desktop feature like what WinXP features. If a person needs help, he can send an invitation to a friend which can then create a remote desktop session to that person. It's great for when I need to help my father with something and if I'm ever going to switch him to running KDE instead of Windows, I'll need something like that.

Aaron J. Seigo said...

"he can send an invitation to a friend which can then create a remote desktop session to that person."

the program is called krfb (KDE remote frame buffer) and it comes alongside krdc (KDE remote desktop client). horrible names, great apps. =)

jramskov said...

Well, the keyword is "secure". I can't find much documentation on krfb, but I doubt the session is encrypted.

ale.cx said...

I have used KRDC every [working] day since September 2007. krdc4 in is in my opinion a step back from krdc3. Where krdc3 got out of your way and let you work, krdc4 is in your face all the time with a toolbar, an address bar, a start page, a status bar, a tab bar, etc.

I can no longer just type in an address and get connected [eg rdp:/10.10.2.4] - "The entered address does not have the required form". Well? What is it? Is the 'required form' some kind of secret? Why not tell the user what the required form is in that popup? Why doesn't the form indicated in saved bookmarks match what one would type in the address bar?

How do I get rid of the status bar? On a 1024x768 screen, every pixel counts. I've never ever seen any useful information in the status bar. If you're going to force a status bar on users, at least put something useful in it, like perhaps the contents of the clipboard, or a connection duration timer.

Why do I have to have the tab bar? I rarely have more than one session open at a time, so a tab bar is another waste of screen space to me. I appreciate tabs are the best MDI going, but I would like the option to hide it when I'm not using it [ie when I've got <2 sessions open].

Why can't I disable the start page by clicking on the red 'X' in its tab? Surely the program knows my intention when clicking on that 'X', is to get rid of the start page?

All of that aside, I appreciate your hard work on the KDE project, and think that KDE has come on in leaps and bounds since 4.0.

Epicanis said...

Okay, I know this post is half a year old now that I've stumbled upon it, but what the heck...

I found the post looking for news of NX in krdc. It looks like it hasn't yet made it into kde 4.3, but the feature schedule still says "in progress" so I have hope. I've gotten completely addicted to NX in the last year - and for the haters out there, I can testify that a full KDE 4.3 session (with rational limits on "Desktop Effects", obviously) works great even over my meager 384kbit outgoing line.

(I'd also love to see krdc able to use the fish:// ioslave or something similar for remote filesharing - I've never managed to get the Windows-style "Samba" sharing to work...)