C++/Qt multi-process shell: Host chrome + Client native-window embed + Protobuf IPC.
Phase-1 platform: Windows (form A); the macOS / Linux directories are placeholders.
- Multi-process UI shell: the Host owns tabs and lifecycle; Clients embed as native HWNDs (
SetParent) - Detachable tabs: tear-out / merge, MRU tab closing, empty-shell rules (pure rule modules with tests)
- Protobuf IPC: the authoritative IDL is
proto/shell/ipc/v1/ipc.proto widstays behind the embed seam: the tab model knows onlytabId; platform handles live inEmbedContainer/TabEmbedMap- One-click demo deploy:
windeployqtruns automatically on Windows, sobuild-shared/demos/mps_demo_host.exejust works
| Item | Notes |
|---|---|
| Qt | 6.8+ to build the demo / Host (protocol-only tests can skip Qt) |
| Toolchain | CMake, Ninja, Python 3; MSVC x64 (vcvars) on Windows |
| Deps | Protobuf v35.1 (FetchContent); the recommended AbseilPin 20260107.1 (-DMPS_ABSEIL_PIN_PREFIX=, detected in a sibling directory) |
| Optional | clang-format 20 for local format checks |
- Open an x64 Native Tools / vcvars environment.
- Point
QTDIRat a Qt 6.8+ prefix and add%QTDIR%\bintoPATH. - Recommended: install QThemeEngine (QTE) → QFluentRibbon (QFR) → MPS into a local prefix (shared libraries, build tree
build-shared):
:: QTDIR = Qt 6.8+ prefix; PREFIX = install root (optional: sibling prefix/ of the three repos)
set QTDIR=<Qt-6.8+-prefix>
set PREFIX=<install-prefix>
python scripts\install_stack.py --prefix %PREFIX%- Run it (no extra console window):
build-shared\demos\mps_demo_host.exe
This repo only (also defaults to build-shared; Windows runs deploy_demo.py / windeployqt):
python scripts\build_repo.pyProtocol / tab-strip tests only (Qt optional):
python scripts\build_repo.py --no-demos --testFiner build options: build.md; CI: ci.md.
cmake/ Qt / Protobuf helpers
proto/ shell.ipc.v1 IDL
src/ Host / Client / common / ipc_qt
demos/ mps_demo_host / mps_demo_client
tests/ protocol + tab-strip unit tests
scripts/ install_stack / build_repo / build_qt / deploy_demo
clients/python/ M4b Python Hello smoke
docs/zh|en/ Chinese + English docs
| Topic | English | 简体中文 |
|---|---|---|
| Product spec | multiprocess-shell-spec.md | multiprocess-shell-spec.md |
| Dev plan | dev-plan.md | dev-plan.md |
| Demo morphology | demo-morphology.md | demo-morphology.md |
| Demo acceptance | demo-acceptance.md | demo-acceptance.md |
| Demo IPC | demo-ipc.md | demo-ipc.md |
| IPC alternatives | ipc-alternatives.md | ipc-alternatives.md |
| Build | build.md | build.md |
| CI | ci.md | ci.md |
Long-form design notes are maintained in English and Simplified Chinese only; this README is the document kept in sync across all four languages.
Policy: when the long-form product sketch disagrees with .proto, the .proto and the demo IPC win.
| Capability | Status |
|---|---|
Framing + shell.ipc.v1 + mps_ipc_tests (M0) |
Done |
| Detachable tab-strip rule tests | Done |
| Windows demo (Home / Create Client / tear-out / embed) | Done (M5 closable) |
wid behind the embed seam |
Done |
| M4b Python Hello | Done |
| M6 heartbeat / unresponsive UI | Done |
| Multi-backend / optional M7 | See spec + dev-plan |
Released under the MIT License.