Shelled is a modern desktop environment replacement for Windows 11.
Instead of skinning or theming the existing shell, Shelled replaces explorer.exe
with a native backbone plus a fully web-based desktop UI.
The goal is to give Windows the kind of separation you expect on Linux: a small, testable core that talks to the OS, and a flexible HTML/CSS/JS environment that defines everything the user sees and interacts with.
⚠️ Shelled is experimental and can completely replace the normal Windows desktop. If you are not comfortable recovering from a broken shell, use the safe test mode below and keep Explorer as your main shell.
If you just want to try Shelled and see what it looks like, start here. You do not need to edit the registry or replace Explorer for this.
- Windows 11
- .NET 8 Desktop Runtime (or SDK)
- WebView2 runtime (usually already installed on Windows 11)
You can either download a prebuilt package (from the GitHub Releases page, if available) or build it yourself using the instructions in the Development section further down.
This runs Shelled on top of your existing desktop:
- Explorer keeps running in the background.
- Windows Taskbar will still show up when switching windows.
- No registry keys are changed.
- You can always close Shelled and go back to normal Windows.
-
Build or download Shelled
If you are building from source:cd path\to\shelled dotnet build -c ReleaseAfter a successful build,
myshell-bootstrap.exewill usually be in
src\Shell.Bootstrap\bin\Release\net8.0-windows7.0\myshell-bootstrap.exe. -
Open PowerShell in the folder that contains
myshell-bootstrap.exe. -
Start Shelled in development mode (safe mode that never touches the shell):
$env:SHELL_DEV_MODE = "1" .\myshell-bootstrap.exe
-
A full-screen desktop will appear with Shelled’s taskbar, launcher and workspace strip. Explorer is still running underneath; you can:
- Use
Alt+Tabto switch back to other windows. - Close the
myshell-bootstrap.execonsole window to exit Shelled.
- Use
-
If something looks wrong or the UI glitches:
- Press
Ctrl+Shift+Escto open Task Manager. - Use File → Run new task and type
explorer.exeto bring the normal desktop to the front.
- Press
This mode is the safest way to see whether you like Shelled without changing how Windows starts.
This makes Shelled start instead of Explorer when you sign in. Only do this if you are comfortable with Windows recovery tools.
Strongly recommended before you begin:
- Create a separate local user account (for example
ShelledTest) and use that account for your first experiments. - Keep at least one administrator account that still uses the normal Windows desktop.
If you have not already:
cd path\to\shelled
dotnet build -c ReleaseAfter that, the bootstrap executable should be here (or similar):
src\Shell.Bootstrap\bin\Release\net8.0-windows7.0\myshell-bootstrap.exe
Make a note of the full absolute path to myshell-bootstrap.exe
(for example C:\Users\You\shelled\src\Shell.Bootstrap\bin\Release\net8.0-windows7.0\myshell-bootstrap.exe).
Shelled is designed to register itself as a per-user shell using the registry key:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
To point that value at myshell-bootstrap.exe for the currently logged-in
user:
-
Sign in as your test user (not your main daily account).
-
Open PowerShell as administrator.
-
Run the following, replacing the path with your actual bootstrap path:
$shellKey = 'HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon' $exePath = 'C:\full\path\to\myshell-bootstrap.exe' if (-not (Test-Path $shellKey)) { New-Item -Path $shellKey -Force | Out-Null } Set-ItemProperty -Path $shellKey -Name Shell -Value $exePath
-
Sign out and sign back in as the same user. Windows should now start Shelled instead of Explorer.
Note: In normal shell mode you should not set
SHELL_DEV_MODEorSHELL_TEST_MODE. Those modes are only for safe testing and deliberately prevent permanent shell changes.
If you want to go back to the default Windows desktop, you have several options:
-
Fast way (panic command)
- Press
Ctrl+Shift+Escto open Task Manager. - Use File → Run new task and browse to
myshell-bootstrap.exe. - Run it with the panic switch:
This tries to restore the Winlogon
myshell-bootstrap.exe --panic
Shellregistry value toexplorer.exeand then launches Explorer.
- Press
-
Manual way (registry)
- From Task Manager, run
regedit. - Go to
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon. - Set
Shelltoexplorer.exe(or delete the value). - Sign out and sign back in.
- From Task Manager, run
Conceptually Shelled has four layers, implemented by several projects:
-
Shell Core (
Shell.Core)
Pure domain logic with no Win32 calls. Tracks windows, workspaces, tray icons, hotkeys, and overall shell state. -
OS Adapters (
Shell.Adapters.Win32)
The only place that talks to the Windows API. Implements:IWindowSystem– window enumeration, visibility, focusIProcessLauncher– launching appsITrayHost– system tray hostingIHotkeyRegistry– global hotkeysISystemEventHandler– shutdown / logoff events
-
Core Hosting & Bootstrap (
Shell.Service,Shell.Bootstrap,Shell.Bootstrap.Infrastructure)
Long-running core service, shell entrypoint executable, and shell-registration utilities. -
UI Host & Web Desktop (
Shell.Bridge.WebView,Shell.UI.Web)
Borderless WebView2 host plus an HTML/CSS/JS desktop environment.
Everything above the adapters is cross-platform in principle; Windows 11 is the primary runtime because of WebView2 and the Win32 shell APIs.
Current top-level projects:
src/Shell.Core– core models, events, configuration, andShellCorestate machine.src/Shell.Adapters.Win32– Win32 implementations of shell interfaces.src/Shell.Service–ShellCoreServicehosting core + adapters + UI host.src/Shell.Bridge.WebView–ShellUiHostWebView2 app and JS bridge.src/Shell.Bootstrap–myshell-bootstrap.exeentrypoint used as the Winlogon shell.src/Shell.Bootstrap.Infrastructure– shared bootstrap utilities (for exampleShellRegistration).src/Shell.UI.Web– web desktop (HTML/CSS/JS) and its tests.tests/Shell.Tests– core + adapter + UI host unit/integration tests.tests/Shell.Bootstrap.Tests– bootstrap / shell registration tests.tests/Shell.Service.Tests– service lifecycle tests.
- Windows 11 (WebView2 and shell APIs).
- .NET 8 SDK.
- Node.js (for UI tests).
- Visual Studio 2022 or VS Code.
dotnet restore
dotnet build
dotnet testThe test suite includes:
- Core unit tests (pure domain logic).
- Adapter integration tests (Win32, but safe-mode aware).
- Service / bootstrap tests.
From src/Shell.UI.Web:
npm install
npm testThe UI tests include:
- State/store unit tests.
- DOM-level integration tests with a fake core.
- E2E-style tests using
node:test+jsdomfor:- Launcher behavior and app launch wiring.
- Workspace switching UI (
TEST-E2E-02). - Tray icon rendering and click routing (
TEST-E2E-03).
If you’re interested in running a modern, web-powered desktop environment on Windows 11, Shelled is the experimental playground to do it. Contributions, issues, and ideas are welcome.
