WSX: Virtual Machines in Your Browser

Updated March 13, 2012 at 10:43PM: I have a list of limitations and known bugs toward the end.

Updated March 14, 2012 at 9:30PM: I’ll be on the VMware Community Roundtable podcast at 12:00PM PST today, where I’ll be talking about WSX and jumping into a little more detail.

Updated March 20, 2012 at 10:15PM: A lot of people are confused, so I want to point out that WSX is not AppBlast. That’s a separate project with separate goals. WSX is a remote console built using the same underlying technologies as Workstation and Player. It’s also not a front-end for View. I can’t speak for any of those projects’ goals and plans.

Virtual Machines have always been a great way to work with different operating systems, carry your desktop around with you, and manage lots of servers or configurations. In the past, you’d run the virtual machine on your computer and then use a product like VMware Workstation or Player to interact with them.

In Workstation 8, we introduced the ability to share VMs across a network with other copies of Workstation, and to use VMs running on ESXi/vSphere. You could use any computer in your network to reach any other VM and to manage your servers. I covered this in a previous post, and as I said there, we were very proud of this release.

Still, the world is evolving fast, and more people are moving to tablets and smart phones. It doesn’t mean the end of desktops or servers, but it does change how people are accessing their data and applications. And their VMs.

Get to it already


I’ve spent the past few months on a prototype, one I’m proud to say we’re shipping as part of the Workstation Tech Preview. It’s currently called WSX (name may change in time), and it brings your VMs to your tablets, smart phones, and any PC or device with a modern browser.

WSX is installed as a mini web server in your network and serves up an interface for accessing your Workstation Shared VMs and your VMs on vSphere/ESXi 5. You can power your VMs on, off, suspend them, and interact with them. All from a web browser, and all without plugins, with nothing to install on the client end.

This means that you can walk into the Apple store, pick up an iPad right off the shelf, and in less than a minute, start using your desktop back home. (Of course, provided you’ve port forwarded your WSX server so it’s accessible outside your network.)

How does it work?

WSX makes use of some modern web technologies, such as HTML Canvas and Web Sockets, along with a small but powerful server to turn your browser into a full-on remote console. The WSX server talks to your Workstation, ESXi, and vSphere instances and relays the appropriate data up to the client running in the web browser. With that data, the client can stay updated with the latest changes to the VM and offer a full display of the console. We don’t use any plugins, meaning there’s nothing to install.

It’s known to work with the latest versions of Chrome, Firefox, and Safari. It also works with the Internet Explorer 10 preview (though I’m still working on some bugs there). And for tablet users, it works quite well with the iPad running iOS 5+. Android users running Ice Cream Sandwich may get some luck with Google Chrome for Android, but I’m still working on Android compatibility.

A lot of work has gone into making this pretty fast. If you stream a 720p YouTube video inside a VM and access it from Chrome or Firefox on a modern PC, you should see near-native quality and framerates. It’s not as fast streaming to an iPad just yet, but you’ll see some impressive changes there before long.

On some modern browsers, you can even make your desktop go full-screen, just like you can with Workstation.

Note: There’s a bug on the iPad today with the on-screen keyboard where capital letters and punctuation are a bit broken. I’ll fix it!

Tell me some use cases

Sure thing.

  • You can work on your documents from your iPad from anywhere, knowing your data is safe in your network and not on some desktop streaming service company’s VM somewhere in their datacenter, not worrying about what may happen to your data if their service is down.
  • If your server is acting up while you’re at the store, you can connect to your VM from your phone/tablet and deal with it instead of rushing home.
  • Play Windows Solitaire from your iPhone.
  • Confuse people by running a VM from within a browser from within a VM from within a browser from within a VM from within a browser from ……
  • Have your presentation or demo live within a VM so that when your laptop dies at just the wrong time, you can grab anyone else’s laptop or iPad and quickly resume where you left off.
  • Have your iPad set to sync music over the network with a copy of iTunes running in a VM, and then use the same iPad to interact with that same copy of iTunes without ever involving a PC or Mac.
  • Run Windows 8 in your VM full-screen on your iPad, so you can confuse everybody.

