Xpra the Hidden Gem

Every once in awhile, I run across a really amazing piece of software that just knocks my socks off. Today was one of those days. I use the Arch distro for Linux, so I like to watch for new updated software on AUR. AUR is the community run repo where user contributed builds get uploaded, voted on, and maintained.

Today I came across the entry for xpra-winswitch. Usually if I see something with a strange name like that click on it and see what it is in the details. I did so in this case and it said "Modified version of xpra by Winswitch" not very descriptive for me. So I followed the link to the website and the first thing I read was "screen for X". If any of you are familiar with screen or tmux, you will quickly understand why I almost fell out of my chair.

This is simply awesome. They have a Windows install so I download it to my laptop to test it out. I quickly installed the Linux version on my desktop, read through the docs to see how to start the apps up using this new found wonder.

You can start the application up on the host by issuing a command like xpra start :1 --start-child=command. The first time I couldn't get any applications to load because pusle audio was attempting to load along with the application so I had to load the session with the --no-pulseaudio flag. I already had SSH running on the Linux machine. On the laptop all I needed to do was plug in the information and bam the application showed up directly on the desktop.

At first I had my doubts about the performance my test application was just xterm and it ran fine. I wondered how would say a browser work over a connection like this. I fired up the command again and ran Epiphany a Gnome3 web browser and it worked flawlessly.

Here is a screenshot of Epiphany running over xpra on Windows 7.

Next my wheels really began to turn. I use Burp almost daily so I wondered if it would be possible to have one instance running and move it from computer to computer using this tool and what would the performance be like.

So next I loaded up Burp on the desktop. Then connected to it using my Windows laptop, to my surprise it looked just like I had run it locally and the performance was as if it were a local application as well.

Here is Burp Suite Free Edition running over xpra on Windows 7.

Here is the same session connected by xpra to Arch.

So what can we do with this? Bascially, I can load a Burp instance and share it back and forth between two systems. This is sometimes necessary for me when I want to demo something for someone over a screensharing tool that is only available on Windows.I could simply start up an instance of Burp on the Windows system but that takes time and if I have extensions that need to be loaded I have to do all that as well. Locally this would also give me a way to detach a Burp session and have it hidden away from the desktop until I want to work with it again.

I was using vnc to accomplish the same thing before but I had to share out my entire desktop instead of a single window.

Xpra is really the perfect solution, I just can't believe I haven't even heard of it until today. I am greatly pleased that I did though.

I forgot to mention if you are on the local machine after you have started a session and you want to attach the session it's as simple as typing xpra attach :1 if you want to detach from the session just hit ctrl+d in the console or xpra detach :1

I hope someone enjoys this application as much as I have so far.

comments powered by Disqus