When I first started using Dragon, I was bummed to be restricted to Windows. Fortunately, there are lots of ways to work around this limitation and use it with whatever operating system you want. I’ll cover the method I use and describe some alternatives.
My home set up is simplest, because I cheat and just use Cygwin to provide a UNIX-like environment. This lets me launch GUI Emacs to write code and edit my macro files (which have to live on Windows). I highly recommend starting with this approach, since it gives you many of the niceties of a Linux environment, but you also benefit from the estimable built-in support Dragon/Dragonfly has for Windows, such as contexts, task switching, and window management. For task switching in particular, though, I don’t use the built-in Dragon commands. Instead, since I almost always run the same set of apps, I pin each of these to the taskbar and bind labels to “Windows key + number” shortcuts to quickly jump to any app. This gives me full control over the naming of the apps, and is generally less error-prone than using the built-in “switch to” command.
My work setup is necessarily more complicated, because the software I develop has to build and run on a special company-specific installation of Ubuntu. To do Linux development, I rely on NX, a remote desktop solution. The huge advantage of NX is that it supports “rootless” mode, which makes the remote Ubuntu windows look like native Windows applications, each with a named pinnable taskbar button. This works great with Dragonfly contexts and my task switching solution described earlier. This solution also works well if you want to install a Linux distro on Windows via virtualization. I’ve done this before with VirtualBox with good results. VirtualBox provides its own rootless mode, but when I tried it about a year ago it didn’t work nearly as well as using NX on my local machine. The trick to setting this up is to configure port forwarding within VirtualBox for the NX port, and then connect to localhost within Windows.
If you are installing NX yourself, the process is a bit complicated due to recent changes that have limited the free feature set in version 4 (the latest version). I recommend using an open source NX server, such as FreeNX, and version 3 of the official NX Client for Windows. You can also try open source NX clients, but make sure to choose one that supports rootless mode.
The final component of my setup is to use Putty for SSH port tunneling. As I will describe in another post, I run an HTTP server within Dragonfly, so that I can send contextual information to Dragon from other apps, such as Emacs. Thanks to reverse port tunneling, I can expose this HTTP server running on Windows to my Linux machine in a completely secure way. I also use standard port forwarding when I want to expose servers running on my Linux machine as if they were running on my Windows machine. There are plenty of guides available online that explain how to set this up.
The solution I’ve described is to use Windows as your host, and Linux as your guest. There are ways to swap those if you wish, although I think it is a bit of an uphill battle because Dragon is so closely integrated with Windows. One solution that is gaining popularity is Aenea. I haven’t tried it myself, but if you think I’m missing out, please let me know in the comments!