As WSX evolves, so too will the use cases. I’m personally very curious to see how people will be using it.

Installing WSX

Right now, WSX ships with the Workstation Tech Preview for Linux installer. You’ll be asked for a port (defaults to 8888), and then it’ll install once Workstation is installed. Make sure you have the python2.6 binary installed on your system, or it won’t run! (This is a temporary limitation.)

Now there is a bug today where the installer won’t start the service for you. You’ll need to do:

    sudo /etc/init.d/vmware-wsx-server start

After that, you should be able to point your browser to http://localhost:8888/. If you want to reach your VM from outside your network, just port forward this one port in your router and you’ll be set.

You’ll log in with your system’s username and password. No need to create a new account.

Windows is another story. We don’t have a build out just yet, but stay tuned on this. I’ll make an announcement when that’s ready.

What’s the plan going forward?

I can’t speak to our long-term plans, but as I continue to work on the WSX tech previews, my main goals are to make it faster, improve browser compatibility, and make it easier to interact with your VM. This means gestures (two-finger scrolling in place of a scroll wheel on tablets), gamepad controls (play Portal 2 on your iPad!), multitouch, and whatever else we can figure out.

These are my goals, and not necessarily those of VMware’s, so don’t hold the company to anything I say here!

Limitations and Bugs

There are some known limitations and bugs in this build of WSX. Please remember, this is a new prototype, and is not a finalized product!

  • You must have the python2.6 binary installed on Linux for this to run.
  • On the iPad, the on-screen keyboard is currently a little broken when it comes to capital letters and punctuation (anything involving Shift, basically).
  • We use the on-screen keyboards on mobile devices, which don’t contain things like Control keys, function keys, etc. So for now, those keys aren’t available. Looking into proper solutions here.
  • There’s no sound. Sorry if I confused some of you! There’s some things we’re waiting for in modern browsers before we implement this. No ETA or promises from me.
  • You can run against Workstation 8 Shared VMs (I think?), but you won’t see as good performance. Same with ESXi VMs.


If you try playing around with WSX, I’d love to hear about it. This has been a pet project of mine for the past few months, and I’m pretty excited about it. Yes, there are rough edges that we know about and will be smoothing out as we go forward, but I think it makes for a great prototype, and certainly one I’m starting to love using.

VMware Server beta 2

We just announced VMware Server beta 2 today, which is without a doubt a vast improvement over beta 1. Aside from over 60 critical bug fixes and over 150 non-critical fixes, we’ve also added support for using the Server remote console to connect to GSX 3 hosts.

However, I should point out that those using GSX 3’s remote console to connect to an ESX machine won’t be able to use Server for this purpose. I’m looking into a possible co-install solution, but another option is to run the GSX 3 remote console inside a VM, such as our Browser Appliance VM.

I’ve personally done a lot of work on Server, and am quite proud of it. This should be a good release, definitely better than beta 1. We’re working hard on the next release, though I can’t say when it will be out.

In other VMware news, I just found out today that we launched the VMware Company Store. Though I wish they had mugs, at least now I can get some presents for my grandparents who I know have been wanting some VMware things to collect (they’re so proud of me! Awww.)

And I might as well take this opportunity to mention that our Virtual Appliance Challenge is still going, and we’re hoping to get some good entries. Though I don’t know what level of quality existing entries have reached, there are some appliances I’d personally like to see for my own use:

  • A development environment appliance for GNOME or for the Nokia 770.
  • A project site appliance containing Trac or Bugzilla, Apache, MediaWiki and WordPress, all set up with some kind of a common theme framework (so that I can modify one set of files and each will update).
  • A well-done kids appliance that I could give to my sister, containing a very simplified and kid-friendly UI, Tux Paint, Tux Typing, a locked down and controlled copy of Gaim (so that she could talk to me), a stripped-down word processor, and other games and educational software. Cute screensavers, wallpaper, sounds, etc. The nice thing here is that it could be snapshotted and then if the kid messes it up, the VM could simply be reverted.

