rdesktop icon indicating copy to clipboard operation
rdesktop copied to clipboard

GUI for rdesktop

Open hean01-cendio opened this issue 8 years ago • 9 comments

It would be really nice and usable to create a gui frontend for rdesktop. Either a standalone or builtin using GTK or equivalent GUI toolkit.

Through times there has been many UI frontends available but many of them have moved away from rdesktop in favor of freerdp. However still, rdesktop is a graphical application and requires X11 so its is not optimal to only have a terminal interface.

The main advantage is that an UI would simplify how to choose between different authentication methods and other options that is now passed via command line. Also it would be nice to launch rdesktop without an terminal active.

With that said I personally think the approach should be to port the X11 ui code over to GTK to start with and then take the UI dialogs, starting with the login form and options.

Another approach would be to include and ship one of the numerous frontends for rdesktop, they widly differs in quality and many of them is not only rdesktop but to manage connection using different programs eg: vnc, freerdp etc.. Those mulit manager is out of question due to they are to generic.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

hean01-cendio avatar Aug 17 '17 12:08 hean01-cendio

Do you have an approximate layout in mind? Maybe some points to the old/modern GUI? Or what'd be better is a pointer to the most appealing layout with comments what to do differently. I don't personally need it but some people want a list of servers to connect to. Maybe some sort of history too. Maybe even a tabbed connections (each tab is a connection to the separate entry in server list)

uglym8 avatar Aug 17 '17 13:08 uglym8

I'd also check for Remmina. AFAIK presently it supports FreeRDP but I can't see any obstacles to add optional (maybe user configurable) support for rdesktop. Truth to be told though I don't carefullty check the sources yet.

uglym8 avatar Aug 18 '17 07:08 uglym8

Btw, stumbled upon this one: http://www.muflone.com/remmina-plugin-rdesktop/english/ https://github.com/muflone/remmina-plugin-rdesktop What do you think?

P.S. It compiles and works at first sight. Got resolution problems but I think these could be justified by me using i3 wm. I'll recheck it later using more conventional DE.

uglym8 avatar Aug 18 '17 15:08 uglym8

Hi all, one of the Remmina maintainer here.

First of all thanks for having considered the option and for keeping rdesktop active!!!

We have never included the rdesktop plugin, just because it uses an xembed mechanism to reparenting the rdesktop window in the Remmina connection window. As Wayland (and around) are advancing, without being critic, pro or against it, it's not a good idea to develop something that will have an hard time to survive or that would be a niche perse (as we are just 2 devs).

So, we've never chosen rdesktop because it's mainly not a library that we can embed the GTK way.

That said, it's true that we are quite glued with the FreeRDP project (we are even under their main project), but we are really open to any protocol implementation and we are independent, so if you like the idea we could help out and support as far as it's feasible (and with our limited resources).

BTW, with or without Remmina, consider the idea to implement the library part of rdesktop, so that several other could jump in and help out.

So I really hope you want at least discuss this opportunity with us at any extent.

Antenore and Giovanni ( @giox069 )

antenore avatar Oct 09 '17 19:10 antenore

Hi @antenore and @giox069 or should I say "Ciao"?:)

I'm not sure what road we're eventually gonna take with rdesktop GUI but if it will be Remmina I'm absolutely sure that we'll contact you for the guidance if the need arises. Thank you in advance.

What exactly do you mean by "consider the idea to implement the library part of rdesktop, so that several other could jump in and help out"? Are there any guides or examples available?

Again, thank you and best regards.

uglym8 avatar Oct 11 '17 20:10 uglym8

We have an hello world plugin, but it doesn't show exactly how we use a library. The best is to take a look to the RDP, SPICE and VNC plugins.

What I mean is that it would be good to have an rdesktop public API, so that we don't need to execute the rdesktop binary and embed the rdesktop window in our Gtk widget, but just use the redsktop API to draw in the remmina connection window.

This would be useful not only to Remmina, but also to other projects that would like to implement their own RDP client, using your APIs.

It would be useful for you as well, because you can separate the protocol implementation from the GUI and you can implement different UI using different toolkits.

The only big issue it's the time/effort needed. Honestly I even don't know from where to start :-P

I hope I was clearer this time.

Let me know in the case...

antenore avatar Oct 11 '17 21:10 antenore

Just to clarify further what we means by "consider the idea to implement the library part of rdesktop": the idea is to split a single rdesktop executable in two different parts: a library which is independent from Xorg libraries, audio subsystem, keyboard/mouse and if possible, portable to win/mac/android/iOS. This library (.so file) should implement the RDP protocol and provide an API to applications (the desktop clients). The second part is the application, which handles all communications between Xorg, wayland, pulseaudio and the RDP library. I don't really know if rdesktop is a monolitic executable or it can be split or is already split... so I could be wrong :) But the above is what we would like to see to have a new plugin/protocol in remmina. As an example the freerdp project: they have libfreerdp which handles connection and all RDP protocols. libfreerdp provides an API to the upper desktop clients. Clients are available for Xorg (xfreerdp), Wayland (wlfreerdp), windows (wfreerdp), android. iOS, and MacOS. Remmina is just another client on top of libfreerdp. These clients uses the libfreerdp API to access RDP funcionalities: I can call functions like "connect to server", I can receive notification of screen updates, mouse cursor changes. Libfreerdp also keeps a complete bitmap of the remote image, so in Remmina we don't do too much to process graphical commands: Remmina just receives from libfreerdp an update event which tell us which rectangle of the bitmap to redraw. We can also ask libfreerdp to send us GDI primitives, so we can draw faster using the appropriate cairo (and thus accelerated hardware, as xfreerdp does). But currently Remmina only uses the software prepared bitmap provided by libfreerdp. A very similar approach is taken for the VNC protocol with libvncclient. Also please note that libfreerdp is not really 100% intependent from Xorg and pulseaudio, but it leaves to the client (remmina) the ability to use the provided audio and keyboard functions or to totally implement it on the client.

Now let's go back to existing muflone rdesktop plugin: the problem is that they are based on a specific Xorg feature, the Xembed protocol, which allows an external application (executable) to became a widget of Remmina. Remmina use it via GtkSocket and GtkPlug. There is no similar alternative for Wayland, so the only way for remmina to display a remote desktop in wayland, is to have a library which provides an API as explained above. The current Xembed method for embedding GUIs from other executables seems to be dead in wayland and not portable to other OSes.

I hope this can help.

giox069 avatar Oct 12 '17 07:10 giox069

https://github.com/olback/rdg-linux This is something I've been working on for the past few weeks. It doesn't have all the options yet and still requires a terminal to start it unless you make a desktop file. But it's something.

olback avatar Nov 21 '17 15:11 olback

i love rdesktop becuause command line light tools and i use for 10 client windows my system Arch linux and parrot-security and ubuntu and Blackarch

sjmars avatar Apr 15 '18 13:04 sjmars