LiteStep Log
Home PROGRESS Links And others...

Feedback:
Kache

Link to me:

My Current Desktop:
Fun-with-labels See other
Screen Shots

Seti-Step
LiteStep Seti Group
LiteStep Seti Group

"Shell if I Know"

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.

Money for New York City:
Red Cross NYC Firefighters
Salvation Army United Way

Section Links:
Article 1 Screenshots

Essential LS Links:
WeStep
LSDistro
LiteStep.net
La Haine
ShellFront

Buttons:


Gimp for
Windows


Reproduction of this article will be granted provided the following:

  1. You let me know, give me the URL and I'll probably add you to my links page.
  2. Provide full credit to myself (as "Kache") and provide a link back to LiteStep Log (use http://come.to/litesteplog if it's more convenient) There's also a handy button on the bottom of the home page.
  3. You recieve written permission from me personally in the form of e-mail, postcard, carrier pigeon, or whatever.