For those who are wondering (I know many people do), an “appliance VM” just means a virtual machine with a specific purpose, rather than a generic “This has a GNOME desktop in it!” VM. Anyhow, that’s enough of that for now. Back to working on the next Server release.

Medals, concerts, and super gates

  • Olympic Medal

    A few days ago, an Olympic medal winner, Valerie Fleming, paid us a visit at VMware. It turns out she has family there. Small world. A bunch of us, including Alex Graveley and I, were allowed to wear the medal. We of course took pictures. Many were taken with digital cameras, hence the quality issues on some, but one co-worker managed to get some decent pictures with a good camera.

  • Concert

    My brother and I are attending a Dream Theater concert tomorrow. It promises to be very exciting. It’s actually my first concert, and I’ve been a fan of Dream Theater for years. I should be meeting up with my dad and brother tomorrow, spend the day doing whatever, and then head to the concert. Is anybody else in the area going?

  • Stargate SG-1

    Last year, I ranted a bit about how bad the new Stargate SG-1 season was starting out. I gave it the benefit of the doubt, though, and continued watching it. Aside from some lame plots spread out throughout the season, I’ve grown to like it and where it’s going. The season finale was tonight, and left me on the edge of my seat. I can’t wait for next season to see what’s going to happen. The new enemy, the Ori, is actually a good replacement for the Goa’uld, and for once, it looks like the good guys have a chance of not winning. Of course, this being a popular TV show, the good guys will win, but at least there’s finally a real challenge.

I present to you, VMware Server 1.0 beta 1

Wow, what a ride. We just put out this morning (or late last night, depending on time zone) beta 1 of our new VMware Server product. Now you know why I’ve been saying “I’m really busy, can we discuss this later?”

Yes, this is the one that you may have heard rumors about on CNET, Slashdot, etc., but those sites didn’t all have the facts right.

What VMware Server Is:

  • Free virtualization for servers.
  • A way to give people free virtualization with the hope that they’ll consider eventually moving up to ESX for the enterprise.
  • Based on VMware GSX.
  • The successor to GSX.
  • Capable of 64-bit guests, Virtual SMP, new guests like Ubuntu, auto-detect devices, etc.
  • Capable of opening Workstation 5.5 VMs.
  • Available for Linux and Windows hosts. It should be the same set that Workstation 5.5 works on.
  • Ported to GTK2 (using a slightly more evolved Workstation 5.5-based UI).
  • Beta!

What VMware Server Is Not:

  • A stripped down or crippled version of VMware GSX. Server has even more capabilities than GSX did.
  • A replacement for Workstation. VMware Server has no support for multiple snapshots or team functionality, and while Server is a server product, Workstation is a good desktop and development product.
  • A replacement for Player. Player is still high on our priority list, and we useful for the average person who just wants to run VMs.
  • A response to an apparent Xen or QEMU threat. While Xen has potential, it’s primarily just a hypervisor, and we’ve had one of those for ages. The interesting work is built on top of that (as XenSource, another proprietary software company, is doing).
  • A sign that VMware is doomed. I’ve heard this one a lot, and it just makes me chuckle. This should be taken as a sign that we’re doing pretty good. How many companies have the insight and abilities to give away their products for free and still make money?
  • A dead product before it begins. I don’t think there’s a worry about that. We’ve put a lot of effort into it so far, and are already hard at work on beta 2.
  • A money sink for us. We’ll be making money through optional support contracts.

I’m especially proud of this product. I’ve invested a lot of time into it, and so has everybody else involved. I’d like to thank everybody who has had to put up with me telling them I’m too busy for this or that lately ๐Ÿ™‚ We’ll be working hard on getting this to a mature 1.0 state.

A few project updates

I’ve been putting off several posts for a few days now, due to just being busy with things. So, here we go.

Notification Framework

