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?
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
clear, etc. on Windows. Alternatively, you could alias
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
fileare 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
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 (
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.
- 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.
- 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.
- 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-cygis 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
subversionpackage to download
wgetto use it. Run
apt-cyg -u COMMANDto 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 (
Tabcompletes file names and
Ctrl+Dcompletes 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.
- To unmount a removable drive from the command line, you can use
devcon listclass DiskDrivethen
devcon remove @usbstor\….
Power users and developers
- Process Explorer is a decent GUI process monitor (
topand 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
lsofequivalent. 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
.profileis 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
lddis 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.
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.
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...
If your Linux user likes to use KDE, then "KDE for Windows" would probably be a very good first step:
KDE for Windows
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."
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.
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.