Posted on

Announcing “Connections”: a modern remote desktop client for GNOME

Yes! Connections is a brand new app that I put together in the last month. It is a remote desktop client for the VNC and RDP protocols on top of the same backend code that we were already using in GNOME Boxes*: gtk-vnc and gtk-frdp.

The main motivation to write this application is to have a drop-in replacement for Vinagre** that is modern, easier to maintain and follows the HIG. Besides, we want to have a GNOME app to point users to when they ask for more/advanced remote-connection options in Boxes.

The app is at an early development stage where it can be tested and even used for simple remote connection tasks. I started filling issues in GitLab so others can pick up tasks that they might be interested in helping.

It basically has the same code base as GNOME Boxes for the protocol/display specific code, so you will likely get the same experience as with remote connections in Boxes today. Of course, the plan is for later to add more and more remote connection specifics to empower our users without cluttering our interface. That’s the GNOME Way™. 🙂

Connections can be downloaded from Flathub by clicking the button below.

Download on Flathub

For now, I would NOT encourage downstream packagers to distribute the application, since lots of it will change until our 3.38 (first stable) release. Flatpak allows for the control we need when starting the development of a brand new application, and this way we can strive for the best experience our users can have by delivering updates directly to them.

Putting GNOME Connections together wouldn’t have been easier without Flatpak, GNOME Builder, GNOME Boxes, Vala, and GTK. Our platform is becoming very accessible for native application development thanks to all these efforts. We all appreciate it! ♥

* These features will live in Boxes for some time to allow for user migration, but they will be likely removed by the time we will be releasing 3.40.

** Vinagre is now in maintenance mode and won’t be getting new features. Eventually, we will sunset it.

Posted on

Boxes now supports RDP connections

This blog post is outdated. After a couple of years we decided to move remote connections into a standalone application. GNOME Connections. Read more about it at https://feborg.es/announcing-gnome-connections

 

Boxes has been the go-to option for easy virtual machine setups in GNOME for quite some time, but some people don’t know that our beloved application can also act as a remote viewer.

The “Enter URL” option in the new machine assistant is how you get a new remote machine added to your collection. It supports addresses of Spice and VNC servers and oVirt and Libvirt brokers. You can also paste the URL of an operating system image (iso, img, qcow, etc…) and Boxes will download and boot it for you.

However, there is life out of our GNU/Linux boxes and we need to stay connected. Windows is extremely popular and it ships a RDP server by default, making the adoption of open alternatives a bit unhandy there.

Imagine you have clients running Windows that need your remote support, or you couldn’t convince your family back home to switch to GNU/Linux, etc…

Now Boxes also supports RDP!

Boxes - screenshot

This feature is powered by FreeRDP. For convenience, I wrote a glib wrapper around the essential freerdp API so we can consume it via gobject-introspection in GNOME Boxes and others could reuse it for their own applications.

Heavily inspired in the gtk-vnc API,  I decided to name it gtk-frdp. So original! 😉

If you are interested in writing a RDP client of your own, or maybe port an existent one to gtk-frdp, you can achieve it with a few lines of code such as below (I choose Python for legibility, but it could be any gobject-introspected language of your choice).

from gi.repository import Gtk, GtkFrdp

window = Gtk.Window ()
display = GtkFrdp.Display ()
window.add (display)

display.open_host ("192.168.0.1", 3389)
display.username = "username"
display.password = "password"

window.show_all ()
Gtk.main ()

That simple!

This and a few other cool features will be available in our next stable release, GNOME 3.30. Stay tuned!