I just put out a couple of good releases of notification-daemon and libnotify. A few days ago, I released version 0.3.2 of both components, and tonight I put out notification-daemon v0.3.3, which contains a few nice bug fixes such as a fix to prevent notifications when the screen saver is active or when something is running full-screen. The style of the notifications has been changed to resemble the look from notification-daemon v0.2.x. It now supports theme engines, so that other looks can be developed. The protocol has improved and stabilised a bit, and the API and general code of both components have been cleaned up, thanks to J5’s work.


Galago’s been on hold lately due to work and trying to get the new notification-daemon and libnotify ready for distros. Development has picked up again, and I’m hoping I have very little to do before I can put out the 0.5.0 releases of all the components. Finally, libgalago will be GLib/GObject-based, and the API will be a lot more sane. Plus, Python bindings! Yay!

Oh, and I’m moving to Trac for our bug tracking (see This is real nice, because I can now reference bugs in commit messages and they’ll close automatically with the commit message. It’s also quite clean and easy to use. I’m slowly moving some bugs over, but I’ll continue to monitor the bugzilla for a while.


Remember those screenshots of our tag integration I posted? It too has been on hold, but it’s far from vaporware. We’re calling it leaftag, and I think our logo is somewhat cute :). I have very little left to do before the library is released, and I should be able to redo the Nautilus support quickly. I’ve been using the tagging almost every day. Now I just need to find the time to get this ready. Maybe at one of these upcoming hackfests I’ve been doing (and really hope to do more) with friends.


Busy busy busy, but good. I’m working on some pretty exciting stuff. More about this later ๐Ÿ™‚

Oh, and someone needs to remind me to put up a picture of our cool new Workstation 5.5 sweaters featuring Mario!

VMware Player 1.0 Released!

As of yesterday, we’ve released the final version of VMware Player 1.0. Up to now, VMware Player has been in beta, so if you’ve been using it, it’s time to upgrade.

For those who haven’t heard of VMware Player, I’ll give some details. The Player is a program for Windows and Linux used to run existing virtual machines. If you have a VM created with Workstation or through a third party VM creator program, you can run it in the Player. It won’t be slower than in Workstation, it won’t have a time limit, and it won’t nag at you to purchase a product. It’s a free program so that people can see the power of VMs and make use of them in their day-to-day activities. If you decide later to buy a more powerful VMware product to take advantage of VM creation, snapshotting, teams, etc, that’s entirely your choice ๐Ÿ™‚

There is a FAQ discussing several questions such as redistribution rights of the player.

We’re now starting to link to interesting virtual machines built by the community. Want to try Fedora Core 4? Download a VM and the Player and start using it without setting up a new partition and rebooting. There’s AstLinux, an open source PBX. The links on the left of the page will take you to VMs created by other companies. These include the Ubuntu Breezy VM, SuSE and Novell Linux Desktop, amongst many others.

There is also our Browser Appliance VM, which is designed to provide basically a jail for web browsing, instant messaging, and e-mail. Useful to give to your kids so that they won’t mess up your computer ๐Ÿ™‚ We’ve had this for a while, but it’s recently been updated, and we now even provide a bittorrent of the VM.

A search for “VMware Player” provides over 2 million results. There’s a number of good links that show up, including VMs provided by others and third party tools.

About a year ago, I had plans to purchase a computer for my little sister so that she’d have a desktop of games that she could use without having to touch the family computers. Instead, I’m going to less expensive route and will be building a VM of games like Tux Paint. I can now put the VM on the computer and install VMware Player, and she’ll be set. Or maybe stick them on a 1GB memory stick so that she can play her games anywhere she goes… once I’m confident she won’t lose it ๐Ÿ˜‰

libview 0.5.5 released!

Another release to talk about. As promised, libview 0.5.5 was released. It’s mainly a bug fix release with a couple of API additions. The highlights are as follows:

Release Notes:

  • Fixed a bug in UIGroup where Merge wouldn’t call Unmerge if the group was already merged.
  • Fixed a bug where deactivating the AutoDrawer while it was moving would not do the right thing.
  • Added support for keeping the AutoDrawer open while the focus is inside it.
  • Added support for setting an alignment in the Header widget.
  • WrapLabel now wraps properly when being passed text in its constructor.