GNU/Windows?
A short write-up1 on how to get GNU and
Windows2 software to interoperate.
You should only do this if you find it absolutely essential.
Chances are that you do not need this at all. GNU software
runs very easily on the Linux, Hurd and *BSD platforms and
handles e-mail, web, editing, drawing and programming more
than adequately.
Modulo the above warning, some users may still want to read on for a
variety of reasons.
There are essentially three ways to get GNU and Windows(TM) software
to interoperate:
- The above solution. Just migrate to GNU/Linux. Your life will
definitely show improvement after about 6 months.
- Use Windows tools on GNU/Linux. This is the solution offered by
tools like Wine, CrossOver, Lindows and Xandros.
- Use GNU tools on Windows. This is the solution offered by Cygwin
and MinGW.
We will approach this problem from bottom-up since (3) is the most
likely choice of people who were not convinced by the above warning!
Contrary to what you may have heard, the GNU folks are not against you
using GNU software on a Windows platform. Use it, get familiar
with it, and find out (after a while) that you hardly use the so-called
tools that come bundled with your so-called operating system. Then you are ripe for the switch-over to solution (2) or even (1)
(being hopeful here!).
Secondly, it is not essential (though it is ideologically desirable)
to use Linux or *BSD or Hurd to run GNU software. GNU software was
designed with portability in mind. GNU software runs easily on
multiple platforms (except Apple but that is long story). In fact,
a typical user of a GNU/Linux system uses very little of the Linux
aspect and would probably not be able to tell the difference between
her system and GNU/*BSD.
It is thus appropriate that the solution outline below be called
GNU/Windows -- perhaps that is an oxymoron!
The two systems described below work within the user interface of
Windows or DOS. In addition, you can also get the look and feel of a
``terminal window'' (as in X) with a bash or tcsh command
prompt. Standard (for GNU systems) utilities like TEX, EMACS, GIMP,
Ghostscript, Xfig, Gnuplot and others are also available. Cut and
paste between these utilities and the Windows programmes is also
possible. You can even run web services via Apache and use Secure
Shell (OpenSSH). You can read/compose your mail using Mutt or Elm or
Pine. At the same time if you have essential need for Internet
Explorer or Outlook or Office then these come from your Windows
environment.
Cygwin is a POSIX environment developed by RedHat which allows users
to experience the glory of using GNU tools on a Windows
platform. At base it consists of cygwin1.dll which is an
emulation layer that emulates the GNU library calls on the windows
platform. In addition numerous pre-compiled tools from the GNU
software suite are made available at www.cygwin.com
along with a setup/configuration/upgrade tool.
Installation of a cygwin system from Windows is as easy as
connecting to the above site and clicking on various buttons. In other
words, one can safely say that the users wanting the easiest approach
to using GNU tools while not losing their favourite Windows
environment will find CygWin the most comfortable of all.
(For those who know their history of the recent past--recall that
Linux started off as a better way to port the GNU compilation suite to
Minix). The Minimalist(!) GNU system for Windows is at the base a
port of (that extremely basic) GNU compilation suite to Windows.
In combination with MSYS (or minimal system) which provides a POSIX
command line and programming environment, this provides a context in
which most of the standard configure, make and make
install installations of GNU software work.
Thus, to install a MinGW-base GNU/Windows system you need to download
and install the MinGW and MSYS packages from mingw.org.
This provides us with the environment to download and install
source-based packages from ftp.gnu.org and other sources.
Clearly, this solution is not for the faint-of-heart. Perhaps someone
will someday make a ``distribution'' like CygWin using MinGW. On the
other hand perhaps someone has to use Windows and is a bit
of a ``hacker''. Such a user will find this system ideal.
While some may have entitled this section ``Windows on Linux'' , we
will stick with calling the system GNU. It will become more and more
clear as we go along that it is the GNU-ish aspect of the underlying
system that is required to make things work rather than the Linux
aspect. In fact, most of the solution outlined below work quite well
with *BSD or Hurd and some can be made to work with Solaris or HP/UX
as well. (Now if only some one set up a GNU/Solaris or GNU/HPUX
site!).
The user is faced with the common X (or other) graphical interface in
its simpler (twm, fvwm) or more fancy (KDE or Gnome) form.
The Windows applications can be started in a ``sub''-window (which can
even be full screen). Thus (if you must) you can run Internet
Explorer, Office or Outlook right from within your X interface with no
need to re-boot. At the same time you are in a multi-user environment
with the protection from viruses and other nefarious bugs and crashes
that this can bring you. (Don't try any of these as root!). You can
even run Windows applications in ``sandbox'' environments if you are
particularly paranoid.
If you are willing to spend some money (of the order of $100-$200)
there are complete point-and-click installations of GNU (Linux) that
come with adequate tools to get current applications from
Windows working. These solutions use the CrossOver package developed
by CodeWeavers who also contribute to the Wine project. The relevant
urls are codeweavers.com, xandros.com and lindows.com. There is more than enough help and support (after all
you pay for it!) from these sites to install and run these
systems. Reports are generally positive.
If you have some old DOS stuff that you absolutely must access, this
is your easiest solution. You need to install only one package dosemu and then go through that more or less fully automated
install. After that you have DOS in a window panel or even at a
command line in an existing panel. You need to have a DOS boot floppy
or FreeDOS freedos.org in order to have even a ``base'' working
system.
The Wine Project at winehq.com is an ongoing project that aims
to implement the Windows Application Layer on top of X and Unix. In
some ways this is a reversal of what CygWin does. The problem is that
the the POSIX and X interfaces are very well documented so that
constructing exact replications of these interfaces is easier than
doing it the other way around. The Windows ABI changes with each
release of Windows. Further, some ``fast'' interfaces are only
released based on non-disclosure agreements which makes the job of the
programmers at the Wine Project rather hard. Still, this is an
excellent interface for running a large number of Windows applications
like Office (even the latest XP version!). Moreover, since Wine
implements the DLL based interfaces of Windows you do not actually
have to buy Windows to get various programmes working.
Since Windows is such an incredibly important operating system created
by a company with the best programmers in the world, they have no
option but to invent their own file formats and conventions that
differ from standards created elsewhere! In any case, there are always
problems of interoperation and most people want Windows only because
some of their friends and colleagues have it too and send them these
files which they can't access. Now it is not entirely clear why it
can't work the other way--why can't the Windows guys figure out ways
to convert their files before they send them? Perhaps the answer is
that GNU tends to empower folks and get them to think about other
people's problems as well--Windows users tend to have a more
monotonous view of a sanitised world!
Other than standards like PNG, JPEG and so on it is possible that your
Windows friends may send you files in WMF or BMP formats. The program
convert that is part of the ImageMagick suite is a general
purpose graphical conversion tool that will solve most of your
problems. It does depend on external tools like libwmf for some
formats like WMF. The only complaint that some may have with
Imagemagick is that it (occasionally) produces ``fat'' files. Reading
the documentation on proper command line switches may help in this
respect. In reverse, you may wish to use this so that you avoid
sending XPM to Windows users. To convert PostScript files to PDF using
ps2pdf (get a new version of ghostScript!) is also a good idea
as most Windows programs cannot handle these files.
Most of the audio utilities have converged onto a few formats and so
one is on somewhat safer territory here. However, you may find someone
sending you RIFF files or some other obscure format. The universal
program is sox that is like convert but for audio. Two
exceptions to this are MP3 and MIDI. For the former you may find
mpg321 a useful utility. The latter format is actually not an
audio format but is compressed musical notation somewhat like DVI for
TEX. In any case, there is extensive support for MIDI in GNU. The
most generic application for playing MIDI is timidity. Finally, there is ``Real Audio''. For this you
(currently) need the ``Real Player'' which may or may not work. (More
info on this is in the next subsection).
This is still an evolving medium so there are a number of variants
that have less or more support under GNU. The typical VCD is stored as
MPEG and can be played easily. The thumb rule here is to use xine. You can also find plugins for xine by following the
links at xine.sourceforge.net. The sole exception to this is
``Real Video''. This is a proprietary format and one needs to buy or
download the player. However, the company has announced that it plans
to release the codec details soons. If this happens, then sox
would be able to support conversion.
Numerous compression methods are in use. The utilities zip/unzip, lharc, zoo and unrar are typically
required to convert files that may be sent in archived format from
Windows environments. The program cabextract is also useful to
extract files from the CAB ``cabinet'' format.
Under this umbrella of ``text'' one includes all the remaining types
of files! The first thing to note is that actual text files
require conversion because of differences between the way lines are
terminated on DOS and *nix. The programs todos and fromdos
perform the neccessary conversion. The second thing to note the
useful-ness of strings (used as strings -a) which will
try to extract all possible textual data from any file. This may even
extract data which the sender did not know she was sending!
The typical file sent by most Windows users to others is a DOC file.
Unfortunately, the details about this format are undisclosed and also
undergo periodic review causing most conversion utilities to choke. In
spite of this the wv library and suite is very useful as it does
90% of the job in 90% of the cases. For the remaining cases you may
have little option but to use abiword or the much larger openoffice or staroffice.
Another typical format used by Windows is RTF. Unlike DOC the details
of this format are publicly disclosed and so conversion is
feasible. The typical utility is unrtf.
Finally, some folks use PowerPoint to develop presentations and then
mail these presentations to folks! The program ppthtml is able to
convert the PowerPoint to HTML. After this a Web browser like mozilla should be able to view the file. Note however that there
may be embedded graphics which are in WMF files and embedded audio and
so on. These would have to be converted on-the-fly by making suitable
``Helper'' entries in the ``Preferences'' menu for mozilla.
Footnotes
- ... write-up1
- The author is grateful to Rahul Sinha for
numerous pointers regarding Windows systems.
- ...
Windows2
- all trademarks used in this write-up are owned by
their respective owners!
Kapil Hari Paranjape
2002-11-07