I talked a little while ago about working outside the box with Unity. At that time I gave a sneak peak into what I’ve been working here at VMware the past few months. Well, now everyone can see.
We just announced VMware Workstation 6.5 beta 1, the first public beta for Workstation 6.5. Among many other awesome features is Unity, a feature we introduced in our Fusion product (for MacOS X) which allows you to run your applications from your virtual machine on your desktop without needing to be confined to a big box representing the VM’s monitor.
Unity is available in both our Linux and Windows releases of Workstation 6.5 beta 1, and there’s currently support for Windows guests (Windows 2000 and up). However, it’s a beta so you can expect some problems. To help people get started, here’s a rundown on what you can expect from Unity in beta 1.
- Shaped windows
- Guest mouse cursors
- Proper window types for most windows (Menu, Dialog, Tooltip, etc.)
- Special effects with Compiz
- Virtual desktops
- Copy and paste between host and guest
- Start menu integration
- Window borders and badges
Seamless window integration
With the press of a button, the applications in your virtual machine will pop out and appear on your desktop, intermixed with all your native applications. These windows can stack in any order along with your native windows and will maximize, minimize, and close as you’d expect any normal window to. They’ll appear just like they would in the guest, aside from any borders or badges you have set to help identify the guest windows (more on that in a minute).
We do our best to set the window types on these windows to best reflect their type in the guest. This means that a tooltip from the guest will look and act like a tooltip in the host, as will a dialog, menu, etc. This is important for supporting the special effects provided by a window manager.
If your window manager has any special effects set for the windows, they’ll apply to guest windows. For example, users of Compiz will be glad to know that their wobbly windows will work for such applications as Office 2008 or Minesweeper, and your guest menus will still burst into flames when they appear.
There are a few cases where the effect isn’t as strong as with native windows. Due to the way we receive window updates and events, the display of a window will often update before we receive open, close or minimize events. We plan to make this work better for some event types in the next beta, but for now, I recommend choosing special effects that modify a window in-place (fire, fade-in, etc.) instead of one that zooms a window to a location for opening/closing windows.
Windows may not natively have virtual desktop support, but Linux does, so we felt it was important to make virtual desktops with Unity just work. You can place your guest applications across your virtual desktops. Maximize Office on one desktop, play a game of Solitaire on another, and reserve a third for your Internet Explorer debugging session.
Copy and paste
Copy and paste is an important part of any user’s daily work. We currently have support for copying and pasting text between host and guest. You can’t yet copy and paste images or other data, though.
Start menu integration
A desktop environment isn’t useful without the ability to get to your programs. We provide a little tool called Unity Helper that runs automatically and provides start menu integration. Simply move your mouse to the top-left corner of your primary monitor and the menu will pop down, providing a start button for each of your VMs in Unity. Click the button and your start menu’s contents will appear.
The start button will match the color of the Unity badges and borders that are set to help you quickly identify your VM.
This functionality is pretty new so there are some kinks to work out. For example, if you don’t have a top panel or your top panel is larger than 24 pixels, you might notice the window in a wrong location. This is a bug that will be fixed in beta 2. We’re also hoping to add more options for the location of this window.
Another useful tip is that you can use Unity Helper to launch applications in a guest via the panel or command line. Simply run:
$ vmware-unity-helper --run /path/to/vm.vmx c:\path\to\program.exe arguments
This only works if your VM is currently powered on and in Unity or if the VM is not open anywhere. It’s not a supported feature at this point.
Borders and badges
In order to help identify a window belonging to a particular VM, we have color-coded badges and borders on the Unity windows. The border goes around the window and fades from corner to corner, and the badge is a little VMware logo sitting on your titlebar. Both are purely decorative and optional. You can turn them on or off in VM Settings or change the color. The color will also match the start button.
Known bugs (and workarounds)
As with any beta, there are of course bugs that you may hit. Pay special attention to the first item on the list.
- Start menu problems after a crash. If there’s a crash, sometimes the start menu integration won’t work the next session. The trick is to exit Workstation (leave the VM running in the background), delete /tmp/vmware-$USER/unity-helper-ipc-*, and bring Workstation back up.
- Occasionally Unity may crash. This is a known bug when a guest window changes its type when we don’t expect it. If you hit this, don’t worry! Your VM is still running in the background. Just re-launch Workstation or Player and go back into Unity mode.
- Graphics glitches. Sometimes you’ll notice the background appearing when you close or minimize a window. We hope to fix this up for the next beta.
- Multiple monitors are not supported in beta 1.
- Drag and drop is not supported in beta 1.
- Due to a recent regression just before beta 1, there are graphical glitches for applications not on the current desktop.
- Some applications behave badly. Photoshop and Flash (the creation program, not the plugin) (ab)use windows all over the place, and so you’ll see windows where you wouldn’t expect them. Sometimes they don’t even get proper updates, making the UI unusable. We’re looking into solutions for this.
There’s more, but those are the main ones I can think of that people may hit.
Give it a try and feel free to report bugs in the user forums.
It would be so much better if the menu integrated with the native GNOME/KDE menu… It could be done by syncing Windows menu into .desktop files or XDG menu records in user’s $HOME and having a submenu for Windows apps… This popup menu is going to be quite annoying if you’re working with native apps (and so, native menu) too…
This was heavily discussed and a design was implemented. We ended up reaching a consensus that an alternate method was needed. I’ll try to provide a brief summary of the reasons.
1) Not everyone runs GNOME, KDE, or another desktop environment with an applications menu supporting the spec. These people would need an alternative.
2) In the case of GNOME, it would add three more clicks to get access to any application. Applications -> Virtual Machines -> VM name -> apps. It becomes very tedious quickly. In our setup, you simply click VM name and you have access to everything. When you’re frequently launching apps, the three extra clicks get extremely annoying.
3) The menu doesn’t really get in the way. It only appears when you bump up against the top edge of the screen in that corner, and it’s designed to appear below the panel, not steal focus, and disappear shortly after the mouse leaves. The plan for beta 2 is to allow the user to customize where it’s displayed, whether it’s a free-floating window, and allow for using a shortcut key to access the menu.
4) We wanted something that a person would only have to learn once and could use across Windows and Linux, rather than having to learn where to find their applications in each OS.
5) Integration into Windows would be even more messy than Linux, with three different start menu configurations to work with, each with their own problems when stuffing entries into the menu.
1) There are things we’d like to do down the road that wouldn’t work as well if we stuffed them into the Applications menu. This gives us control of our own destiny.
2) It’s actually harder than it sounds to put applications in the Applications menu properly without issues. My attempts to populate the Applications menu have failed, as after 3 levels of menus it no longer displayed anything. This may have been a bug in a particular version of the menu, but it was a showstopper.
It looks just awesome! You guys are doing an incredible job. If it was just a bit more… you know, sorta, kinda, like… open source. 🙂
But seriously, Fusion was the first application I have paid for in a veeeeery long time and I think that I may be convincing my boss to invest in some Workstations too.
As an open source guy myself, I’m all in favor of open sourcing programs, but well, I also like having food on the table.
We do try where we can, though. VMware Tools is now open source, as is libview (a collection of very useful widgets that make up parts of the Workstation and Player UIs), and our video and mouse drivers in X. There’s also other projects but they’re not Workstation-related.
Thanks for answering peters question with such detail. I appreciate the design trade offs you had to make. Just a quick comment. You mention “Applications -> Virtual Machines -> VM name -> apps”
This sounds like a design decision based on those who have multiple (windows) VMs. Personally, I use VMware to run just the one, so my ideal heirarchy would/could have been Apps -> Vmware -> Windows Apps. This obviously implies some opt-in/config on my behalf where I selected what vm to go in the menu, and what apps to expose.
You also mention vmware-unity-helper –run /path/to/vm.vmx c:pathtoprogram.exe arguments
“This only works if your VM is currently powered on and in Unity or if the VM is not open anywhere. Itâ€™s not a supported feature at this point.”
I guess a suitable compromise in my situation would be
1) Make vmware-unity-helper work whether the vm is running or not. I.e. always work
2) Ship a utility or some other means to install windows apps into the menu under the hierarchy I suggested above. Such a utility would write “vmware-unity-helper –run /path/to/vm.vmx c:pathtoprogram.exe” into the Exec line of the desktop file. Perhaps it could even get the icon and write that somewhere.
Anyway, I am proud I convinced my organization to buy multiple VMware licenses. You guys rock!
Yeah, we could shorten it in the case of one VM, but then as you said, it would have to be opt-in/opt-out. If you were to opt-in to this, which VM would get the One True Entry? What if you powered on an appliance and it added entries to the menu, but then you wanted to use your other VM? It’s tricky.
As for vmware-unity-helper’s –run option, the restrictions I mentioned are just a restriction in the current implementation in beta 1. I’m planning to improve this by the final release so that it just works as you’d expect, regardless of the state of the VM. It’s fully doable, I just am juggling a lot of aspect of Unity 🙂 What I’m then hoping to do is have a context menu with an “Add to Panel” option. It’s on my personal TODO list. We’ll just see how much I can get done for the release 😉
This looks sweet, really looking forward to upgrading. Fusion definitely spoiled me while I was working on the Mac.
Just upgraded to the Beta, and this rocks! Very nice work. I personally like the choice for the Applications menu, it works well and makes sense. One very minor glitch I’ve seen is that tooltips for the max/min/close buttons are cut off at the edge of the window.
When can we expect workstation 6.5 to be released?
Would you know if there are plans to move the thumbnails when running a team to the left or right of the screen instead of the top? It takes way to much vertical space on my laptop. At the sides instead of the top would be much better.
It seems that you could know a little about the development of VMWARE 🙂
I just have a question, if the FreeBSD is considered to be the host in the future, we get all sorts of linux supported, but since MAC OSX is based on BSD I thought FreeBSD will finally be supported as a host in the future.
Could you comment on this a little?
Jaro: Sorry, I can’t comment on what we may or may not do in the future. Partially because I just don’t know.
Dan: Same, can’t say when this will be out.
Mason: Known bug and we’re looking into the cause.
Do you know if Beta 2 will be released without forced debug logging? It slows the vm too much when using it compared to the 6.0.3 version?
How can I get a Linux guest on a Windows host to allow Unity mode?
I was wondering if the Unity feature will be available in the free VM Player?
One more question:
Will Unity support the cpability of “drag and drop”?
So I was thinking I would have explorer window from Guest open and explorer window from Host open and “drag an drop” between the two – possible?
I would like to see a command-line option for workstation that allows me to tell it to boot up in Unity mode automatically. I personally would probably use Unity mode 95% of the time. In addition, after booting up my machine, I usually automatically boot up my Windows VM so that it’s ready for me when I need to load a Windows program.
Is this something that VMware has considered as an option?
Matias: Can’t comment one way or another on future plans for what will be in other products.
Francisco: That doesn’t work today in beta 1.
Mark: In time.
Rich: You probably want the Workstation-bundled Player. You can run vmplayer -U /path/to/foo.vmx
when photoshop runs properly, i will begin using linux full-time as a desktop environment. as of the last 13 years or so, its only been a remote dev platform for me.
oh, and make sure you support wacom tablets. very important for photoshop work!
I don’t know what the state of wacom support is (it likely won’t work as well as you’d like yet in Workstation 6.5) but we’re working on making Photoshop and other apps work correctly.
what about running unity with vista host and ubuntu guest? I cannot get the unity button enabled in workstation 😦
Where could one find a copy of that wallpaper?