ReactOS Explorer

From ReactOS Wiki
Jump to: navigation, search

The page ReactOS Explorer is a short article on something that should have a lot more information written on it.
If you know anything else about it, you are STRONGLY encouraged to add the information in. If you are unsure of proper formatting or style, add it to the talk page or this page itself as you think best and others will help.


ReactOS Explorer is the default graphical shell that comes with ReactOS from version 0.2.0 forward. It is meant to be the equivalent of Windows Explorer on Windows operating systems.

Components

explorer.exe

Commit history (Source code can be found in: /reactos/base/shell/explorer)

filebrowser.exe

Commit history (Source code can be found in: /reactos/base/shell/filebrowser)

browseui.dll

Commit history (Source code can be found in: /reactos/dll/win32/browseui)

shell32.dll

Commit history (Source code can be found in: /reactos/dll/win32/shell32)

explorer-old.exe (Deprecated)

Commit history (source code can be found in rosapps/applications/explorer-old)

History

Before version 0.2, ReactOS would just boot to a command prompt. However, the devs expressed a desire to have a shell similar to what Windows provides. The problem was that since ReactOS was so new, shell32.dll and other such libraries essential for a usable explorer either did not exists or were mere stubs.

Martin Fuchs was the one that answered the call when ReactOS needed a graphical shell for its 0.2.0 release. The challenges he faced at the time were immense as ReactOS was considerably less mature. Martin was forced to effectively recreate much of the functionality that the OS was supposed to provide in the shell itself to create something usable, relying very little on shell32.dll. However, Martin succeeded and his shell has been with us up to about 2014.

Eventually however, the very methods by which Martin achieved a usable shell meant that that shell was becoming more limiting. ReactOS' development had advanced to the point where some of the missing holes were now filed while others existed that the project did not completely understand. Into this void came Thomas Bluemel who decided to to develop the new shell in Windows itself so that he could be certain of the segregation between what the shell should implement and what the OS should provide. Thomas actually made considerable progress and his shell was actually very usable on Windows but ReactOS was still missing a great deal.

Next came Andrew Hill who took on the task of refactoring the libraries that ReactOS needed. Many of these were derived from Wine but Wine had no real need for full shell support and so there was little chance of getting the needed development from them. Andrew thus broke off the relevant libraries and did a clean up, reorganizing them to better suit the needs of the ReactOS Project and adding a few bits and pieces as he could.

Giannis Adamopoulos was next in line and was in fact responsible for much of the research that produced the information needed to duplicate the data structures and interfaces used by the shell. He also continued the work of Andrew and Thomas, taking advantage of Andrew's reorganization and Thomas' existing solid codebase to begin the arduous process of getting explorer_new to run on ReactOS in addition to Windows.

Onto this scene came David Quintana and Huw Campbell. David dug into the shell libraries that provided functionality like menus and processed data and requests in the shell, the basic foundations that explorer_new needed to do anything on ReactOS. Huw on the other hand focused on user interactions with the shell, adding complex yet end-user-expected functionality like drag and drop. Together with Giannis the three have been responsible for beating into shape the explorer_new branch.

And of course quite a few other developers and community members have also lent their hands, from giving suggestions to tracking down bugs in other parts of ReactOS to performing tests of changes and providing data for analysis. The shell that we use today is ultimately a monument to all of the people that helped in its development.

Finally, needless to say, more work remains to be done. Everyone is invited to test out the latest ISOs to see what has changed, what has improved, and of course what might still be missing.

FAQ

Why doesn't ReactOS have a modern UI?

The target is Windows 2003 and ReactOS' UI is based upon that. There are two alternative theme choices and both are suited for desktop operation. Note that neither of them are tablet-based themes as you will find in current Windows. Only the naive but uninformed user believes the UI look-and-feel is in any way tied to the real functionality of the o/s. If you are comparing the default UI with that of current Windows you may not appreciate that ReactOS' UI is configurable and the interface being FOSS will be customisable in a way that current Windows is not. Eventually, it will be possible to configure ReactOS to look the way you desire with 3rd party tools and themes.

Are there any other themes I can use?

In the current stable version (and git revision) uxtheme has been implemented without deliberately missing vital functionality (unlike Windows in which themeing was intentionally crippled just before launch), meaning that uxtheme will not need to be patched. In addition to the default classic theme, ReactOS has a unique theme of its own called Lautus which gives ReactOS a unique and more modern look. More themes like Lunar (giving ReactOS an XP-like Luna look), Mizu and Modern and are on the way and are available in the latest git revision/build.

Of course, you can always use your own themes or any that you can find on the internet. There are alternative Shells out there and when ReactOS is sufficiently compatible it will be able to load them. At one point in 2011, an Italian dev known as Dax was developing an alternative explorer that seemed to be a decent replacement. It was written in C++ so if you want to help its development just download the sources and play with it.

About the shell: Why don't you add KDE4 to ReactOS?

  • KDE 4 does run on Windows. But that has nothing to do with ReactOS. We do not need nor do we want to have KDE4 within the source repository. Alternative shells fall under the "user-installable-but-not-needed-for-compatibility" category and thus will not be included.
  • We are alpha software and as with all Alpha-grade software, ReactOS cannot yet reliably run 3rd party software. So, no custom GUIs with KDE 4 or whatever else... Feel free to make your own if you want but the dev team have other, more important things to do. The ReactOS team are not going to release custom "distros" any time soon.
  • ReactOS Explorer is the default shell - this will not change anytime soon. And any change to its coding will not dramatically change the way it looks.
  • We appreciate your suggestions about icons, themes, fonts and all that jazz... (ALWAYS use the design forum for this sort of suggestion) but do appreciate that as the target is Windows server 2003, ReactOS will always have that basic theme as it is a requirment. The default classic "theme" is still actually there in Windows 10 and the classic mechanisms that provide the GUI, still form the basis of Windows themeing up to this day. In Windows 10 Microsoft are just hiding the classic theme. The upshot is that the default shell and classic theme is going to stay there for some time and trying to change it at this stage in the development is a no.

Which GUI can I use?

To answer this, one must understand how the GUI functions in ReactOS/Microsoft(R) Windows(R):

  • The DIB Engine (in the graphics subsystem), along with your video card's driver, provide rendering primitives, such as rectangles, lines and BitBlit operations.
  • Then there is the Win32 subsystem (CSRSS), which provides the windowing functionality, including console windows.
  • The USER32.DLL library provides slightly more complex windows, such as buttons and checkboxes.
  • The library COMCTL32 provides even more sophisticated windows, such as file open dialogs.
  • The shell (for instance Explorer) is an ordinary program, which is started upon bootup. It creates the desktop with its icons, and the start menu. It is this last component which can be changed out with another shell. There are many popular open source "Explorer replacements" like LiteStep and BlackBox available, which we intend to support.

Summary

So to finally clear everything up let's lay out all the facts:

  • ReactOS already has some included themes (Lautus, Lunar, Mizu, and Modern).
  • ReactOS is alpha grade software, 3rd party shells will run on Windows but just not yet.
  • ReactOS Explorer is the default shell for the time being and for the near future.

- We appreciate your suggestions about icons, themes, fonts and all that jazz... ReactOS has basic theme support, but the default "theme" is going to stay there for some time. (ALWAYS use the design forum for any suggestions.)

External links