|
In 1999 I was into Linux, the fledgeling operating system (relatively speaking)
struggling to make a mark (I even made a
web page dedicated
to it.) Basically Linux is a reverse engineered
version (open sourced under the
GNU License) of UNIX and
alike in almost every way. It also has a version of the
graphical interface (GUI) of UNIX called X, the Linux version going by the name
"XFree86". Available for X are various "Window Managers" and "Desktop Environments"
which sit on top of the base provided by X. The most popular of these are KDE and
Enlightenment, both Desktop Environments.
Some what similar in concept but different in practice is what's known as a "shell". Up until recently this was
purely applied to Command Line Interfaces (CLI). For those not familiar with such
things here is a screen shot of the
"virtual machine"
which emulates MS-DOS included with Windows NT 4 (some thing similiar but less robust is included with
Windows 9x/Me). It's just a "prompt" consisting of a blinking
cursor waiting for you to type a command for its command processor. Under UNIX, and
therefore Linux, there are many powerful CLI shells being used for command processors, all of which
are more robust than NT's incarnation. The main difference is customization and how well different
commands can be grouped together into batches or scripts to create mini-programs
(although some are extensive enough to be programs in their own right). Basically all a CLI shell does
is interpret what a user types in as a command and translate that into something the central core of an
operating system, the kernel, can understand and cary out.
You may be asking yourself what all this nerdy UNIX stuff has to do with LiteStep and Windows. Well
these definitions brought up an interesting debate between myself and a a friend of mine who
happened to be an avid Linux and UNIX user since an early age. I tried to explain to him that
a MS Windows "shell" was in fact just that, a "shell" and not just "Window Manager" renamed. I
tried to explain that Window Managers obviously had their own set of operations, components,
APIs,
and graphical "widgets" that work differently from GUI
package to GUI package. That a MS Windows shell was simply an executable covering up Windows as an interface and
could be swapped with one simple line in an ini file or entry in the registry. Recently I decided to ask the e-mail discussion group
I subscribe to see if they had a take on this question. They came up with some good stuff I'm going to present here to once
and for all try and get to the bottom of what the difference is between a shell and a WM.
Here is my original inquiry into what the difference between a shell for MS Windows and a WM for X:
|
Had basic question(s):
Why do LS/windows users refer to LS etc. as "shells"?
Why aren't they "Window Mangers" ala X Windows? What
makes a LS a shell as opposed to a window manager? I
spent a lot of time trying to explain to an avid
linux-only user why a windows shell is in fact a
"shell" and had a lot of trouble. It's like the
difference between the Bash and Korn shells, right?
Just an outward appearance as opposed to different
workings like KDE and GNOME? Something like that? This
stuff drives me nuts.
|
I list some of the answers I got now, preserving anonymity in all quotations.
The famous [in the shell community] NeXTer came up with the following:
|
The difference is that a window manager does just that, manages windows. Most
of them provide other functionality as well, but without a WM in X, the windows
would just be immobile squares without borders.
Windows on the other hand has an internal window manager that takes care of all that,
so there are no external window managers like in X, though there are programs like
Window Blinds, Chroma and eFX that can override the default drawing and management
routines for windows. So, since LS and other shells don't have to bother with the
windows themselves, they can't be referred to as WM's, so instead they're called shells,
probably because that's the term MS uses for Explorer and also the old Program Manager.
|
This is one quite good theory and one of the most likely. Windows shells don't manage
components such as dialog boxes, command buttons, title bars or anything else, that's up
to the internals of the Windows system (those hundreds of dll files taking up your hard
drive do have a purpose...).
Ben Wilson came up with this theory which is just as much
about definitions as anything else:
|
From system.ini or HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon:
Shell=C:\Litestep\litestep.exe
"What shell are you running?" = "What does your shell="?
You would have to take the terminology up with Microsoft.
|
This could be real answer based on the old theory of the
simplest explanation being the most likely. And this term would be based on something
Microsoft came up with. David had the following to add to Ben's message above:
|
LS is a shell because all it does it change the appearance. It still
uses the internal Windows window manager to deal with Window creation,
etc. It's just a way to dress things up, and interact with the OS
environment in a different way. Hope that makes a bit of sense...
|
This seems to be the general consensus as far as I can tell. Of a more technical
and exact nature there is also the following from Freddie:
|
A shell sits between the user and the OS. The shell interprets
commands entered by the user and either passes them off to the
underlying OS (open program A) or executes them directly (echo the
path).
A window manager just handles how windows are displayed, how they react
to events, and things like that. It sits between the user and the
shell or between the user and the udnerlying graphical subsystem. In
Unix, there are 4 layers to the GUI: the window manager, X, the shell,
the OS. Five if you include the desktopenvironment between the window
manager and X.
What does LiteStep do? It sits between the user and the Windows OS,
interpreting command entered by the user, either passing them off to
the OS (open program A) or executing them itself (show the popup). It
has a few features from window managers, such as the ability to create
virtual desktops, but is not a pure window manager in that it has no
ability to affect how windows look.
WindowBlinds coupled with LiteStep would give you a shell and a window
manager combined.
The haziness comes with the fact that Windows tries to be a
full-fledged graphical environment. IOW,
MS blurs the line between a window manager and a shell, simply because their default shell is
graphical. This differs from the UNIX world where the default shell is
the CLI with a graphical subsystem running on top of that.
|
This explanation is about as clear and concise as one could ask for. A shell is simply a piece
of software that interprets input from the user and relays that to the operating system. This
has little to do with how well the operating system does its job or how good the operating system is.
|