It's not easy being stuck with Windows, but here are a few tips and tricks to make life a little more familiar.
The universe seems to have a big, cosmic-size sense of humor. I recently switched from a job position that allowed me to use Linux as my day-to-day operating system to a position that forces me to use Windows. Mind you, I've had to use different operating systems in the past, and even managed an entire fleet of OS X workstations, but I've never been stuck using Windows as my day-to-day computer before. If you worry that your faithful editor will turn to the dark side and start touting the benefits of a Microsoft operating system—yeah, not so much. Although I'll admit my computer has locked up only once in the past month (which would mean a serious hardware problem in Linux, but I digress), even a stable Windows system isn't Linux. So in this article, I try to make life a little bit easier for fellow Linux users who can see the light, but are stuck behind the Windows.
My first day on the job, after I learned to press Ctrl-Alt-Delete to log in (am I the only one who finds that weird?), I downloaded virtualization software. On Windows, there are quite a few options from which to choose, but it turns out that many of them are expensive. Thankfully, VirtualBox is free, and it runs quite nicely under Windows (Figure 1).
I've found my favorite way to use Linux in a virtual machine is to put it full screen on a secondary monitor. If you can use a second monitor at work, it is reminiscent of using Synergy to share the same mouse and keyboard on two computers. It's important to note that although VM technology has come a long way, the performance is not quite the same as a real machine, especially when it comes to video acceleration. For general office work, however, I've found the VM to be quite responsive and usable.
If you don't have a second monitor or can't dedicate a full screen to Linux, VirtualBox (and most other virtualization packages) offers a “seamless” mode. This is a nifty mode that puts the menu bar on your screen, but it allows for application windows to work alongside Windows applications. The downside of this, however, is that because they appear as native apps, it would seem that you could drag applications from screen to screen. This is not the case, however, so know your Linux apps will be stuck to a single screen. (This obviously is a moot point if you have only one screen!)
Because VirtualBox allows you to set up a virtual NAT network, installing one or more instances of Linux won't necessarily show up on the corporate network. Ideally, your Linux installs will be isolated behind your Windows box, and no one will be the wiser. It's important to see how your network settings are configured, however, because you might not be able to connect at all if your network is set to bridged mode.
Anytime someone talks about Linux users forced to use Windows, the discussion invariably turns to Cygwin—and rightly so. Cygwin is an interesting program that brings a Linux look and feel to Windows. The Cygwin setup utility will install a wide variety of familiar applications that are compiled to run natively under Windows (Figures 2 and 3).
Cygwin not only provides Windows-native versions of many Linux applications, it also includes a full X server. This X server runs alongside Windows, and it can run X applications installed locally or tunneled over SSH from a remote server. If it sounds like Cygwin is too good to be true, you're sorta right. Although it includes some amazing features and has a very familiar interface, to me it feels clunky to use. Before I get hate mail, let me be clear. Cygwin is amazing; it's just that I don't like the feel of the interface. It reminds me of using Linux back in the days when TWM was a viable window manager. I recommend giving Cygwin a try to see if it fills your needs. It is completely free, so there's no reason not to install it.
If you're like me, chances are you have a Linux machine running at home. It's also very likely you have broadband Internet and a dedicated “always on” connection. With a little bit of port forwarding on your router, accessing your computer at home is usually pretty painless. It turns out that a simple terminal window connected to a familiar Linux computer is all I need. When I add Xming (which unfortunately requires a donation to get the latest version), everything I need from home is available on my Windows machine. Here's my basic setup:
Putty: if you like the command line and are comfortable with tools like Irssi and BitlBee (Figure 4), Putty is an open-source SSH client for Windows that supports many features Linux users expect. That said, the configuration for Putty can be confusing. Basically, you need to set up all the options you want for a particular profile, then save the profile. The next time you load that profile, all the settings will return. I've had issues with trying to change settings on an existing profile, but I eventually managed to figure it out. Figures 5 and 6 show a couple important settings in Putty. It's possible to tunnel X traffic to your local Windows machine, and it's also easy to set up port tunneling for multiple ports.
Xming: this option, like many things in Windows, isn't really free. It's sort of free, in that you don't actually pay for a license, but if you want to get the program for Windows, you need to donate to the Xming Project. Basically, Xming is an X11 server that happily sits in the system tray and waits for an X program to access it. If you have X forwarding turned on with Putty (or use the -X flag while SSHing from Cygwin), starting an X Window System application is as easy as typing its name. Figure 7 shows a Putty window in which I've typed gnome-terminal. You can see GNOME Terminal started and appeared on the screen like a regular Windows application. I also put a tiny instance of Notepad in the screenshot to show that it really is Windows! Although the pay wall for Xming is frustrating, I find it's unobtrusive nature to be worth it.
Screen: although starting X applications is seamless, it's not something I do very often. Most of the time I just use the command line and the screen command. To be fair, “screen” has nothing to do with Windows, but it makes working from a Windows environment much easier. I simply run Irssi in a screen session, and IRC/IM is available anywhere, anytime (Figure 4). Kyle Rankin has done some great articles on screen in the past, so I won't elaborate much here. Simply put, screen allows applications to stay running even after you disconnect your SSH session. For IRC, this means never logging out, which is very convenient.
If you aren't thrilled with the idea of using SSH or setting up an X server on Windows, it's certainly possible to stick with Windows applications. Granted, that won't be the same as using Linux, but many open-source applications are available for Windows users. The most commonly used are Firefox and LibreOffice, but if you're committed to using as much open source as possible, there are many, many options. In fact, each month I highlight an open-source application available for non-Linux platforms in our UpFront section.
Along with running open-source programs specifically compiled for Windows, don't forget the Web-only applications available, regardless of your underlying operating system. Whether you want to use TweetDeck for sending Tweets or want a simple word processor like WriteBox (which I'm using right now), Web apps are getting more and more powerful every day. I find myself using Pixlr more often than The GIMP or Photoshop, regardless of what platform I'm using.
Do you have control over the computer you're using at work? Maybe suffering through Windows isn't something you need to do at all. If there's anything Linux users are used to, it's surviving in a Windows world. Perhaps you actually could run Linux on your computer, and no one ever has to know!
If you have to run only an application or two under Windows, it's possible Wine will work instead of booting into Windows. Sometimes the only reason we need to use Windows is because certain Web sites will function only under Internet Explorer. Using Wine, or CrossOver Office, running IE under Linux can be very possible.
If Wine won't run the applications you need, or if you need the Windows operating system for other specific purposes, what about running Windows inside a virtual environment? Oddly enough, Windows support as a guest operating system is usually better than Linux support, so even things like video acceleration might work. If you can do most of your work in Linux, but need that Windows environment every once in a while, a VM might be the perfect solution.
And, of course, if nothing else, Linux will dual-boot quite nicely with Windows. Even if you're stuck using Windows for every aspect of your job, perhaps you can reboot into Linux when you want a familiar environment. (This is especially useful if you have a company laptop you are allowed to take home.)
For many readers, installing programs, partitioning hard drives and running virtual environments is just not allowed. All I can offer you is the comfort that at home, you can run whatever you like. If you're stuck running Windows and can't even run the programs I talked about today, at least you can browse Linux Journal on your Windows machine. The Web version even works with Internet Explorer!