52

How do you configure a Windows (preferably latest version) machine for a Linux power user, so that s/he can get most out of it?

8
  • 6
    One Word - LiveCD .
    – Lincity
    Commented May 12, 2011 at 8:35
  • 22
    I'm surprised no one mentioned this: unhide file extensions. Commented May 12, 2011 at 12:50
  • 4
    this really depends on what kind of linux user - is it a cli junkie or someone who uses GUIs? what WM? etc etc. The learning curve between KDE and windows is PRETTY shallow IMO.
    – Journeyman Geek
    Commented May 12, 2011 at 12:59
  • 4
    Why is this person using Windows? What tasks will they be performing on this computer?
    – Steve S
    Commented May 12, 2011 at 21:09
  • 1
    I was in this same situation once. Here is the Windows cheatsheet for Linux users that I wrote to help cope.
    – dotancohen
    Commented Feb 22, 2015 at 13:31

8 Answers 8

38

I'm a linux sysadmin, but I personally use Windows. This leads to some annoyances when switching back and forth, since I'm used to both platforms. Here's some things I do:

  • Use batch scripts to provide ls, clear, etc. on Windows. Alternatively, you could alias dir and cls, for example, in Bash, do it whichever way you want.
  • XMouse for Windows will give you the X-style mouse action you're used to in the Windows environment.
  • Xming is a native Windows x-server that will let you SSH forward applications from Linux boxen.
  • Windows Powershell isn't a duplication of Bash, but a whole new shell designed by Microsoft. Deep down inside it actually accepts and returns .NET objects, rather than text, which is cool. Powershell is installed by default in Windows 7, and Microsoft has a good quickstart guide. PowerShell does a lot to alleviate the common Linux user complaint that Windows has a useless command interpreter.
  • Remember that Windows is fine with forward slash (/) in file paths, even though it uses the backslash (\) natively. So your Linux user only needs to get used to starting paths with a drive letter, they don't need to worry too much about slash direction.
  • Also remember that Windows is, as a rule, NOT case-sensitive. This might take a bit of getting used to, because File and file are the same thing here.
  • Read up on NTFS access control lists, they're a lot more powerful (and thus complicated) than Unix permissions. Here's a quick guide.
  • Download the whole PuTTY suite and put it somewher in your path (remember that you can change the path by right clicking Computer in the start menu, clicking Advanced in the left bar, clicking Environment Variables, and then choosing PATH from either list - there's both a global path and a user-specific path, they're concatenated together). This set of tools will give you pscp and psftp, Windows equivalents of the Unix commands without the P. PuTTY itself is a fantastic SSH client, and PuTTYGen will make your RSA keys for working with Linux boxes.
  • Download and install GnuWin32, which will give you native Windows versions of many of the familiar Unix commands (tar, grep, sed, etc).
16
  • 3
    For PuTTY: set the default mouse action to "xterm (middle pastes, right extends)". That is the single most annoying thing for me. Commented May 12, 2011 at 9:46
  • 2
    I agree with the content of the answer, though my choice of software may be different: 1) Install cygwin and use bash as your native console. 2) Use KatMouse - nobody uses "active window under mouse" anymore, but scrolling on inactive views is a must. 4) Powershell sucks and does not appeal to unixers. 5) see 1.
    – Guss
    Commented May 12, 2011 at 11:38
  • Also, regarding NTFS ACLs - this is unfair: Linux has ACLs and like UNIX permissions are more powerful then Windows permissions, ACLs on extX and other modern Linux file systems are more powerful then NTFS ACLs.
    – Guss
    Commented May 12, 2011 at 11:42
  • 2
    @Guss, Powershell is awesome! It's the only shell that I've worked with that isn't crippled by decades of back-compat turning it into a baffling monstrosity. That said, I agree that it doesn't do much for unixers who are just looking for a bash clone. Commented May 12, 2011 at 13:00
  • 1
    You don't need batch scripts for aliases, even in Command Prompt. doskey works perfectly well.
    – Hello71
    Commented May 25, 2011 at 2:45
30

In a VM, of course.

Yes, I know painfully well that's not always possible. So I'll answer based on my personal experience (long-time unix user, uses the command line a lot, recently forced to use Windows XP by company policy). In particular, I needed a truckload of third-party add-ons to be productive. All software mentioned in this answer is free as in gratis.

GUI features

  • From the GUI perspective, the single most important thing was multiple desktops. This was really a life-changer: it's the only way I've found to decently organize windows under Windows. I settled on VirtuaWin, which is reasonably functional. I briefly tried the Microsoft offering, MSVDM, but the words to describe it would get this answer censored. (Maybe there's something better for Vista and up.) Other alternatives include Vern and Virtual Dimension, both a little buggier and slower than VirtuaWin.
  • KatMouse makes the mouse wheel scroll wherever the cursor is, rather than whatever has the keyboard focus. It doesn't fully work in Office, but it does make the wheel usable. To be able to use the mouse button for its intended purpose (i.e. pasting), turn off the “push button” feature in the KatMouse properties (“Wheel Button” tab).
  • Some applications can be configured to paste on a middle click. For others see "Select to Copy and Middle Click to Paste" in Windows.
  • WinCompose emulates a Compose key, if you need to type characters that aren't on your keyboard.
  • HandyFind brings incremental search to many applications, including MS Office.
  • You'll probably want to tune many settings in various corners of the Control Panel, but which ones depends strongly on personal preferences.
  • To automate simple GUI tasks, use AutoHotkey. Unfortunately, the macro language makes Visual Basic looks good.

Applications

  • Of course, you'll want Firefox and Chrome.
  • Windows inexplicably doesn't come with a PDF reader. I haven't found one I really liked, but settled on Foxit Reader, which is ok. Be sure to deselect the bundled browser malware (toolbar, etc.) on installation. Sumatra PDF is an alternative.
  • In MS Office 2007, the Search Commands plugin is helpful, when you have an idea of how a command might be called but no clue what the icon is supposed to look like.
  • For Emacs users: get EmacsW32 binaries. EmacsW32 comes with a small set of auxiliary utilities (especially diff and grep) from GNUWin32 (see below), but Cygwin is a better complement, e.g. it includes a shell that understands M-x grep foo *.[hc] and version control software.
    • If you want Emacs 24 (which has improved Windows support), since EmacsW32 hasn't been updated since 2010-10-19, you may prefer to get the barebones official weekly builds or the emacs-for-windows build.
    • For Tramp, I use the plinkx method, using the plink command from PuTTY.

Command line

  • Cygwin is the only remotely sizable suite of ports of unix tools, both command-line and GUI. I actually don't use the X server, but use shells and terminal applications extensively. It's slow and sometimes cranky, but nothing else delivers.
    • apt-cyg is a command-line package manager for Cygwin. It's easier to use than the GUI of Cygwin's setup.exe. You must first install the subversion package to download apt-cyg, and bzip2, gawk, tar and wget to use it. Run apt-cyg -u COMMAND to avoid re-downloading the package index.
  • There are other suites of unix shell tools such as GNUWin32 (installer), MSys, UWin. They're mainly intended to run unix shell scripts, get Cygwin for interactive use.
  • If you aren't going to use the X server, you need a decent terminal emulator (Windows doesn't come with one). The main contenders are Cygwin's native RXVT, MinTTY and PuTTYcyg. I have a preference for MinTTY (and found the author to be very responsive to issues), but none of the three are bad. RXVT doesn't support Unicode.
  • The Cygwin terminals can't run most Windows console applications. Use Console2 for that.
  • For those times when you have to use CMD (the default command-line shell under Windows), make sure to turn on completion with these registry settings (Tab completes file names and Ctrl+D completes directory names, hey, it's a start):

    [HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
    "CompletionChar"=dword:00000009
    "PathCompletionChar"=dword:00000004
    
  • If you need to log in to other machines with SSH, either get PuTTY, or Cygwin's SSH.
    • PuTTY comes with its own ssh-agent-like program, Pageant; Charade lets Cygwin's ssh access keys stored in Pageant.
    • To run X applications in a separate window, you can use Xming.
  • To unmount a removable drive from the command line, you can use devcon: devcon listclass DiskDrive then devcon remove @usbstor\….

Power users and developers

  • Process Explorer is a decent GUI process monitor (top and a little more).
  • Other utilities in the Sysinternals suite can be useful, particularly if you don't use Cygwin all the time. Handle is an lsof equivalent. Junction gives access to a form of symbolic links (they exist under the hood, and Windows applications see transparently, but as of XP, you need a third-party utility to create them).
  • The equivalent of .profile is a combination of the Control Panel “System” dialog, “Advanced” tab, “Environment variables” dialog; and various ways of launching programs at boot or login time.
  • StraceNT is a Windows equivalent of truss/strace/….
  • Windows has a nasty habit of using mandatory locks. Unlocker helps you fight back. Be sure to deselect the bundled browser malware (toolbar, etc.) on installation.
  • The closest I could find to ldd is Dependency Walker (doesn't nearly have the straight-to-the-point convenience of ldd, but shows a lot of information).
  • For XP users who need to deal with permissions: for much of what exists under the hood, there's no official utility before Vista. So get SetACL.
3
  • Giles, they wouldn't let you run Linux in a virtual machine? Commented Feb 6, 2012 at 21:05
  • @FaheemMitha A VM doesn't help when you need to interact with Windows. It also requires a sufficiently beefy machine and host OS (the only Windows editions we can have can't cope with more than ~3GB RAM). Commented Feb 6, 2012 at 21:10
  • It's nice to notice that, as of Windows 8, Windows comes with native PDF readers.
    – Pablo
    Commented Dec 25, 2015 at 6:55
10

Fun question.

  1. Cygwin. Allows native windows plus familiar unixyness.

  2. SSH client (e.g. PuTTY)

  3. X server software (maybe xming?)

  4. Browsers other than IE. They are probably familiar with Firefox, and posiibly Chrome.

  5. A Linux VM might be good.

1
  • cygwin is mandatory, and install Virtualbox so that they can install their favourite Linux distro and use that when things are too complex in Windows. VirtualBox supports shared folder between the guest Linux and the host Windows OS, so moving files back and forth is easy. As for Windows 7, configure it with a separate Administrator account so that everytime you do a privileged operation such as installing software, you have to give the username and password. That will help this person learn that Windows is becoming more like UNIX. Commented May 15, 2011 at 7:35
6

Let your users answer that question! Since they are power users, they are going to know what they want, and will be happier with their environment not being spoon fed to them. If letting them run linux is an option, they might take it. If running a VM suites their fancy, let them. If they just live in a shell, perhaps cygwin will keep them happy. Most likely, they will want to change the environment in very specific ways. Let them name the ways.

Unix users can't even agree on what a user environment should look like on their own platform, which is why we have a half dozen desktop environments and a hundred window managers and a dozen shells and more distros than you can shake a stick at. Diversity is good. But you won't make a tmux/zsh user happy by giving them a KDE look-alike makeover any more than you would make a KDE user happy by giving them cygwin.

6

I'm happy to have known this:

MobaXterm is an enhanced terminal with an X server and a set of Unix commands (GNU/Cygwin) packaged in a single portable exe file.

bash, coreutils, ssh, (g)vim, emacs, screen, mc, ncurses, gcc, mingw, mplayer...

5

If your Linux user likes to use KDE, then "KDE for Windows" would probably be a very good first step:

  KDE for Windows
  http://windows.kde.org/

Here's some relevant information from that web site:

  • "The KDE on Windows Initiative is an ongoing project to port the KDE applications to MS Windows. Currently supported versions of Windows are XP, Vista, and 7."
1
  • 2
    (Please note: When I answered this question, the word "power" was not included. For a "Linux power user," installing Linux would probably be a better solution, and then virtualize Windows to support applications that aren't available for Linux and won't run under WINE.) Commented May 12, 2011 at 4:48
3

perhaps I am pessimistic, and the message might be prone to be declared as off-topic or even annoying, but I believe that an honest answer is that you simply cannot do this. I totally want to avoid making people angry and clicking on the "delete"/ -1 button on the left of this post. So here is my reasoning:

Let me point you to a text I read many years before, http://theody.net/elements.html which covers the philosophical part and spolsky is always popular for people who use stackoverflow, so: http://www.joelonsoftware.com/articles/Biculturalism.html

My reasoning and seeing from myself (using linux progresively more and more since late 90s) is that after being accustomed to working with linux/unix, sitting in front of a windows box, brought me feelings of... pain.

One example: whenever I have a new ubuntu/debian box to work with, I usually do in a terminal:

sudo apt-get install app_that_i_want_to_have_1
sudo apt-get install app_that_i_want_to_have_2
sudo apt-get install app_that_i_want_to_have_3
etc

I've written them down, wrote them down and since then I just copy paste what is needed. In windows I always have to download a number of "install.exe" and a couple of i_dont_install.exe (eg. notepad2, putty) and that's contrary to what I'm used to.

People have been arguing for this since the 90s, so it's a bit pointless to proceed. Based on previous answers: Is it possible for the linux power user to be provided with a windows VM which will sit... on top of the linux one, as hosted and the other way around? Why does the user need to use windows? For a specific set of applications (like a custom CRM), security Single sign on software, .net development?

If it not on of the last two, how about a remote desktop to a machine that has those applications installed?

Another hybrid solution is an OS/X with parallels, again you have a full unix box on which windows applications integrate almost natively.

3
  • Just to mention, you can use ninite.com for a custom installer for the apps you want.
    – Gulshan
    Commented May 13, 2011 at 3:20
  • @Gulshan: It has more than the software I usually want, which is great. I've heard of it in the past, thanks a lot! My intention was to show the differences in the mentality with an example, not to state capability. I know that there are installers for windows and I have some custom setups on linux (eg. eclipse). Commented May 13, 2011 at 8:17
  • See also chocolatey and Windows 10 superuser.com/questions/957712/…
    – Jonathan
    Commented Aug 15, 2015 at 16:31
1

For a twist, try out CoLinux which allows you to run Linux as a cooperative process in Windows (and other OSes). To do this, it requires a device driver to run at Ring 0, so you may want to try on a test machine first.

Not the answer you're looking for? Browse other questions tagged .